36
Linguagem de Definição de Dados

Linguagem de Definição de Dados. Linguagem de Manipulação de Dados 2 SQL - DDL (Data Definition Language) Comandos essenciais: Create, Alter e Drop

Embed Size (px)

Citation preview

Page 1: Linguagem de Definição de Dados. Linguagem de Manipulação de Dados 2 SQL - DDL (Data Definition Language)  Comandos essenciais: Create, Alter e Drop

Linguagem deDefinição de Dados

Page 2: Linguagem de Definição de Dados. Linguagem de Manipulação de Dados 2 SQL - DDL (Data Definition Language)  Comandos essenciais: Create, Alter e Drop

Linguagem de Manipulação de Dados 2

SQL - DDL (Data Definition Language) Comandos essenciais: Create, Alter e Drop Criação e eliminação de bases de dados Criação, alteração e eliminação de tabelas Criação e eliminação de índices

SQL - DML (Data Manipulation Language) Comando Insert Comando Update Comando Delete

Transações Privilégios e controlo de acessos

Conteúdos

Page 3: Linguagem de Definição de Dados. Linguagem de Manipulação de Dados 2 SQL - DDL (Data Definition Language)  Comandos essenciais: Create, Alter e Drop

A linguagem SQL disponibiliza um conjunto de comandos para criação (CREATE), alteração (ALTER) e eliminação (DROP) de tabelas e outras estruturas.

Estes comandos fazem parte da sublinguagem denominada DDL – Linguagem de Definição de Dados.

Linguagem de Manipulação de Dados 3

SQL – DDL(Data Definition Language)

Page 4: Linguagem de Definição de Dados. Linguagem de Manipulação de Dados 2 SQL - DDL (Data Definition Language)  Comandos essenciais: Create, Alter e Drop

A sintaxe do comando de criação de bases de dados é: CREATE DATABASE Nome_da_Base_de_Dados

A sintaxe do comando de eliminação de bases de dados é: DROP DATABASE Nome_da_Base_de_Dados

Linguagem de Manipulação de Dados 4

Manipulação de Bases de Dados

Page 5: Linguagem de Definição de Dados. Linguagem de Manipulação de Dados 2 SQL - DDL (Data Definition Language)  Comandos essenciais: Create, Alter e Drop

Manipulação de Tabelas

A criação de tabelas é realizada recorrendo ao comando CREATE TABLE.

Para alterar a estrutura de uma tabela recorre-se a comando ALTER TABLE.

A eliminação de uma tabela é possível através do comando DROP TABLE. Sintaxe: DROP TABLE Nome_da_Tabela

Linguagem de Manipulação de Dados 5

Page 6: Linguagem de Definição de Dados. Linguagem de Manipulação de Dados 2 SQL - DDL (Data Definition Language)  Comandos essenciais: Create, Alter e Drop

Sintaxe:

CREATE TABLE Nome_da_Tabela(NomeCampo1 Tipo,NomeCampo2 Tipo)

Tipos de Dados Strings: text, text(n), varchar, varchar(n), char(n) Inteiros: int, integer, smallint, numeric(n) Reais: float, numeric, real Data/hora: date, datetime Moeda: money

Linguagem de Manipulação de Dados 6

CREATE TABLE

Page 7: Linguagem de Definição de Dados. Linguagem de Manipulação de Dados 2 SQL - DDL (Data Definition Language)  Comandos essenciais: Create, Alter e Drop

Crie uma tabela para armazenar códigos postais: um número inteiro e uma string com 50 caracteres.

CREATE TABLE CodigosPostais(Codigo int,Localidade varchar(50))

Linguagem de Manipulação de Dados 7

CREATE TABLE - Exemplo

Page 8: Linguagem de Definição de Dados. Linguagem de Manipulação de Dados 2 SQL - DDL (Data Definition Language)  Comandos essenciais: Create, Alter e Drop

Na criação de uma tabela é ainda possível: Especificar se uma coluna pode ou não admitir

valores nulos (vazios). Para isso utilizam-se as cláusulas NULL ou NOT NULL.

Especificar qual o valor por defeito de uma coluna através da cláusula DEFAULT.

Nota: O valor por defeito de uma coluna é aplicado/utilizado quando não é introduzido um valor para essa coluna, na criação ou atualização de registos.

