100% acharam este documento útil (1 voto)
105 visualizações15 páginas

Apostila RESUMIDA SQL

O documento discute a linguagem SQL, dividindo-a em seções como DDL para definição de dados, DML para manipulação de dados, e DQL para consulta de dados. Ele explica comandos importantes como SELECT, INSERT, UPDATE, DELETE e cláusulas como WHERE, GROUP BY e JOIN.
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
100% acharam este documento útil (1 voto)
105 visualizações15 páginas

Apostila RESUMIDA SQL

O documento discute a linguagem SQL, dividindo-a em seções como DDL para definição de dados, DML para manipulação de dados, e DQL para consulta de dados. Ele explica comandos importantes como SELECT, INSERT, UPDATE, DELETE e cláusulas como WHERE, GROUP BY e JOIN.
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 15

SQL - Structured Query Language - Linguagem de Consulta

Estruturada

Conteúdo

1 Introdução ao SQL .............................................................................................................. 2


2 Divisões da SQL ................................................................................................................. 2
2.2.1 COMANDO INSERT ........................................................................................................ 4
2.2.2 COMANDO UPDATE ....................................................................................................... 4
2.2.3 COMANDO DELETE........................................................................................................ 5
2.3.6 CLÁUSULA GROUP BY ..................................................................................................... 9
2.3.7 CLÁUSULA HAVING.......................................................................................................... 9
2.3.8 OPÇÃO LIMIT ................................................................................................................ 10
2.3.11 OPERADORES ............................................................................................................. 12
2.3.12 SUB-QUERY ............................................................................................................... 12
2.3.13 CLÁUSULA UNION ...................................................................................................... 13
2.3.14 CLÁUSULA JOIN ......................................................................................................... 14
2.3.15 CLÁUSULA INTO ......................................................................................................... 14

1
1 Introdução ao SQL

Structured Query Language (SQL)


Linguagem estruturada de consultas
Criada pelo Departamento de Pesquisa da IBM no início dos anos 70.
Em 1986 o American National Standard Institute (ANSI) publicou a SQL e estabeleceu como
linguagem padrão de Banco de Dados Relacional.

2 Divisões da SQL

DDL - Data Definition Languagem (Linguagem 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)

2.1 DDL - Data Definition Languagem (Linguagem de Definição de Dados)

Os comandos DDL definem a estrutura da base de dados.

CREATE – Criar
ALTER – Alterar
DROP – Excluir

Exemplos:

CREATE DATABASE
Criar um banco de dados.

CREATE DATABASE Banco;


CREATE TABLE
Criar uma tabela.

2
CREATE TABLE Tabela (Campo1 TipoCampo Not Null, Campo2 TipoCampo,
PRIMARY KEY (ChavePrimaria));

Criar a tabela copiando a estrutura de outra.


CREATE TABLE Tabela2 AS (SELECT * FROM Tabela1);

ALTER TABLE
Alterar a estrutura de uma tabela (adicionar)

ALTER TABLE Tabela1 ADD Campo1 TipoCampo, ADD FOREIGN KEY (Campo1)
REFERENCES Tabela2 (Campo2);

ALTER TABLE
Alterar a estrutura de uma tabela (modificar)

ALTER TABLE NomeTabela CHANGE CampoAtual NovoCampo Tipo;

DROP TABLE
Excluir uma tabela.

DROP TABLE Tabela;

2.2 DML - Data Manipulation Language (Linguagem de Manipulação de Dados)

Os comandos DML manipulam os dados.

INSERT – Inserir
UPDATE – Atualizar
DELETE – Excluir

3
2.2.1 Comando INSERT
Inclui um registro ao final de uma tabela contendo os valores de campo especificados.
Quando o registro a ser adicionado for de uma tabela do banco de dados, com
definição de integridade referencial, chave primária e chaves secundárias poderá haver
problemas da inserção como repetição da chave primária e campos não nulos.

