introdução a linguagem sql vandeclécio lira da silva bacharel em ciência da computação - uern...

28
Introdução a linguagem SQL Vandeclécio Lira da Silva Bacharel em Ciência da Computação - UERN 1

Upload: internet

Post on 21-Apr-2015

129 views

Category:

Documents


15 download

TRANSCRIPT

Page 1: Introdução a linguagem SQL Vandeclécio Lira da Silva Bacharel em Ciência da Computação - UERN 1

1

Introdução a linguagem SQL

Vandeclécio Lira da SilvaBacharel em Ciência da Computação - UERN

Page 2: Introdução a linguagem SQL Vandeclécio Lira da Silva Bacharel em Ciência da Computação - UERN 1

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;

Page 3: Introdução a linguagem SQL Vandeclécio Lira da Silva Bacharel em Ciência da Computação - UERN 1

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

Page 4: Introdução a linguagem SQL Vandeclécio Lira da Silva Bacharel em Ciência da Computação - UERN 1

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

Page 5: Introdução a linguagem SQL Vandeclécio Lira da Silva Bacharel em Ciência da Computação - UERN 1

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

Page 6: Introdução a linguagem SQL Vandeclécio Lira da Silva Bacharel em Ciência da Computação - UERN 1

6

DML

• Linguagem de Manipulação de Dados• INSERT: Insere dados• UPDATE: Altera dados • DELETE: Deleta dados

SQL

DDL DML DQL DCL DTL

Page 7: Introdução a linguagem SQL Vandeclécio Lira da Silva Bacharel em Ciência da Computação - UERN 1

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

Page 8: Introdução a linguagem SQL Vandeclécio Lira da Silva Bacharel em Ciência da Computação - UERN 1

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

Page 9: Introdução a linguagem SQL Vandeclécio Lira da Silva Bacharel em Ciência da Computação - UERN 1

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

Page 10: Introdução a linguagem SQL Vandeclécio Lira da Silva Bacharel em Ciência da Computação - UERN 1

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

Page 11: Introdução a linguagem SQL Vandeclécio Lira da Silva Bacharel em Ciência da Computação - UERN 1

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

Page 12: Introdução a linguagem SQL Vandeclécio Lira da Silva Bacharel em Ciência da Computação - UERN 1

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

Page 13: Introdução a linguagem SQL Vandeclécio Lira da Silva Bacharel em Ciência da Computação - UERN 1

13

Criando um banco de dados

• DDL – Linguagem de Definição de Dados• CREATE DATABASE AulaSQL• USE AulaSQL;

Page 14: Introdução a linguagem SQL Vandeclécio Lira da Silva Bacharel em Ciência da Computação - UERN 1

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

Page 15: Introdução a linguagem SQL Vandeclécio Lira da Silva Bacharel em Ciência da Computação - UERN 1

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.

Page 16: Introdução a linguagem SQL Vandeclécio Lira da Silva Bacharel em Ciência da Computação - UERN 1

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

Page 17: Introdução a linguagem SQL Vandeclécio Lira da Silva Bacharel em Ciência da Computação - UERN 1

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

Page 18: Introdução a linguagem SQL Vandeclécio Lira da Silva Bacharel em Ciência da Computação - UERN 1

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;

Page 19: Introdução a linguagem SQL Vandeclécio Lira da Silva Bacharel em Ciência da Computação - UERN 1

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’

Page 20: Introdução a linguagem SQL Vandeclécio Lira da Silva Bacharel em Ciência da Computação - UERN 1

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

Page 21: Introdução a linguagem SQL Vandeclécio Lira da Silva Bacharel em Ciência da Computação - UERN 1

21

Consulta de dados

• SELECT campos FROM Tabela Condição;

• SELECT * FROM CLIENTE;

• ‘ * ’ imprime todos os campos da tabela

• SELECT nome, cpf FROM CLIENTE;

Page 22: Introdução a linguagem SQL Vandeclécio Lira da Silva Bacharel em Ciência da Computação - UERN 1

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

Page 23: Introdução a linguagem SQL Vandeclécio Lira da Silva Bacharel em Ciência da Computação - UERN 1

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;

Page 24: Introdução a linguagem SQL Vandeclécio Lira da Silva Bacharel em Ciência da Computação - UERN 1

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;

Page 25: Introdução a linguagem SQL Vandeclécio Lira da Silva Bacharel em Ciência da Computação - UERN 1

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;

Page 26: Introdução a linguagem SQL Vandeclécio Lira da Silva Bacharel em Ciência da Computação - UERN 1

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;

Page 27: Introdução a linguagem SQL Vandeclécio Lira da Silva Bacharel em Ciência da Computação - UERN 1

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);

Page 28: Introdução a linguagem SQL Vandeclécio Lira da Silva Bacharel em Ciência da Computação - UERN 1

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.