Linguagem de Manipulação de Dados 8

CREATE TABLE

Page 9: Linguagem de Definição de Dados. Linguagem de Manipulação de Dados 2 SQL - DDL (Data Definition Language)  Comandos essenciais: Create, Alter e Drop

Crie uma tabela para armazenar códigos postais: um número inteiro e uma string com 50 caracteres. O código não pode ser vazio e a localidade por defeito deve assumir o valor ‘Lisboa’.

CREATE TABLE CodigosPostais(Codigo int NOT NULL,Localidade varchar(50) DEFAULT ‘Lisboa’)

Linguagem de Manipulação de Dados 9

CREATE TABLE - Exemplo

Page 10: Linguagem de Definição de Dados. Linguagem de Manipulação de Dados 2 SQL - DDL (Data Definition Language)  Comandos essenciais: Create, Alter e Drop

Um dos requisitos do modelo relacional é que cada tabela deve possuir uma chave primária.

Deste modo, para a definição da chave primária de uma tabela utiliza-se a cláusula PRIMARY KEY.

Para a definição de chaves estrangeiras utilizam-se as cláusulas: REFERENCESOU

FOREING KEY (…) REFERENCES … (…)

Linguagem de Manipulação de Dados 10

CREATE TABLE - Chaves

Page 11: Linguagem de Definição de Dados. Linguagem de Manipulação de Dados 2 SQL - DDL (Data Definition Language)  Comandos essenciais: Create, Alter e Drop

Crie uma tabela para armazenar códigos postais: um número inteiro e uma string com 50 caracteres. Defina o código como chave primária.

CREATE TABLE CodigosPostais(Codigo int NOT NULL,Localidade varchar(50) NOT NULL,PRIMARY KEY(Codigo))

Linguagem de Manipulação de Dados 11

CREATE TABLE - Exemplo

Page 12: Linguagem de Definição de Dados. Linguagem de Manipulação de Dados 2 SQL - DDL (Data Definition Language)  Comandos essenciais: Create, Alter e Drop

Crie uma tabela CodigosPostais para armazenar o código e a localidade. Em seguida crie uma tabela Pessoa para armazenar um código, nome e o código referente ao código postal.

Linguagem de Manipulação de Dados 12

CREATE TABLE CodigosPostais(CodPostal int,Localidade varchar(50),PRIMARY KEY(CodPostal))

CREATE TABLE Pessoa(CodPessoa int,Nome varchar(100),CPostal int REFERENCES CodigosPostais(CodPostal),PRIMARY KEY(CodPessoa))

CREATE TABLE - Exemplo

Page 13: Linguagem de Definição de Dados. Linguagem de Manipulação de Dados 2 SQL - DDL (Data Definition Language)  Comandos essenciais: Create, Alter e Drop

Exemplo da outra forma de definição de chaves estrangeiras.

Linguagem de Manipulação de Dados 13

CREATE TABLE CodigosPostais(CodPostal int,Localidade varchar(50),PRIMARY KEY(CodPostal))

CREATE TABLE Pessoa(CodPessoa int,Nome varchar(100),CPostal int,FOREIGN KEY(CPostal) REFERENCES CodigosPostais(CodPostal), PRIMARY KEY(CodPessoa))

CREATE TABLE – Exemplo

Page 14: Linguagem de Definição de Dados. Linguagem de Manipulação de Dados 2 SQL - DDL (Data Definition Language)  Comandos essenciais: Create, Alter e Drop

Comando utilizado para efectuar alterações na estrutura de uma tabela. Seguem-se alguns exemplos.

Adição de um campo a uma tabela: ALTER TABLE NomeTabela ADD NomeCampo Tipo

Remoção de um campo a uma tabela: ALTER TABLE NomeTabela DROP NomeCampo

Alteração do tipo de dados de um campo: ALTER TABLE NomeTabela MODIFY NomeCampo Tipo

Linguagem de Manipulação de Dados 14

ALTER TABLE

Page 15: Linguagem de Definição de Dados. Linguagem de Manipulação de Dados 2 SQL - DDL (Data Definition Language)  Comandos essenciais: Create, Alter e Drop

DROP TABLE

Comando responsável pela eliminação de uma tabela.