Cláusulas:
INTO tabela - Define o nome da tabela (nome_de_campos) - lista dos campos do registro
que receberão os valores do VALUES
VALUES (valores) - Valores a serem atribuídos nos campos identificados. Devem estar na
mesma sequência e mesmo tipo dos campos.
Exemplo:
Incluir um registro na tabela cidades com valores correspondentes:
INSERT INTO cidades (cidade, nome, uf) VALUES ("00020","BETIM","MG")
Incluir um registro na tabela Funcions:
INSERT INTO funcions (funcionar,nome,nascimento,salario)
VALUES ("000090","MARIA JUVENTINA",ctod("05/05/80"),700)

2.2.2 Comando UPDATE

Altera valores de uma ou mais linhas da tabela especificada. Devem ser tomados os
mesmos cuidados do comando INSERT quanto a chave primária e integridade referencial.
Sintaxe:
UPDATE nome_tabela - identifica o nome da tabela SET atribuição1,atribuição n - define os
campos a serem alterados
WHERE condição - especifica os registros a serem alterados. Se a cláusula Where for
omitida a atualização será feita para todos os registros.

Exemplo:
Altere a UF da cidade 20 da tabela cidades para "RJ"
UPDATE cidades SET uf = "RJ" WHERE cidade = "00020"

Altere o salário dos funcionários da cidade "01", acrescentando 5%


UPDATE funcions SET salario = salario * 1.05 WHERE cidade = "01"

4
2.2.3 Comando DELETE

Marca um ou mais registros para exclusão. A exclusão definitiva será feita quando
utilizamos o comando PACK. Para reintegrar os registros marcados para exclusão
utilizamos o comando RECALL ALL.

Sintaxe:
DELETE FROM nome_tabela - Define o nome da tabela dos registros a serem
excluidos
WHERE condição - Especifica os registros a serem excluidos.
Exemplo:
Excluir o registro onde código do funcionário é 000735
DELETE FROM funcions WHERE funcionar = "000735"

Excluir os funcionarios que recebem mais de R$ 1000,00. Reintegre-os depois


DELETE FROM funcions WHERE salario > 1000
SELECT FUNCIONS
RECALL ALL

2.3 DQL – Data Query Language (Linguagem de Consulta de Dados)

Consulta de Dados - DQL


O único comando DQL seleciona os dados:

SELECT – Selecionar (consultar)


Selecionar uma ou mais tuplas de uma ou mais tabelas.

SELECT Campo1, Campo2, CampoN


FROM Tabela1, Tabela2, TabelaN
WHERE CondiçãoDoSELECT
ORDER BY Campo1, Campo2, CampoN
GROUP BY Campo1, Campo2, CampoN
HAVING CondiçãoDoGroupBy;

5
2.3.1 Comando Select

O comando principal do SQL é o comando recuperador de informações, o SELECT.


Este comando permite recuperar (exibir) dados de uma ou mais tabelas. Quando
utilizamos em mais de uma tabela, devemos utilizar o relacionamento de chaves primárias e
estrangeiras para transformar dois registros em um só. Na verdade, a tabela criada é
apenas lógica. Na execução do Select existem apenas duas cláusulas obrigatórias: o próprio
Select, que define as colunas a serem exibidas e o FROM, que define as tabelas que serão
utilizadas. Exemplo:
SELECT * FROM alunos
onde "*" significa que todas as colunas serão exibidas e "Alunos" é o nome da tabela.
No lugar do * (asterisco), você pode informar os campos que você deseja exibir. Também
pode alterar o nome da coluna exibida (apenas para o resultado do select). Exemplo:
SELECT aluno Código, nome, nascimento Data FROM alunos
O comando acima exibe três campos da tabela alunos, sendo que o primeiro e o
terceiro campo tiveram o nome da coluna alterada para Código e Data, respectivamente.

2.3.2 Cláusula Where

