SQL – Structured Query Language Tabela = Relação DDL – Data Definition Language Sub-conjunto do SQL que suporta a criação, remoção e modificação de tabelas Domínio dos atributos integer real char(n) date Introdução à Manipulação de Dados 1 DDL - Tabelas Definição de uma tabela CREATE TABLE Ex: CREATE TABLE cliente ( id: integer, nome: char(60), morada: char(150), telefone: integer ) Introdução à Manipulação de Dados 2 DDL – Tuplos (registos) Inserção INSERT Ex: INSERT INTO cliente (BI, nome, morada, telefone) VALUES (8236014, ‘João’, Évora’, 266748302) Pode-se omitir a lista de atributos da tabela, listando os valores a inserir pela ordem apropriada (definida aquando da criação da tabela), mas é bom estilo explicitar os nomes. Introdução à Manipulação de Dados 3 DDL – Tuplos (registos) Remoção DELETE DELETE FROM cliente WHERE cliente.nome = ‘João’ Modificação UPDATE UPDATE cliente A SET A.data_nasc = 14/10/72 WHERE A.nome = ‘Maria’ Introdução à Manipulação de Dados 4 Restrições de integridade São condições que restringem os dados a guardar Tipos de restrições: Domínio dos atributos, Chave (principal meio de identificação de um tuplo/valor único para cada tuplo/preenchimento obrigatório), Chave externa/estrangeira (a chave externa na relação que referencia tem que ser igual à chave primária na relação referenciada), Outras (ex: data de casamento tem que ser superior à data de nascimento). Introdução à Manipulação de Dados 5 Chave externa Exemplo Chave primária id_ reserva Data_ reserva duração data_ chegada id id nome data_nasc telefone 45670 10/5/05 3 20/6/05 1236 1236 Luís 12/6/69 21345879 1 47589 22/8/05 2 4/10/05 2867 3728 Maria 4/10/72 26674839 3 39658 2/4/05 3 30/4/05 3462 2867 Rute 30/4/70 28982134 6 29854 20/705 4 3/8/05 1236 3462 João 4/10/72 21291403 8 Reserva (relação que referencia) Qualquer reserva deve referir um cliente; Cliente (relação referenciada) Podem existir clientes sem reservas efectuadas. CREATE TABLE reserva ( id_reserva: integer, Data_reserva: date, duração: integer, data_chegada: date, PRIMARY KEY (id_reserva) FOREIGN KEY (id) REFERENCES cliente; ) Introdução à Manipulação de Dados 6 SQL- SELECT SELECT [DISTINCT] lista-select FROM lista-from WHERE qualificação O resultado é uma tabela! Introdução à Manipulação de Dados 7 SQL- SELECT DISTINCT é opcional indica se a tabela resultado deve ou não conter tuplos duplicados lista-from lista de tabelas – especifica o produto cartesiano entre tabelas listadas lista-select lista de (expressões envolvendo) nomes de colunas de tabelas referidas na lista-from Introdução à Manipulação de Dados 8 SQL- SELECT qualificação é uma expressão que utiliza as operações lógicas AND, OR e NOT, definindo condições da forma expr op expr, onde op é um operador de comparação: <, <=, =, >=, >, <> expr é um nome de coluna, constante expressão (aritmética ou de cadeia de caracter) Introdução à Manipulação de Dados 9 Exemplo id nome data_nasc telefone 1236 Luís 12/6/69 21345879 1 3728 Maria 4/10/72 26674839 3 2867 Rute 30/4/70 28982134 6 3462 João 4/10/72 21291403 8 Qual o nome e data de nascimento de todos os clientes? SELECT nome, data_nasc FROM cliente Quais os clientes que nasceram depois de 1970? SELECT nome FROM clientes WHERE data_nasc > 31/12/1970 Introdução à Manipulação de Dados 10 Exemplo SELECT data_nasc FROM cliente data_nasc 12/6/69 4/10/72 30/4/70 4/10/72 SELECT DISTINCT data_nasc FROM cliente data_nasc 12/6/69 4/10/72 30/4/70 Introdução à Manipulação de Dados 11 Exemplo id_ reserva Data_ reserva duração data_ chegada id id nome data_nasc telefone 1236 Luís 12/6/69 21345879 1 45670 10/5/05 3 20/6/05 1236 47589 22/8/05 2 4/10/05 2867 3728 Maria 4/10/72 26674839 3 39658 2/4/05 3 30/4/05 3462 2867 Rute 30/4/70 28982134 6 29854 20/705 4 3/8/05 1236 3462 João 4/10/72 21291403 8 Reserva Cliente Quais as reservas do Luís? SELECT reserva.id_reserva, reserva.data_chegada, reserva.duração FROM reserva, cliente WHERE cliente.nome = ‘Luís’ AND cliente.id = reserva.id Introdução à Manipulação de Dados 12 Operadores de agregação COUNT ([DISTINCT] A) número de valores (únicos) na coluna A SUM ([DISTINCT]A) soma de todos os valores (únicos) na coluna A AVG ([DISTINCT]A) média de todos os valores (únicos) na coluna A MAX (A) o valor máximo na coluna A MIN (A) o valor mínimo na coluna A Introdução à Manipulação de Dados 13 Exemplos Qual o número de clientes que nasceu depois de 1970? SELECT COUNT (data_nasc) FROM clientes WHERE data_nasc > 31/12/70 Qual a duração média das reservas efectuadas após 16/7/2005? SELECT AVG (duração) FROM reservas WHERE data_reserva > 16/7/05 Qual a duração mínima das reservas efectuadas pelo Luís? SELECT MIN (reserva.duração) FROM reserva, cliente WHERE cliente.nome = ‘Luís’ AND cliente.id = reserva.id Introdução à Manipulação de Dados 14