A sintaxe do comando é:

DROP TABLE Nome_da_Tabela

Nota: O comando apaga a tabela especificada e todos os seus dados. Depois de executado o comando, não existe qualquer forma de “desfazer” esta operação.

Linguagem de Manipulação de Dados 15

Page 16: Linguagem de Definição de Dados. Linguagem de Manipulação de Dados 2 SQL - DDL (Data Definition Language)  Comandos essenciais: Create, Alter e Drop

Permitem uma consulta mais rápida sobre os campos definidos como índice.

A sintaxe do comando de criação de índices é:

CREATE [UNIQUE] INDEX Nome_do_IndiceON Nome_da_Tabela (Coluna1 [ASC|DESC], ..)

Exemplo – Criar um índice sobre a coluna Localidade da tabela CodigosPostais.CREATE INDEX Ind_Local ON CodigosPostais (Localidade)

Linguagem de Manipulação de Dados 16

Manipulação de Índices

Page 17: Linguagem de Definição de Dados. Linguagem de Manipulação de Dados 2 SQL - DDL (Data Definition Language)  Comandos essenciais: Create, Alter e Drop

Manipulação de Índices

Para eliminar um índice utiliza-se o comando DROP INDEX.

A sintaxe do comando é: DROP INDEX Nome_do_Indice ON Nome_Tabela

Exemplo – Eliminação do índice do slide anterior DROP INDEX Ind_Local ON CodigosPostais

Linguagem de Manipulação de Dados 17

Page 18: Linguagem de Definição de Dados. Linguagem de Manipulação de Dados 2 SQL - DDL (Data Definition Language)  Comandos essenciais: Create, Alter e Drop

A linguagem SQL responsável pela manipulação dos dados existentes numa base de dados (nomeadamente em tabelas).

A manipulação dos dados de uma tabela é possível através dos comandos: INSERT – Criação de novos registo. UPDATE – atualização de registos existentes. DELETE – Eliminação de registos.

Linguagem de Manipulação de Dados18

SQL – DML(Data Manipulation Language)

Page 19: Linguagem de Definição de Dados. Linguagem de Manipulação de Dados 2 SQL - DDL (Data Definition Language)  Comandos essenciais: Create, Alter e Drop

O comando INSERT permite realizar a introdução de novos registos numa tabela da base de dados.

A sintaxe é: INSERT INTO Nome_da_Tabela(Campo1,…,CampoN)VALUES (Valor1, … , ValorN)

OU INSERT INTO Nome_da_TabelaVALUES (Valor1, … , ValorN)

Linguagem de Manipulação de Dados 19

Comando INSERT

Page 20: Linguagem de Definição de Dados. Linguagem de Manipulação de Dados 2 SQL - DDL (Data Definition Language)  Comandos essenciais: Create, Alter e Drop

Assumindo a tabela ‘CodigosPostais’ adicione um novo registo com os valores 3720 e Oliveira de Azeméis.

INSERT INTO CodigosPostais(CodPostal,Localidade)VALUES (3720, ‘Oliveira de Azeméis’)

OUINSERT INTO CodigosPostais

VALUES (3720, ‘Oliveira de Azeméis’)

NOTA: o formato abreviado obriga a fazer a introdução de valores para todas as colunas da tabela.

Linguagem de Manipulação de Dados 20

Comando INSERT - Exemplo

Page 21: Linguagem de Definição de Dados. Linguagem de Manipulação de Dados 2 SQL - DDL (Data Definition Language)  Comandos essenciais: Create, Alter e Drop

O comando UPDATE permite atualizar valores já existentes nos campos de uma tabela.

A sintaxe é: UPDATE Nome_da_Tabela SET

Campo1 = Valor1,… ,CampoN = ValorN,

[WHERE Condição] A cláusula WHERE permite restringir quais os

registos a serem processados. Se omitida todos os registos serão atualizados.

Linguagem de Manipulação de Dados 21

Comando UPDATE

Page 22: Linguagem de Definição de Dados. Linguagem de Manipulação de Dados 2 SQL - DDL (Data Definition Language)  Comandos essenciais: Create, Alter e Drop

Assumindo a tabela ‘Pessoa’ atualize o nome do registo com o código 10 para ‘João’.

UPDATE Pessoa SETNome = ‘João’