Responsável por filtrar linhas da tabela, definindo uma ou mais condições. Exemplo:
Exibir todos os campos da tabela ALUNOS onde o sexo é igual a "F":
Select * From Alunos Where sexo = "F"
Na cláusula Where podemos utilizar mais de uma condição, ligando-as com AND e
OR.
Como estas ligações lógicas são do SQL e não do aplicativo, NÃO usamos os pontos
no início e no fim (and. e .or.), utilizadas normalmente na linguagem de programação.
Outras duas opções do Where são o IN e o BETWEEN. O IN é semelhante ao OR,
podendo usar qualquer valor (numérico, data ou caracter) e seus valores de comparação
ficam entre parênteses. Usamos o IN quando os valores de comparação são mínimos ou
quando há intervalos entre eles (01 ou 05, 'A' ou 'M' ou 'T'). Já o BETWEEN é uma opção de
faixa de valores, que não contém intervalos (salários entre R$500 e R$900, nomes de 'A' até
'F'). Exemplos:
select * from alunos where cidade in ("01","04","37")
select * from alunos where sexo = "F" and turno in ("M","V")
6
select * from alunos where month(nascimento) between 1 and 6
select nome, ender, telefone from alunos where curso = ‘Informática’ or curso =
‘Engenharia’
select * from alunos where nome in ("A","C") and day(nascimento) between 10 and
20

2.3.3 Opção Like no Where

Esta opção é utilizada na pesquisa parcial de dados, como nome incompleto de


cliente, sobrenome igual a nome, etc. Para utilizar o Like, definimos que tipo de substituição
queremos em um campo caracter: substituição de um ou mais caracteres. Utilizamos:
_ (underline) : define a substituição de apenas um caracter;
% (percentual): define a substituição de uma cadeia de caracteres (string), não
importa o tamanho. Podemos usar a opção NOT para negação.
Exemplos:
Listar todas as pessoas onde o nome inicia com 'EDUARDO'
Select * From alunos Where nome Like 'EDUARDO %'

Listar todas as pessoas que possuam, nome ou sobrenome, 'PAULA'


Select * From alunos Where nome Like '% PAULA %'

Listar todas pessoas que o nome termina pela letra ‘S’


select nome from cad_livros where nome Like '%S'

Listar todos os nomes onde a segunda letra é 'A'


Select * From alunos Where nome Like '_A%'

Observação: Se precisamos pesquisar uma string que possua o sinal _ ou %,


devemos utilizar o parâmetro ESCAPE, precedendo o caracter com o simbolo informado no
ESCAPE.
Exemplo: Pesquisar palavras que iniciam com '%':
Select * From alunos Where nome Like '\%%' Escape '\'

7
2.3.4 Cláusula Order By

Ordena a exibição por uma ou mais colunas definidas (e separadas por vírgula).
Exemplo:
SELECT aluno, nome, curso
FROM Alunos
ORDER BY curso, nome

Os campos que forem usados na cláusula ORDER BY não são obrigados a aparecer
na lista definida pelo SELECT. Após o nome da coluna ordenada, podemos usar a opção
DESC para ordenar de forma descendente, senão a opção ASC (ascendente) que já é
padrão. Podemos substituir o nome do campo pelo seu número da posição no select.
Exemplo:
SELECT aluno, nome, curso FROM alunos ORDER BY 3, 2

2.3.5 Funções e Operadores relacionais da linguagem SQL


O SQL possui funções próprias que calculam valores agrupando mais de uma
linha. Pode ser a contagem de linhas (registros) ou um cálculo com um campo numérico da
tabela.
AVG() : calcula a média de uma coluna de dados numéricos.
COUNT(): conta o número de itens selecionado em uma coluna.
MIN() : determina o menor valor de Item_Selecionado em uma coluna.
MAX() : determina o maior valor de Item_Selecionado em uma coluna.
SUM() : totaliza uma coluna de dados numéricos.

Exemplos:
Qual é a média de débitos dos alunos da cidade "01"
Select avg(debito) from alunos where cidade = "01"

Quantos alunos do sexo feminino estudam o curso "02"


select count(*) from alunos where sexo = "F" and curso = "02"

Qual é o menor e o maior débito dos alunos do turno matutino

8
select min(debito), max(debito) from alunos where turno = "M"

