linguagem de definição de dados. linguagem de manipulação de dados 2 sql - ddl (data definition...
TRANSCRIPT
Linguagem deDefinição de Dados
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
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)
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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)
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Referências
DAMAS, Luís: SQL, FCA
Linguagem de Manipulação de Dados 36