WHERE CodPessoa = 10

atualize o código postal de todos os registos para 3720.

UPDATE Pessoa SETCpostal = 3720

Linguagem de Manipulação de Dados 22

Comando UPDATE - Exemplo

Page 23: Linguagem de Definição de Dados. Linguagem de Manipulação de Dados 2 SQL - DDL (Data Definition Language)  Comandos essenciais: Create, Alter e Drop

Comando DELETE

O comando DELETE permite eliminar registos de uma tabela.

A sintaxe do comando é: DELETE FROM Nome_da_Tabela[WHERE Condição]

A cláusula WHERE permite restringir os registos a serem eliminados. Se omitida todos os registos da tabela são eliminados.

Linguagem de Manipulação de Dados 23

Page 24: Linguagem de Definição de Dados. Linguagem de Manipulação de Dados 2 SQL - DDL (Data Definition Language)  Comandos essenciais: Create, Alter e Drop

Assumindo a tabela ‘Pessoa’ elimine o registo com o código 90.

DELETE FROM Pessoa WHERE CodPessoa = 90 Apague todos os registos da tabela.DELETE FROM Pessoa Apague todos os registos da tabela com o código

postal 3701.DELETE FROM Pessoa WHERE CPostal = 3701

Linguagem de Manipulação de Dados 24

Comando DELETE - Exemplo

Page 25: Linguagem de Definição de Dados. Linguagem de Manipulação de Dados 2 SQL - DDL (Data Definition Language)  Comandos essenciais: Create, Alter e Drop

Consiste num conjunto de passos inter-relacionados em que ou se realizam todos ou não se realiza nenhum.

Ou seja, trata-se de um conjunto de ações de devem ser executadas de forma sequencial. No entanto, caso uma das ações falhe (ocorrência de erro) todas as ações devem parar e falhar.

Linguagem de Manipulação de Dados 25

Transações

Page 26: Linguagem de Definição de Dados. Linguagem de Manipulação de Dados 2 SQL - DDL (Data Definition Language)  Comandos essenciais: Create, Alter e Drop

Suponhamos que um indivíduo A pretende transferir 1000 Eur da sua conta para a conta de um indivíduo B.

Ora a transferência corresponde à diminuição do saldo da conta do indivíduo A e ao aumento do saldo da conta do indivíduo B.

Ora em código SQL esta transferência dá origem a dois comandos UPDATE: Um para atualizar a conta do indivíduo A Outro para atualizar a conta do indivíduo B

Linguagem de Manipulação de Dados 26

Transações - Exemplo

Page 27: Linguagem de Definição de Dados. Linguagem de Manipulação de Dados 2 SQL - DDL (Data Definition Language)  Comandos essenciais: Create, Alter e Drop

UPDATE Tabela_Conta SETSaldo = Saldo – 1000

WHERE Conta = ‘Conta A’

UPDATE Tabela_Conta SETSaldo = Saldo + 1000

WHERE Conta = ‘Conta B’

Ora, o que aconteceria se existisse algum problema apenas fosse realizado um dos UPDATES?

Ficaria um cliente com mais saldo e outro com o mesmo? Ficaria um cliente com menos saldo e o outro com o mesmo?

É aqui que surge o conceito de Transação, para resolução de problemas deste género.

Linguagem de Manipulação de Dados 27

Transações - Exemplo

Page 28: Linguagem de Definição de Dados. Linguagem de Manipulação de Dados 2 SQL - DDL (Data Definition Language)  Comandos essenciais: Create, Alter e Drop

Um transação inicia-se com o comando BEGIN TRANSACTION. Após este comando devem ser colocadas as instruções inter-relacionadas.

A transação será finalizada através de um dos comandos: COMMIT – torna todas as alterações definitivas. ROLLBACK – elimina as alterações realizadas,

ficando a base de dados no estado em que se encontrava antes da transação ser iniciada.

Linguagem de Manipulação de Dados 28

Transações

Page 29: Linguagem de Definição de Dados. Linguagem de Manipulação de Dados 2 SQL - DDL (Data Definition Language)  Comandos essenciais: Create, Alter e Drop

Resolução do problema anterior.

BEGIN TRANSACTIONUPDATE Tabela_Conta SET