Qual é a soma e quantos alunos devem acima de R$ 100,00


select sum(debito), count(*) from alunos where debito > 100

Qual é o menor valor de uma coluna chamada valor da tabela mercadorias


select min(valor) from mercadorias

Os Operadores relacionais do da Linguagem SQL são:


igual =
diferente <>
maior >
menor <
maior ou igual >=
menor ou igual <=

2.3.6 Cláusula Group By

Agrupa as linhas de consulta com base nos valores de uma ou mais colunas. O
parâmetro pode ser o nome do campo ou seu número no resultado do comando Select. A
cláusula Group By é muito útil quando a utilizamos para trabalhar junto às funções do
comando Select, como encontrar a soma de um campo numérico, dependendo de outro
campo (sum), ou simplesmente contar o número de registro agrupados (count). Exemplo:
Quantos alunos existem em cada curso?
Select curso, count(*) Quantidade From alunos GROUP BY CURSO
Quantos alunos estudam por turno e curso?
Select turno, curso, count(*) From alunos GROUP BY 1, CURSO

2.3.7 Cláusula Having


Especifica uma condição de filtragem que os grupos devem satisfazer para que
sejam incluídos nos resultados da consulta. HAVING deve ser utilizada com GROUP BY.
Ela pode incluir quantas condições de filtragem você desejar, conectadas com o operador
AND ou OR.

9
Você também pode utilizar NOT para inverter o valor de uma expressão lógica.
A maior importância da cláusula Having é ser utilizada como o WHERE, porém
para oresultado do GROUP BY. No where, não há como utilizar as funções do SELECT
dentro do where (sum, count, min ...); somente o HAVING aceita estas funções na filtragem.
Exemplo:
Quantos alunos existem em cada curso? Exiba apenas os que possuem 44 alunos.
Select curso, count(*) Quantidade From alunos group by curso
HAVING count(*) = 44
Quantos alunos estudam por turno e curso, onde o menor débito é igual a
R$10,00?
Select turno, curso, count(*) From alunos GROUP BY 1, CURSO
HAVING MIN(DEBITO) = 10

2.3.8 Opção Limit


Executa uma query onde o resultado da consulta contém um número específico de
linhas no resultado da consulta. Você deve incluir uma cláusula ORDER BY quando incluir a
cláusula Limit. A cláusula ORDER BY especifica as colunas nas quais a cláusula Limit
determina o número de linhas para incluir no resultado da consulta.
Observação: se o campo ordenado se repetir (data, valor) podemos ter mais linhas
do que definimos.
Exemplos:
Selecionar apenas as 5 primeiras linhas de alunos ordenada pela chave primária
Select aluno, nome From alunos Order By nome limit 5

Quais são os dois maiores débitos de alunos?


Select aluno, nome, debito from alunos order by debito desc limit 2

Quais são os as 5 primeiras linhas da tabela funcionários, mostrando os campos


nome e salario ordenados de forma ascendente pelo campo nome

Quais são as 5 primeiras linhas da tabela funcionários, mostrando os campos


nome e salário ordenados de forma ascendente pelo campo nome
Select nome,salário from funcionarios order by nome

10
2.3.9 Opção Distinct
Uma seleção padrão é executada com a opção ALL, que trabalha com todas as
linhas da(s) tabela(s). A opção DISTINCT exclui linhas duplicadas das colunas
selecionadas.
Observação: Você só pode utilizar DISTINCT uma vez em cada SELECT.
Exemplo:
Exibir as linhas existentes da tabela alunos que combinam cidade e turno:
Select Distinct cidade, turno from alunos

2.3.10 Relacionamento (Join)

