Introdução a linguagem SQL Vandeclécio Lira da Silva Bacharel em Ciência da Computação - UERN...
Transcript of Introdução a linguagem SQL Vandeclécio Lira da Silva Bacharel em Ciência da Computação - UERN...
1
Introdução a linguagem SQL
Vandeclécio Lira da SilvaBacharel em Ciência da Computação - UERN
2
Introdução a SQL
• SQL (Structured Query Language) • Linguagem Estruturada de Consulta;• Criado no Inicio dos 70, pela IBM;• É uma linguagem de altíssimo nível, bem próxima da
linguagem humana (inglês);• Linguagem declarativa, detalha a forma do resultado;• Novos dialetos surgiram, derivando e evoluindo o SQL;
3
Introdução a SQL
• Padronização1. American National Standards Institute (ANSI) em
19862. International Organization for Standardization (ISO)
em 1987• É a linguagem utilizada em praticamente todos os
SGBDs do mercado.• Mesmo com a padronização cada fabricante tem suas
características
4
Introdução a SQL
• Formada pelo conjunto das linguagens:• DDL (Data Definition Language): Liguagem de definição
de dados • DML (Data Manipulation Language): Linguagem de
Manipulação de dados• DQL (Data Query Language): Linguagem de consulta de
Dados• DCL (Data Control Language): Linguagem de Controle
de Dados• DTL (Data Transaction Language): Linguagem de
Transação de Dados
SQL
DDL DML DQL DCL DTL
5
DDL
• Linguagem de Definição de Dados• CREATE: Cria uma estrutura• ALTER: Altera uma estrutura• DROP: Exclui uma estrutura
SQL
DDL DML DQL DCL DTL
6
DML
• Linguagem de Manipulação de Dados• INSERT: Insere dados• UPDATE: Altera dados • DELETE: Deleta dados
SQL
DDL DML DQL DCL DTL
7
DQL
• Linguagem de Consulta de Dados• SELECT: Retorna dados• Ordenação de dados• Agrupamento de dados• Funções aritméticas• Filtros de seleção
SQL
DDL DML DQL DCL DTL
8
DCL
• Linguagem de Controle de Dados• GRANT: Habilita acesso a dados e operações• REVOKE: Revoga acesso a dados e operações
SQL
DDL DML DQL DCL DTL
9
DQL
• Linguagem de Transação de Dados• START TRANSACTION: Inicia a transação• COMMIT: Concretiza a transação• ROLLBACK: Anula a transação
SQL
DDL DML DQL DCL DTL
10
Tipo de dados
Nome MySQL PostgreSQL
Server Oracle FireBird intervalo Bytes
BOOLEAN TINYINT SIM TINYINT ENUM SMALLINT 0 ou 1 (FALSE ou TRUE) 1 bit
TINYINT SIM SMALLINT SIM NUMBER SMALLINT -128 à 127 1
SMALLINT SIM SIM SIM NUMBER SIM-32,768 à 32,767 0 à 65,535 se UNSIGNED
2
INT SIM SIM SIM NUMBER SIM-2,147,483,648 à 2,147,483,6470 à 4,294,967,295 se UNSIGNED 4
BIGINT SIM SIM SIM NUMBER INT64
-9,223,372,036,854,775,808 à +9,223,372,036,854,775,807
0 à 18,446,744,073,709,551,615 se UNSIGNED 8
FLOAT SIM REAL SIM FLOAT SIM-3.402823466E+38 à -1.17544351E-38
1.175494351E-38 à 3.402823466E+38 se UNSIGNED 4
DOUBLE SIMDOUBLE
PRECISIONDOUBLE
PRECISION FLOAT SIM
-1.7976931348623157E+308 à -2.2250738585072014E-308,2.2250738585072014E-308 à
1.7976931348623157E+308 se UNSIGNED 8
• Boleano e Numérico
11
Tipo de dados
Nome MySQL 5 SQL Server Oracle FireBird Bytes
Char SIM SIM SIM SIM SIM X
Varchar SIM SIM SIM SIM SIM X + 1
Nome MySQL PostgreSQL
Server Oracle FireBird Intervalo (MySQL) Bytes
DATA SIM SIM SIM SIM TIMESTAMP "1000-01-01" – "9999-12-31" (ano, mês, dia) 3
TIME SIM SIM SIM TIMESTAMP TIMESTAMP "-838:59:59" – "838:59:59" (horas, minutos, segundos) 3
DATATIIME SIM TIMESTAMP SIM TIMESTAMP TIMESTAMP"1000-01-01 00:00:00" - "9999-12-31 23:59:59"
8
TIMESTAMP SIM SIM SIM SIM SIM19700101000000 – 2037+
4
• String
• Data e Hora
12
Atributos
• NULL / NOT NULLPermite ou não valores nulos, NULL != vazio
• Unsigned / SignedPermite ou não números negativos
• Auto-incrementSequências, contadores
• ZerofillPreenche o valor numérico completando com zeros a esquerda
13
Criando um banco de dados
• DDL – Linguagem de Definição de Dados• CREATE DATABASE AulaSQL• USE AulaSQL;
14
Criando tabelas
• CREATE TABLE nomeTabela(campo tipo atributo, ... campo tipo atributo)
CREATE TABLE CLIENTE (codigo int NOT NULL PRIMARY KEY, nome varchar(30) NOT NULL, cpf int UNIQUE,uf char(2) default null,nascimento date default ’0000-00-00’, telefone char(8) default null,sexo char(1));
codigo nome cpf uf nascimento telefone sexo
15
Criando tabelas
• Restrição UNIQUE e PRIMARY KEY:• Asseguram que os valores inseridos em uma ou mais
colunas são únicos para cada linha da tabela.• Uma ou mais colunas definidas com essas restrições
devem também ser definidas com o atributo NOT NULL
• Uma coluna pode ser definida com o atributo NOT NULL. Esse atributo não permite valores nulos na coluna onde é definida e é obrigatório em colunas com restrições PRIMARY KEY ou UNIQUE.
16
Criando tabelas
• Restrição FOREIGN KEY:• Chave estrangeira é uma ou mais colunas em uma tabela que corresponde
exatamente a uma ou mais colunas definida(s) como chave primária em outra tabela.
CREATE TABLE PRODUTO( codigo int NOT NULL PRIMARY KEY, produto varchar(30) NOT NULL, preco decimal(5,2) NOT NULL,);
CREATE TABLE PEDIDO(cod_pedido int NOT NULL PRIMARY KEY,data date, cod_cliente int,cod_produto int,FOREIGN KEY (cod_produto) REFERENCES PRODUTO (codigo)ON DELETE SET NULL,FOREIGN KEY (cod_cliente) REFERENCES CLIENTE (codigo)ON DELETE SET NULLON UPDATE CASCADE);
codigo produto preco
cod_pedido data cod_cliente cod_produto
17
Alterar uma tabela
• Exemplos:• Incluir nova coluna
• ALTER TABLE CLIENTE ADD email VARCHAR(20);• ALTER TABLE CLIENTE ADD fax VARCHAR(18) AFTER uf;
• Eliminar uma coluna existente• ALTER TABLE CLIENTE DROP fax;
• Alterar o tipo de dado de uma coluna• ALTER TABLE CLIENTE MODIFY email VARCHAR(40);
• DROP TABLE [nome da tabela];Apagar uma tabela
18
Manipulando dados
• DML – Linguagem de Manipulação de Dados
• INSERT INTO Tabela VALUES (valores)Exemplo: INSERT INTO CLIENTE VALUE (‘007’, ‘Bond’, ‘11111111111’, ‘UK’, ’1111-11-11’, ‘1111111’, ’M’, ’[email protected]’ ); INSERT INTO CLIENTE (nome, cpf) VALUE (‘Maria’, ‘22222222222’);
• LOAD DATA LOCAL INFILE 'arquivo.txt' INTO TABLE Tabela;
• Exercício• Carregar os arquivos nas tabelas;
19
Manipulando dados com filtro
• UPDATE Tabela SET Campo = Valor WHERE Condição
UPDATE CLIENTE SET nome = ‘Camila’ WHERE cpf = ‘22222222222’;UPDATE CLIENTE SET nome = ‘James Bond’ WHERE nome = ‘Mario’;
• DELETE FROM Tabela WHERE Condição
DELETE FROM CLIENTE WHERE cpf = ‘2222222222’DELETE FROM CLIENTE WHERE nome = ‘Bonde’
20
Consulta de dados
• DQL – Linguagem de Consulta de Dados• SELECT : retorna dados• Ordenação de dados• Agrupamento de dados• Filtros de seleção• Funções aritméticas
21
Consulta de dados
• SELECT campos FROM Tabela Condição;
• SELECT * FROM CLIENTE;
• ‘ * ’ imprime todos os campos da tabela
• SELECT nome, cpf FROM CLIENTE;
22
Consulta de dados
• Filtros de seleção (WHERE)
• Operadores relacionais• Igual ( = ), Diferente ( != )• Maior ( > ), Maior ou igual ( >= )• Menor ( < ), Menor ou igual (<= )• Nulo (IS NULL), Não nulo ( IS NOT NULL)• Entre intervalo ( BETWEEN )• Valor parcial ( LIKE )
• Operadores lógicos• AND, OR, NOT
23
Consulta de dados
• SELECT nome FROM CLIENTE WHERE sexo = ‘f’;• SELECT * FROM PRODUTO WHERE preco > 50;• SELECT produto FROM PRODUTO WHERE preco
BETWEEN 10 AND 30;• SELECT nome FROM CLIENTE WHERE nome NOT LIKE ‘A
%’;• SELECT * FROM CLIENTE WHERE telefone IS NOT NULL;
24
Consulta de dados
• Uso da cláusula ORDER BY• SELECT * FROM CLIENTE ORDER BY nome;
• ASC, DESC
• Uso da cláusula GROUP BY• SELECT * FROM CLIENTE GROUP BY uf ;
• Exercício • Mostrar o nome dos clientes do mais velho ate os mais novos,
agrupados por estado;
25
Consulta de dados
• Uso de funções• AVG
• SELECT AVG(preco) FROM PRODUTO;• COUNT
• SELECT COUNT(*) FROM CLIENTE;• MAX
• SELECT MAX(preco) FROM PRODUTO;• MIN
• SELECT MIN(preco) FROM PRODUTO;• DISTINCT
• SELECT DISTINCT nome FROM CLIENTE;
26
Consulta de dados
• Relacionamento entre tabelas
• Quais as datas dos pedidos de cada cliente?• SELECT CLIENTE.nome, PEDIDO.data from CLIENTE, PEDIDO
WHERE PEDIDO.cod_cliente = CLIENTE.codigo;
• Inserindo apelido nas tabela• SELECT C.nome, P.data from CLIENTE ASC, PEDIDO ASP WHERE
P.cod_cliente = C.codigo;
27
Consulta de dados
• Relacionamento entre tabelas• UNION
• SELECT nome FROM CLIENTE UNION SELECT produto FROM PRODUTO;
• IN• SELECT nome FROM CLIENTE WHERE codigo IN (SELECT codigo
FROM PEDIDO);
28
Armazém
• -- Exercicos
• -- 1) Alterar a tabela produto, agregando um campo preço.
• -- 2) Listar todos os produtos/funcionarios ordenados pelo codigo e alfabeticamente.
• -- 3) Listar os nomes dos funcionarios que geraram solicitaçõe
• -- 4) Listar todas as solicitações efectuadas no mes de fevereiro.
• -- 5) Actualice os preços de cada produto.
• -- 6) Que funcionarios executaram mais solicitações.
• -- 7) Que funcionario vendio mais nos primeiros 15 dias do mes de fevereiro.