Saldo = Saldo – 1000WHERE Conta = ‘Conta A’

UPDATE Tabela_Conta SETSaldo = Saldo + 1000

WHERE Conta = ‘Conta B’COMMIT

Linguagem de Manipulação de Dados 29

Nota: se durante a execução de um dos UPDATES ocorrer um problema então executa-se o comando ROLLBACK (em vez do COMMIT) para retroceder as operações realizadas. Assim, garante-se que ou todas as ações são realizadas com sucesso ou nenhuma é efectuada.

Transações - Exemplo

Page 30: Linguagem de Definição de Dados. Linguagem de Manipulação de Dados 2 SQL - DDL (Data Definition Language)  Comandos essenciais: Create, Alter e Drop

Privilégios e controlo de acessos

Os sistemas de gestão de bases de dados permitem essencialmente dois tipos de segurança: Controlo de acesso de utilizadores através do

conjunto Login/Password; Definição dos privilégios dos utilizadores (que

operações e a que objetos o utilizador pode aceder).

Linguagem de Manipulação de Dados 30

Page 31: Linguagem de Definição de Dados. Linguagem de Manipulação de Dados 2 SQL - DDL (Data Definition Language)  Comandos essenciais: Create, Alter e Drop

Controlo de Acessos

Sintaxe para a criação de utilizadores:

CREATE USER Nome_UtilizadorIDENTIFIED BY Palavra_Chave

Exemplo:

CREATE USER User_PsiIDENTIFIED BY ‘PSI_2009’

Linguagem de Manipulação de Dados 31

Page 32: Linguagem de Definição de Dados. Linguagem de Manipulação de Dados 2 SQL - DDL (Data Definition Language)  Comandos essenciais: Create, Alter e Drop

Sintaxe para a atualização de utilizadores:ALTER USER Nome_Utilizador

IDENTIFIED BY Nova_Palavra_Chave Exemplo:ALTER USER User_Psi

IDENTIFIED BY ‘PSI_09’

Sintaxe para a eliminação de utilizadores:DROP USER Nome_Utilizador

Exemplo:DROP USER User_Psi

Linguagem de Manipulação de Dados 32

Controlo de Acessos

Page 33: Linguagem de Definição de Dados. Linguagem de Manipulação de Dados 2 SQL - DDL (Data Definition Language)  Comandos essenciais: Create, Alter e Drop

Definição de Privilégios

Sintaxe para a atribuição de privilégios:

GRANT Privilégio ON objetoTO Utilizador

Exemplo:

GRANT SELECT, INSERT ON PessoaTO User_Psi

Linguagem de Manipulação de Dados 33

Page 34: Linguagem de Definição de Dados. Linguagem de Manipulação de Dados 2 SQL - DDL (Data Definition Language)  Comandos essenciais: Create, Alter e Drop

Os privilégios podem ser:

Linguagem de Manipulação de Dados 34

SELECT Permite seleccionar dados da tabela.

SELECT(lista) Permite seleccionar as colunas especificadas.

INSERT Permite inserir registos na tabela.

INSERT(lista) Permite inserir valores nas colunas especificadas.

UPDATE Permite alterar registos na tabela.

UPDATE(lista) Permite alterar os valores das colunas especificadas.

DELETE Permite apagar registos da tabela.

REFERENCES Permite referenciar todas as colunas da tabela.

REFERENCES(lista) Permite referenciar as colunas especificadas da tabela.

EXECUTE Permite a execução de Stored Procedures.

ALL Atribui todos os privilégios.

Definição de Privilégios

Page 35: Linguagem de Definição de Dados. Linguagem de Manipulação de Dados 2 SQL - DDL (Data Definition Language)  Comandos essenciais: Create, Alter e Drop

Definição de Privilégios

Sintaxe para a remoção de privilégios:

REVOKE Privilégio ON objetoFROM Utilizador

Exemplo:

REVOKE SELECT ON Pessoa FROM User_Psi

Linguagem de Manipulação de Dados 35

Page 36: Linguagem de Definição de Dados. Linguagem de Manipulação de Dados 2 SQL - DDL (Data Definition Language)  Comandos essenciais: Create, Alter e Drop

Referências

DAMAS, Luís: SQL, FCA

Linguagem de Manipulação de Dados 36