Para criarmos um banco de dados, a análise dos dados (utilizando Ferramentas


CASE) deve gerar informações normalizadas para não haver armazenamento redundante. A
partir do DER (Diagrama Entidade-Relacionamento) ligamos as chaves primárias às chaves
estrangeiras para identificar as relações entre tabelas. No SQL, esta ligação sempre deve
ser informada no comando para recuperar uma Query que pode possuir campos de mais de
uma tabela. Por exemplo, no comando Select, para exibir o código do funcionário e a UF da
sua cidade devemos executar:
SELECT funcions.funcionario, cidades.uf FROM funcions, cidades
WHERE funcions.cidade = cidades.cidade
Note que o campo PODE ser precedido do nome da tabela mais um ponto, para
mostrar de qual tabela corresponde o campo. Se exibir nomes de campo iguais de duas
tabelas, você DEVE colocar o nome da tabela antes do campo. Exemplo:
SELECT funcions.nome, cidades.nome FROM funcions, cidades
WHERE funcions.cidade = cidades.cidade
De qualquer forma, sempre a condição de ligação é a comparação entre chave
primária e chave estrangeira. NUNCA esqueça de colocar esta condição de ligação, senão
haverá uma geração de relacionamento errado (N para N inválido). O nome da tabela pode
ser substituído, na identificação dos campos, por um apelido (alias). Desta forma, você
estará customizando a digitação do comando. Exemplo:
SELECT f.funcionario, f.nome, c.cidade, c.nome, c.uf FROM funcions F, cidades C
WHERE f.cidade = C.cidade

11
A Query exibida não é uma tabela (ou visão) física. É lógica. Por isso, não haverá
criação física (no HD) de uma nova tabela.
Cuidado: se há join com duas tabelas, há uma condição de ligação. Se há join com
mais de duas tabelas, haverá mais de uma condição de ligação. Exemplo:
SELECT f.nome, c.nome, e.nome FROM funcions f, cidades c, estab e
WHERE f.cidade = c.cidade AND f.estab = e.estab

2.3.11 Operadores

As colunas recuperadas pelo comando SELECT, até agora, foram atributos das
tabelas em sua forma simples ou utilizando funções do aplicativo (val(), month(), year(), etc).
Mas também podemos gerar colunas que são resultados de cálculos aritméticos, utilizando
operadores como: +, -, *, /, **. Exemplos:
Exiba o nome do funcionário e seu salário com aumento de 5%
SELECT nome, salario * 1.05 Com_Aumento FROM funcions
Exiba a duplicata 10 com o valor menos R$3,00 e o campo pago dividido por 3
SELECT duplicata, valor - 33 Valor, pago / 3 Dividido FROM duplics
Por falta de exemplo, digite o comando abaixo
SELECT nome, 3 ** 3 Potencia FROM funcions where salario > 1400
Outros exemplos de alteração das colunas recuperadas são a concatenação e as
funções substr() e iif(). Normalmente são utilizados para emissão de relatório ou consultas:
Exiba dia e ano do nascimento e código mais nome concatenados dos funcionarios
SELECT substr(dtoc(nascimento),1,5), funcionar+' - '+nome FROM funcions
Exiba o valor das duplicatas e 'alto ' se valor é maior que R$20,00 senão 'baixo'
SELECT valor, iif(valor>20,'alto ','baixo') FROM duplics

2.3.12 Sub-Query

A cláusula WHERE do comando Select serve para filtrar, com condições, o número
de linhas recuperadas numa query. Porém, pode haver situação que a condição não pode
ser concretizada com as informações atuais do Select. Para isso, usamos o resultado de um
Select para auxiliar na condição da cláusula WHERE, tendo um select dentro de outro select
(Sub-Query). Exemplo:
Quais são os funcionários que recebem mais que a média de todo o cadastro?

12
Forma Simples:
Select avg(salario) from funcions (para achar o salario medio: 348,85)
Select * from funcions where salario > 348.85
.SUB-QUERY:
Select * from funcions where salario > (select avg(salario) from funcions)

Quais são os funcionários do mesmo estabelecimento dos funcionários 24 e 127?


Select * from funcions where estab in
(select estab from funcions where val(funcionar) in (24,127))

OBSERVAÇÕES:
. Atenção com a quantidade de linhas do segundo select. Se retornar uma linha, pode-se
utilizar =, >, <, <>. Se retornar mais de uma linha, TEM que utilizar IN.
. Repare nos exemplos acima: o resultado da sub-query deve ser sempre compatível com
o campo da condição do Select principal.

