3 INSTRUÇÕES SQL Prof George Fragoso
1. Instruções SQL...2
1.1 SELECT...2
1.1.1 ALIAS...5
1.1.2 DISTINCT...6
1.1.3 Ordenando as consultas cláusula ORDER BY...7
1.1.4 WHERE...8 1.1.5 LIKE...11 1.1.9 GROUP BY...13 1.1.10 HAVING...14 1.2 INSERT...14 1.2 UPDATE...16 1.3 DELETE...17 3.BIBLIOGRAFIA...18 1. Instruções SQL ( Structured Query Language) é uma linguagem estrutura de consulta padronizada pelo comitê ANSI(American National Standards Institute) para acesso e manipulação de dados em sistemas de banco de dados.
1.1 SELECTO objetivo da instrução select é selecionar dados de uma ou mais tabelas Sintax:
SELECT * | tabela.* | [tabela.]campo1 [AS alias1] [, [tabela.]campo2 [AS alias2] [, ...]]} FROM nome da tabela [, ...]
[WHERE... ] [GROUP BY... ] [HAVING... ] [ORDER BY... ]
A formação mais simples da instrução select é select * from nomeTabela, onde o símbolo * significa selecionar todos os campos.
Utilizando o modelo abaixo faremos um conjunto de exemplos para melhor entendimento.
TB_CLIENTE NOCPF: bigint strNome: varchar(100) Cidade: varchar(100) strEstado: varchar(2) TB_NF NONF: bigint NOCPF: bigint DTFATURAMENTO: datetime
Ex1: Selecionando todos os dados da tabela TB_CLIENTE SELECT * FROM TB_CLIENTE
OBS: o Símbolo * significa selecionar todos os dados. Ex2: Selecionando CPF e nome da tabela TB_CLIENTE SELECT NOCPF,strNome FROM TB_CLIENTE
Ex3: Selecionando CPF e estado da tabela TB_CLIENTE SELECT NOCPF,strEstado FROM TB_CLIENTE
Até o momento selecionamos todos os dados de uma tabela. Com o auxílio do símbolo * foi possível selecionar todas as colunas da tabela, e percebemos também que podemos selecionar somente as colunas desejadas.
1.1.1 ALIAS
Uma outra função interessante é que podemos colocar alias, ou seja, apelidos em nome de colunas e tabelas, o que fazemos é trocar o nome físico da coluna ou tabela por qualquer nome
desejado. Para colocar um apelido basta escrever o nome físico da coluna ou tabela, dar um espaço ou escrever a palavra chave as, e entre apóstrofes o nome desejado para o campo se o mesmo tiver um nome composto, caso contrário não precisa estar entre apóstrofes.
Ex4: Selecionando CPF e estado da tabela TB_CLIENTE e colocando alias no campo NOCPF e strESTADO.
SELECT NOCPF 'Número do cpf',strEstado 'UF' FROM TB_CLIENTE
Ex5: Selecionando CPF e estado da tabela TB_CLIENTE e colocando alias no campo NOCPF e strESTADO usando a palavra as.
SELECT NOCPF as 'Número do CPF', strEstado as UF FROM TB_CLIENTE
Ex6: Selecionando CPF e estado da tabela TB_CLIENTE e colocando alias no campo NOCPF e strESTADO e colocando um alias na tabela cliente.
SELECT NOCPF , strEstado FROM TB_CLIENTE as CLIENTE ou
1.1.2 DISTINCT
O Predicado distinct elimina de uma consulta registros com os dados da seleção repetidos. Ex7: Selecionando estado da tabela TB_CLIENTE sem a utilização de distinct
SELECT strEstado FROM TB_CLIENTE as CLIENTE
Agora utilizando o distinct
Ex8: Selecionando estado da tabela TB_CLIENTE sem a utilização de distinct SELECT DISTINCT strEstado FROM TB_CLIENTE as CLIENTE
1.1.3 Ordenando as consultas cláusula ORDER BY
Ao retornar dados de nossa consulta precisamos muitas vezes ordenar os dados, por exemplo, que a seleção de todos os clientes retorne os clientes por ordem crescente de nomes, para isso utilizamos a cláusula order by do Select que possui esta função, para usá-lo basta colocar ao final do select a cláusula order by seguido pelo campo ou campos separados por virgula e logo após o tipo de ordenação, crescente utilizando a palavra ASC ou decrescente utilizando a palavra DESC, se for omitido ASC ou DESC o default (padrão) é ASC.
Ex9: Selecionando nome do cliente ordenando o resultado por ordem crescente de nome. SELECT strNome FROM TB_CLIENTE ORDER BY strNome
Ex10: Selecionando nome do cliente ordenando o resultado por ordem decrescente de nome. SELECT strNome FROM TB_CLIENTE ORDER BY strNome desc
1.1.4 WHERE
Até o momento foram realizadas consultas retornando todos os registros de uma tabela, se a tabela tivesse 2000 registros os mesmos seriam retornados nas consultas acima, mas nem sempre esta é a realidade , muitas vezes precisamos selecionar somente os dados desejados, ou seja , colocar uma condição de retorno de dados na consulta, e para isso utilizamos a cláusula where em conjuntos com as condições de seleção. A seguir veremos vários exemplos.
Ex11: Selecionando todos os dados de cliente onde o estado é SP. SELECT * FROM TB_CLIENTE WHERE strEstado = 'SP'
Ex12: Selecionando todos os dados de cliente onde o cpf é 28440492420. SELECT * FROM TB_CLIENTE WHERE NOCPF = 28440492420
Com a cláusula where podemos utilizar os seguintes operadores: Operador Descrição = Igual <> Diferente > Maior que < Menor que
>= Maior iqual que <= Menor igual que
BETWEEN Entre
LIKE
Procurar por um padrão
Exemplos com operador = já foram vistos, a seguir será mostrado o uso dos outros operadores. Ex13: Selecionando nome e estado do cliente onde estado é diferente de SP.
SELECT NOCPF,strNome FROM TB_CLIENTE WHERE strEstado <> 'SP'
Ex14: Selecionando todos os dados de nota onde o número de nota é maior que 1 SELECT * FROM tb_NF WHERE NONF > 1
Ex15: Selecionando todos os dados de nota onde o número de nota é menor que 4 SELECT * FROM tb_NF WHERE NONF < 4
SELECT * FROM tb_NF WHERE NONF <= 4
Ex17: Selecionando todos os dados de nota onde o número de nota é maior igual que 4 SELECT * FROM tb_NF WHERE NONF >= 4
Ex18: Selecionando todos os dados de nota onde o número está entre 1 e 5 SELECT * FROM tb_NF WHERE NONF BETWEEN 1 AND 5
1.1.5 LIKE
Podemos também retornar valores procurando por padrões em colunas, ou seja procurar um “pedaço” de um texto em uma coluna, para isso usamos o comando like. O caractere coringa que utilizamos é símbolo %, que tem a função de ignorar valores.
Ex19: Selecionando todos os clientes onde o nome começa com F SELECT * FROM TB_CLIENTE WHERE strNome LIKE 'F%'
Ex20: Selecionando todos os clientes onde o nome termina com A SELECT * FROM TB_CLIENTE WHERE strNome LIKE '%A'
1.1.6 AND e OR
Com a cláusula where podemos filtrar os resultados impondo uma condição como já foi visto até o momento , ou podemos impor mais de uma condição, para isso utilizamos os operadores lógicos AND (E) e OR (OU).
Ex21: Selecionando todos os clientes onde o nome contenha a palavra RI e o estado seja SP. SELECT * FROM TB_CLIENTE WHERE strNome LIKE '%RI%' AND strEstado = 'SP'
Ex22:Selecionando todos clientes onde o nome contenha a letra E e estado igual a SP ou RJ. SELECT * FROM TB_CLIENTE WHERE strNome LIKE '%E%' AND strEstado = 'SP' OR strEstado = 'RJ'
1.1.7 IN
Este operador serve para selecionar registros onde a coluna desejada esteja em um domínio de informações.
Ex23:Selecionando todos clientes onde o estado seja em (SP e SP) SELECT * FROM TB_CLIENTE WHERE strEstado IN ('SP','RJ')
1.1.8 JOINS (Uniões)
Muitas vezes precisamos selecionar dados de duas ou mais tabelas para formar um resultado completo, para unir estas tabelas utilizamos as chaves primárias (PKs) e chaves estrangeiras (FKs) .O modelo que estamos utilizando para os exemplos tem a tabela cliente (TB_CLIENTE) e a
tabela Nota Fiscal(TB_NF) estas tabelas possuem uma relação, um cliente fatura uma ou mais notas fiscais, na tabela cliente a chave primária é NOCPF, e a tabela TB_NF possui a chave estrangeira NOCPF para poder fisicamente mostrar a relação. Com a chave primária e estrangeira podemos unir estas duas tabelas.
Ex24:Selecionando nome,estado numero de nota e data de faturamento onde o CPF do cliente é 28440492420.
Para o exemplo abaixo utilizamos Alias para facilitar na consulta, a parte em negrito da consulta mostra a União entre as duas tabelas (Join) , ou seja fizemos a ligação ente as duas tabelas pela chave primária da tabela cliente com a chave estrangeira cliente na tabela de nota fiscal.
SELECT C.strNome,C.strEstado,N.NONF,N.dtFaturamento FROM TB_CLIENTE C,TB_NF N WHERE C.NOCPF = N.NOCPF AND C.NOCPF = '28440492420'
1.1.9 GROUP BY
A instrução group by foi criada para trabalhar com funções agregadas como sum (coluna) somátoria, avg(Coluna) média , count(*) quantidade de retornada, entre outras. Com a instrução group by podemos agrupar resultados por determinadas colunas.
Ex26: Selecionando estado e a quantidade de registros agrupados por estado SELECT strEstado,COUNT(*) FROM TB_CLIENTE GROUP BY strEstado
1.1.10 HAVING
Possui a mesma função da cláusula where , impões condições. O having é utilizado juntamente com a instrução group by. Após o agrupamento das informações podemos colocar uma ou mais condicionais.
Ex27: Selecionando estado e a quantidade de registros agrupados por estado, mas somente mostrar estados que retornem mais de um registro.
SELECT strEstado,COUNT(*) FROM TB_CLIENTE GROUP BY strEstado HAVING COUNT(*) > 1
1.2 INSERT
O objetivo da instrução insert é incluir dados em uma determinada tabela. Sintax:
INSERT INTO nomeTabela
VALUES (valor1, valor2,....)
Você pode também especificar os campos que deseja inserir um dados INSERT INTO nomeTabela (coluna1, coluna2,...)
VALUES (valor1, valor2,....) Utilizando a tabela abaixo, segue alguns exemplos de Insert
TB_CLIENTE NOCPF: bigint strNome: varchar(100) Cidade: varchar(100) strEstado: varchar(2)
Ex28: Inserir todos os dados da tabela cliente
INSERT INTO TB_CLIENTE VALUES (28440492812,'FABIO','SÃO PAULO','SP') OBS:
Quando não especificamos os campos que queremos incluir devemos colocar na cláusula values todos os valores para os campos da tabela, em nossa tabela temos 4 campos, portanto devemos fornecer 4 valores na mesma seqüência dos campos da tabela. Todo campo do tipo string (char,varchar...etc) deve ter o valor informado entre duas apóstrofes.
O Campo NOCPF é primary key da tabela, portanto não será possível inserir dois clientes com o mesmo CPF o banco irá gerar um erro de violação de chave primária.
O Campo NOCPF é um campo obrigatório por ser uma chave primária. Ex29: Inserir O CPF e o nome do cliente
INSERT INTO TB_CLIENTE (NOCPF,strNOME) VALUES (28440492510,'JOSÉ MARIA') Ex30: Inserir O CPF, Nome e estado
INSERT INTO TB_CLIENTE (NOCPF,strNOME,strEstado) VALUES (28440492420,'MARIA','SP')
Ex31 : Inserir uma nota fiscal com todos os dados
TB_CLIENTE NOCPF: bigint strNome: varchar(100) Cidade: varchar(100) strEstado: varchar(2) TB_NF NONF: bigint NOCPF: bigint DTFATURAMENTO: datetime
INSERT INTO TB_NF VALUES (1,'20050101',28440492420) OBS:
Número da nota (NONF) é a chave primária da nota fiscal, portanto não é possível inserir mais de uma nota com o mesmo número.
Existe um relacionamento entre nota fiscal (TB_NF) e cliente (TB_CLIENTE), portanto não será possível inserir uma nota fiscal com um CPF que não existe na tabela de clientes.
Datas devem ficar entre apóstrofes, o SQLSERVER vem com configuração padrão AAAAMMDD.
1.2 UPDATE A instrução update tem como objetivo alterar um ou mais dados de uma em uma tabela.
Sintax
UPDATE NOME_TABELA SET CAMPO1=VALOR1,CAMPO2=VALOR2...n WHERE CONDIÇÕES.
OBS: AS CONDIÇÕES DA CLÁUSULA WHERE SÃO AS MESMA DA MOSTRADAS NA CLÁUSULA SELECT.
Ex32: Alterar o nome do cliente com CPF= 28440492420 para Maria de lurdes. Antes
UPDATE TB_CLIENTE SET strNome='MARIA DE LURDES' WHERE NOCPF = 28440492420..
Ex33: Alterar o estado para SP e cidade para São Paulo para todos os clientes que são do estado RJ,
UPDATE TB_CLIENTE SET strEstado='SP',Cidade='SAO PAULO' WHERE strEstado='RJ' 1.3 DELETE A instrução delete tem como objetivo eliminar (apagar) registros de uma tabela. Sintax:
DELETE FROM NOME_TABELA WHERE CONDIÇÕES
OBS: AS CONDIÇÕES DA CLÁUSULA WHERE SÃO AS MESMA DA MOSTRADAS NA CLÁUSULA SELECT.
Ex34: APAGAR O CLIENTE DE CPF = 28440492420
DELETE FROM TB_CLIENTE WHERE NOCPF = 28440492420 3.BIBLIOGRAFIA
NAVATHE, ELMASRI. Sistema de banco de dados. 4º Edição. Editora Pearson. HTTP://WWW.W3SCHOOLS.COM/SQL