INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE INTRODUÇÃO À SQL Docente: Éberton da Silva Marinho e-mail: [email protected] 24/05/2017 SUMÁRIO SQL DDL DML SQL (STRUCTURED QUERY LANGUAGE) SQL SQL: Linguagem de Consulta Estruturada Conjunto de comandos responsáveis pela definição das tabelas, comandos e atualização dos SGBD's relacionais Partes da SQL Linguagem de Definição de Dados (DDL) Linguagem de Manipulação de Dados (DML) Permite definir regras de integridade Definição de Views Controle de transação Autorização LINGUAGEM DE DEFINIÇÃO DE DADOS (DDL) LINGUAGEM DE DEFINIÇÃO DE DADOS Permite definir O esquema de cada relação O domínio dos valores associados a cada atributo As regras de integridade O conjunto de índices para manutenção de cada relação Informações sobre segurança e autoridade sobre cada relação A estrutura de armazenamento físico de cada relação TIPOS DE DOMÍNIO Char(n): Uma string de caracteres de tamanho fixo n Varchar(n): Uma string de caracteres de tamanho variável com n caracteres máximo Int: inteiro Smallint: inteiro pequeno Numeric (p,d): número de ponto flutuante e precisão d casas decimais Real, double precision: números de ponto flutuante Float: número de ponto flutuante com precisão de n dígitos Date: para representar datas Time: para representar horários BANCO DE DADOS BASE CRIAÇÃO DE UM ESQUEMA DE BD Cria um banco de dados onde as tabelas e relações serão colocadas Exemplo CREATE SCHEMA BDSistemaVendas; DEFINIÇÃO BÁSICA DE ESQUEMA SQL Criar uma tabela create table r(A1 D1, A2 D2, ..., An Dn, <restrição-de-integridade1>, <restrição-de-integridade2>, ..., <restrição-de-integridaden>); r: nome da tabela An: nome do atributo Dn: tipo do domínio restrição-de-integridaden REGRAS DE INTEGRIDADE Chaves primárias primary key (A1, A2, ..., An) check (P) not null: caso queiramos dados obrigatórios Onde P é um predicado Exemplo CREATE TABLE Clientes ( idCliente INT NOT NULL AUTO_INCREMENT , nome VARCHAR(200) NOT NULL , dataNascimento DATE NOT NULL , sexo CHAR NOT NULL , cpf VARCHAR(11) NOT NULL , endereco VARCHAR(200) NOT NULL , PRIMARY KEY (idCliente) ); EXERCÍCIO Agora crie a tabela produto DEFINIÇÃO BÁSICA DE ESQUEMA SQL Excluir uma tabela Drop table r Exemplo DROP TABLE clientes; Alterar tabela ALTER TABLE r add A D; ALTER TABLE r drop A; Exemplo ALTER TABLE clientes add telefone char(12); INTEGRIDADE REFERENCIAL Quando queremos que um conjunto de valores que aparece em uma relação também apareça em outra relação Chaves estrangeiras podem ser especificadas como parte da instrução SQL FOREIGN KEY (chave estrangeira) REFERENCES tabela Se alguma ação violar alguma regra de integridade, o banco pode realizar as seguintes ações FOREIGN KEY(chave estrangeira) REFERENCES tabela on delete cascade on update cascade DEFINIÇÃO BÁSICA DE ESQUEMA SQL Chaves estrangeiras FOREIGN KEY (chave_estrangeira) REFERENCES Tabela (chave_primária)); Exemplo CREATE TABLE CuponsFiscais ( ccf INT NOT NULL AUTO_INCREMENT , data DATE NOT NULL , hora TIME NOT NULL , formaPagamento INT NOT NULL , vlTotal DOUBLE NOT NULL , idCliente INT NOT NULL , PRIMARY KEY (ccf) , FOREIGN KEY (idCliente) REFERENCES Clientes (idCliente)); EXERCÍCIO Agora crie a tabela ItensCupom LINGUAGEM DE MANIPULAÇÃO DE DADOS (DML) INSERÇÃO DE DADOS SQL Permite inserir uma tupla no BD Os valores inseridos devem permanecer no domínio dos atributos Forma padrão INSERT INTO r values (‘value1’, value2, ..., value3); INSERT INTO r (A1, A2, ..., A3) values (‘value1’, value2, ..., value3); Exemplo INSERT INTO clientes (nome, dataNascimento, sexo, cpf, endereco, telefone) values ( ‘Maria José’, ‘2000-03-07’, ‘F’, ‘09890998812’, ‘av. Afonso Pena’, ‘8434540987’); ESTRUTURAS BÁSICAS DE CONSULTAS SQL Cláusula SELECT SELECT a1, a2, ..., an FROM r1, r2, ..., rn where P; Onde a é um atributo Onde r é uma tabela Onde P é um predicado Exemplos SELECT nome, endereco FROM Clientes; ESTRUTURAS BÁSICAS DE CONSULTAS SQL Cláusula SELECT Distinct All SELECT distinct nome FROM Clientes; SELECT * from Clientes Expressões aritméticas SELECT vlTotal * 0.9 FROM CuponsFiscais; ESTRUTURAS BÁSICAS DE CONSULTAS SQL Cláusula WHERE Conectivos lógicos Operadores de comparação AND, OR e NOT <, <=, >, >=, = e <> Exemplo SELECT * FROM CuponsFiscais WHERE vlTotal > 500; ESTRUTURAS BÁSICAS DE CONSULTAS SQL Cláusula WHERE BETWEEN SELECT * FROM CuponsFiscais WHERE vlTotal BETWEEN 1000 AND 5000; SELECT * FROM CuponsFiscais WHERE vlTotal >= 1000 AND vlTotal <= 5000 ESTRUTURAS BÁSICAS DE CONSULTAS SQL Ligação entre Tabelas Cláusula FROM SELECT nome, cpf, data, hora, vlTotal FROM clientes, cuponsfiscais WHERE clientes.idCliente = cuponsfiscais.idCliente; OPERAÇÃO DE RENOMEAÇÃO Utilizado para renomear relações das consultas nome-antigo AS novo-nome Pode aparecer tanto na cláusula SELECT quanto FROM Exemplos SELECT nome, cpf, data, hora, vlTotal FROM clientes, cuponsfiscais WHERE clientes.idCliente = cuponsfiscais.idCliente SELECT nome, cpf, data, hora, vlTotal FROM clientes AS c, cuponsfiscais AS cf WHERE c.idCliente = cf.idCliente OPERAÇÕES COM STRINGS Uma string é definida por caracteres entre apóstrofo Um apóstrofo pode ser inserido em uma string usando dois apóstrofos Exemplo: Caixa d’agua Pode ser escrita como: ‘Caixa d’’agua’ A operação utilizada para correspondência é o operador like: SELECT nome, endereco FROM clientes WHERE endereco like ‘lula gomes’; OPERAÇÕES COM STRINGS Podemos especificar padrões de string através dos caracteres: %: corresponde a qualquer substring _: corresponde a qualquer caracter Exemplos ‘Maria%’: localiza qualquer string começando Maria ‘%José%’: localiza qualquer string contendo José ‘_ _ _’: localiza qualquer string com exatamente três caracteres ‘_ _ _%’: localiza qualquer string com pelo menos três caracteres OPERAÇÕES COM STRINGS Para trabalhar com os caracteres _ e %, a SQL utiliza caracteres de escape Exemplos like ‘ab\%cd%’: localiza as string iniciadas com ab%cd like ‘ab\\cd%’: localiza as string iniciadas com ab\cd O operador not permite negar uma afirmação not like ‘abc%’: localiza as string que não começam com abc not like ‘%abc%’: localiza as strings que não possuem abc na string OPERAÇÕES COM STRINGS Concatenação de strings like CONCAT(‘Maria’, ‘ ’, ‘José’) É o mesmo que ‘Maria José’ upper(string): coloca a string em maiúsculo low(string): coloca a string em minúsculo ORDENAÇÃO DE EXIBIÇÃO DE TUPLAS ORDER BY atributo [asc|desc]: ordena o resultado de uma seleção de forma ascendente ou descendente tendo como parâmetro o atributo Podemos utilizar vários parâmetros como critério de ordenação Exemplo SELECT * FROM cliente ORDER BY nome asc SELECT * FROM cuponsfiscais ORDER BY vlTotal, data desc FUNÇÕES AGREGADAS Funções agregadas: são aquelas que tomam uma coleção de valores como entrada e retornam um único valor Funções avg (atributo): calcula a média aritmética de um conjunto de valores passados minimum (atributo): retorna o menor valor dentre um conjunto de valores maximum (atributo): retorna o maior valor dentre um conjunto de valores sum (atributo): retorna a soma de um conjunto de valores count (atributo): conta as tuplas de uma seleção AGRUPAMENTO Quando desejamos aplicar funções de agregação em grupos de tuplas usamos GROUP BY Exemplo SELECT nome, avg(vlTotal) FROM clientes AS c, cuponsfiscais AS cf WHERE c.idCliente = cf.idCliente GROUP BY nome Podemos também aplicar predicados a agrupamentos Exemplo SELECT nome, avg(vlTotal) FROM clientes AS c, cuponsfiscais AS cf WHERE c.idCliente = cf.idCliente GROUP BY nome HAVING avg(vlTotal) > 1200 EXCLUSÃO DELETE: exclui tuplas seguindo um determinado critério Exemplos DELETE FROM Clientes Deleta todas as tuplas de clientes DELETE FROM clientes WHERE nome = ‘José’ DELETE FROM cuponsfiscais WHERE vlTotal BETWEEN 1000 and 5000 Deleta cuponsfiscais entre 1000 e 5000 reais ATUALIZAÇÃO UPDATE: modifica o valor de atributos de uma ou várias tuplas sob um determinado critério Exemplos UPDATE cuponsfiscais SET vlTotal = vlTotal * 0.9; UPDATE cuponsfiscais SET vlTotal = vlTotal * 0.9 WHERE vlTotal >= 3000; AULA PRÁTICA DATA DA PROVA Dia 21/06/2017: Prova Prática DÚVIDAS e-mail: [email protected] Endereço eletrônico da disciplina: http://docente.ifrn.edu.br/ebertonmarinho 36