INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE INTRODUÇÃO A SQL Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com 02/06/2016
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 produto
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 AND, OR e NOT Operadores de comparação <, <=, >, >=, = 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 XX/XX/XXX: Prova Escrita Dia XX/XX/XXX: Prova Prática
DÚVIDAS e-mail: ebertonsm@gmail.com Endereço eletrônico da disciplina: http://docente.ifrn.edu.br/ebertonmarinho 36