2.3.13 Cláusula UNION

Combina os resultados finais de um SELECT com os resultados finais de outro


SELECT. Como padrão, UNION verifica os resultados combinados e elimina linhas
duplicadas. Utilizando ALL, o comando não elimina linhas duplicadas.
Observações Importantes para o UNION:
Não é possível utilizar UNION para combinar subconsultas;
Os dois comandos SELECT devem ter o mesmo número de colunas na saída da consulta;
Cada coluna nos resultados da consulta de um SELECT deve ter o mesmo tipo de dado e a
mesma largura da coluna correspondente ao outro SELECT;
Se uma cláusula ORDER BY estiver incluída, ela afetará o resultado inteiro. Só utilize
número de coluna. Exemplos:
Crie uma query exibindo os bancos e estabelecimentos em ordem alfabética:
Select * from bancos UNION Select * from estabs order by 2
Crie uma query exibindo os bancos e cidades em ordem alfabética (estruturas
diferentes):
Select banco+space(3),nome+space(10),space(2) from bancos UNION
Select cidade, nome, uf from cidades order by 2
UNION mais complexo. Junte um select de totais de cooperados por banco e outro
select de cooperados. Exiba na ordem de sub-totais e cooperados por banco:

13
Select 1,count(*),banco,space(32) from cooperados group by 3 UNION
Select 2,val(cooperado),banco,nome from cooperados order by 3,1

2.3.14 Cláusula JOIN

Normalmente, criamos querys com relacionamentos entre tabelas para saber


informações que possuem realmente relacionamento (nome do estabelecimento do
funcionario, nome da uf do funcionario, etc). Porém, em algum momento, podemos precisar
justamente do contrário, isto é, registros que não se relacionam com a outra tabela. Motivo:
a chave primária de uma tabela não existe na chave secundária de outra tabela.
INNER JOIN - especifica que o resultado da consulta contém somente linhas de
uma tabela, que correspondem a uma ou mais linhas em outra tabela. O mesmo uso do
Where que conhecemos.
LEFT JOIN - especifica que o resultado da consulta contém todas as linhas da
tabela à esquerda da palavra-chave JOIN, correspondendo apenas às linhas da tabela à
direita da palavra-chave JOIN.
RIGHT JOIN - especifica que o resultado da consulta contém todas as linhas da
tabela à direita da palavra-chave JOIN, correspondendo apenas às linhas da tabela à
esquerda da palavra-chave JOIN.
FULL JOIN - especifica que o resultado da consulta contém todas as linhas
correspondentes e não correspondentes de ambas as tabelas.
ON - especifica as condições para as quais as tabelas são associadas.

EXEMPLO:
Quais são as cidades que não possuem nenhum aluno cadastrado de sua procedência:
SELECT a.cidade, c.cidade, c.nome from alunos a RIGHT JOIN cidades c ON a.cidade =
c.cidade where a.cidade = space(2)

2.3.15 Cláusula INTO

Especifica onde os resultados da consulta devem ser armazenados. Destino pode


ser:
TABLE - Cria um arquivo do tipo DBF
CURSOR - Cria um cursor temporário. Mais utilizado para relatórios.

14
ARRAY - Cria uma variável matriz do tamanho do número de linhas x colunas da
query, onde a primeira ocorrência é a linha e a Segunda ocorrência é a coluna.

EXEMPLOS:
Crie uma tabela de alunos da cidade 04 chamada cidade04.dbf:
SELECT * from alunos where cidade = "04" INTO TABLE cidade04
Crie um curso com código e nome do aluno e nome da sua cidade:
SELECT a.aluno,a.nome,c.nome from alunos a, cidades c where a.cidade =
c.cidade INTO CURSOR alunocid
Gere em uma variável matriz a quantidade de alunos da cidade 04:
SELECT COUNT(*) from alunos where cidade = "04" INTO ARRAY x

15

Você também pode gostar

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy