Você está na página 1de 99

Introdução ao 

SQL

SQL é uma linguagem padrão para acessar e manipular bancos de


dados.

O que é SQL?
 SQL significa Structured Query Language
 SQL permite acessar e manipular bancos de dados
 SQL é um (American National Standards Institute) padrão ANSI

O que pode SQL fazer?


 SQL pode executar consultas contra um banco de dados
 SQL pode recuperar dados de um banco de dados
 SQL pode inserir registros em um banco de dados
 SQL pode atualizar registros em um banco de dados
 SQL pode excluir registros de um banco de dados
 SQL pode criar novos bancos de dados
 SQL pode criar novas tabelas numa base de dados
 SQL pode criar procedimentos armazenados em um banco de
dados
 SQL pode criar visualizações em um banco de dados
 SQL pode definir permissões em tabelas, procedimentos e
visualizações

SQL é um padrão - MAS ....


Embora SQL é um padrão ANSI (American National Standards Institute),
existem diferentes versões da linguagem SQL.

No entanto, para estar em conformidade com a norma ANSI, que todo o


suporte, pelo menos, os comandos principais (tais como SELECT,
UPDATE, DELETE, INSERT, ONDE) de uma forma semelhante.
Nota: A maioria dos programas de banco de dados SQL também têm
suas próprias extensões proprietárias, além do padrão SQL!

Usando SQL em seu Web site


Para construir um site que mostra dados de um banco de dados, você
vai precisar de:

 Um programa de banco de dados RDBMS (ou seja, MS Access,


SQL Server, MySQL)
 Para usar uma linguagem de script do lado do servidor, como PHP
ou ASP
 Para usar SQL para obter os dados que deseja
 Para usar HTML / CSS para estilizar a página

RDBMS
RDBMS significa Relational Database Management System.

RDBMS é a base para SQL, e para todos os sistemas de banco de dados


modernos, tais como MS SQL Server, IBM DB2, Oracle, MySQL e
Microsoft Access.

Os dados em RDBMS é armazenado no banco de dados objetos chamado


tabelas. Uma tabela é uma coleção de entradas de dados relacionados e
consiste em colunas e linhas.

Olhe para a tabela "Clientes":

Exemplo
SELECT * FROM Customers;
Tente você mesmo "

Cada tabela é dividida em entidades menores chamados campos. Os


campos na tabela Clientes consistem em CustomerID, CustomerName,
ContactName, Endereço, Cidade, PostalCode e País. Um campo é uma
coluna em uma tabela que é projetado para manter informações
específicas sobre cada registro na tabela.

Um registro, também chamado de uma linha, é cada entrada individual


que existe em uma tabela. Por exemplo, há 91 registros na tabela
Clientes acima. Um registro é uma entidade horizontal na tabela.
Uma coluna é uma entidade verticais em uma tabela que contém toda a
informação associada com um campo específico em uma tabela.

CustomerI CustomerName ContactName Address City PostalCode C


D

1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 G

2 Ana Trujillo Ana Trujillo Avda. de la México 05021 M


Emparedados y Constitución D.F.
helados 2222

3 Antonio Moreno Antonio Mataderos 2312 México 05023 M


Taquería Moreno D.F.

4 Around the Horn Thomas Hardy 120 Hanover Sq. London WA1 1DP U

5 Berglunds snabbköp Christina Berguvsvägen 8 Luleå S-958 22 S


Berglund

SQL Sintaxe

Tabelas de banco de dados


Um banco de dados mais frequentemente contém uma ou mais
tabelas. Cada tabela é identificado por um nome (por exemplo,
"Clientes" ou "Orders"). Tabelas conter registos (linhas) com dados.
Neste tutorial, vamos utilizar o banco de dados de exemplo Adamastor
bem conhecido (incluído no MS Access e MS SQL Server).

Abaixo está uma seleção da tabela "Clientes":

A tabela acima contém cinco registros (um para cada cliente) e sete
colunas (CustomerID, CustomerName, ContactName, Endereço, Cidade,
PostalCode e País).

Instruções SQL
A maioria das ações que precisam ser executadas em um banco de
dados é feito com instruções SQL.

A seguinte instrução SQL seleciona todos os registros na tabela


"Clientes":

Exemplo
SELECT * FROM Customers;
Tente você mesmo "

Neste tutorial, vamos ensinar-lhe tudo sobre os diferentes instruções


SQL.

Tenha em mente que...


 palavras-chave SQL não são sensíveis: escolha é o mesmo que
SELECIONAR

Neste tutorial vamos escrever todas as palavras-chave SQL em


maiúsculas.

Ponto e vírgula após instruções SQL?


Alguns sistemas de banco de dados requer um ponto e vírgula no final
de cada instrução SQL.
Ponto e vírgula é a maneira padrão para separar cada instrução SQL em
bancos de dados que permitem mais de uma instrução SQL para ser
executado na mesma chamada para o servidor.

Neste tutorial, vamos usar ponto e vírgula no final de cada instrução


SQL.

Alguns dos mais importantes comandos


SQL
 SELECIONE - extrai dados de um banco de dados
 ATUALIZAÇÃO - atualiza dados em um banco de dados
 APAGAR - exclui dados de um banco de dados
 INSERT INTO - insere novos dados em um banco de dados
 CREATE DATABASE - cria um novo banco de dados
 ALTER DATABASE - modifica um banco de dados
 CREATE TABLE - cria uma nova tabela
 ALTER TABLE - modifica uma tabela
 DROP TABLE - exclui uma tabela
 CREATE INDEX - cria uma (chave de pesquisa) índice
 DROP INDEX - exclui um índice

A instrução SQL SELECT


A instrução SELECT é usada para selecionar dados de um banco de
dados.

Os dados retornados são armazenadas em uma tabela de resultados,


chamou o resultado-set.

Sintaxe SELECT
SELECT column1, column2, ...
FROM table_name;

Aqui, column1, column2, ... são os nomes dos campos da tabela que
você deseja selecionar dados. Se você quiser selecionar todos os campos
disponíveis na tabela, use a seguinte sintaxe:

SELECT * FROM table_name;
Banco de dados de demonstração
Abaixo está uma seleção da tabela "Clientes" no banco de dados de
exemplo Adamastor:

CustomerI CustomerName ContactName Address City PostalCod Country


D e

1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany

2 Ana Trujillo Emparedados Ana Trujillo Avda. de la México 05021 Mexico


y helados Constitución 2222 D.F.

3 Antonio Moreno Taquería Antonio Mataderos 2312 México 05023 Mexico


Moreno D.F.

4 Around the Horn Thomas Hardy 120 Hanover Sq. London WA1 1DP UK

5 Berglunds snabbköp Christina Berguvsvägen 8 Luleå S-958 22 Sweden


Berglund

Exemplo Coluna Select


A seguinte instrução SQL seleciona os "CustomerName" e colunas
"Cidade" da tabela "Clientes":

Exemplo
SELECT CustomerName, City FROM Customers;
SELECT * Exemplo
A seguinte instrução SQL seleciona todas as colunas da tabela
"Clientes":

Exemplo
SELECT * FROM Customers;

A Declaração DISTINCT SQL SELECT


A instrução SELECT DISTINCT é usada para retornar somente valores
distintos (diferentes).

Dentro de uma tabela, uma coluna, muitas vezes contém muitos valores
duplicados; e às vezes você só quer listar os diferentes valores
(distintas).

CustomerI CustomerName ContactName Address City PostalCod Country


D e

1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany

2 Ana Trujillo Emparedados Ana Trujillo Avda. de la México 05021 Mexico


y helados Constitución 2222 D.F.

3 Antonio Moreno Taquería Antonio Mataderos 2312 México 05023 Mexico


Moreno D.F.

4 Around the Horn Thomas Hardy 120 Hanover Sq. London WA1 1DP UK
5 Berglunds snabbköp Christina Berguvsvägen 8 Luleå S-958 22 Sweden
Berglund

A instrução SELECT DISTINCT é usada para retornar somente valores


distintos (diferentes).

Sintaxe SELECT DISTINCT


SELECT DISTINCT column1, column2, ...
FROM table_name;

Banco de dados de demonstração


Abaixo está uma seleção da tabela "Clientes" no banco de dados de
exemplo Adamastor:

Exemplo SELECCIONAR
A instrução SQL a seguir seleciona todos os valores (e duplicar) a partir
da coluna "País" na tabela "Clientes":

Exemplo
SELECT Country FROM Customers;

Agora, vamos usar a palavra-chave DISTINCT com a instrução SELECT


acima e veja o resultado.

Escolher exemplos DISTINTAS


A seguinte instrução SQL seleciona apenas os valores distintos na coluna
"País" na tabela "Clientes":
Exemplo
SELECT DISTINCT Country FROM Customers;

A seguinte instrução SQL lista o número de diferentes (distintos) países


clientes:

Exemplo
SELECT COUNT(DISTINCT Country) FROM Customers;

Nota: O exemplo acima não irá funcionar no Firefox e Microsoft


Edge! Porque COUNT (DISTINCT column_name ) não é suportada em
bases de dados do Microsoft Access. Firefox e Microsoft Edge estiver
usando o Microsoft Access em nossos exemplos.

Aqui está a solução para MS Access:

Exemplo
SELECT Count(*) AS DistinctCountries
FROM (SELECT DISTINCT Country FROM Customers);

O SQL WHERE da cláusula


A cláusula WHERE é usada para filtrar registos.

A cláusula WHERE é usada para extrair somente os registros que


atendem uma condição especificada.

ONDE Sintaxe
SELECT column1, column2, ...
FROM table_name
WHERE condition;

Nota: A cláusula WHERE não é usada apenas na instrução SELECT, ele


também é usado em UPDATE, DELETE, etc.!

Banco de dados de demonstração


Abaixo está uma seleção da tabela "Clientes" no banco de dados de
exemplo Adamastor:
CustomerID CustomerName ContactName Address Ci

1 Alfreds Futterkiste Maria Anders Obere Str. 57 Be

2 Ana Trujillo Emparedados y helados Ana Trujillo Avda. de la Constitución 2222 M


D.

3 Antonio Moreno Taquería Antonio Moreno Mataderos 2312 M


D.

4 Around the Horn Thomas Hardy 120 Hanover Sq. Lo

5 Berglunds snabbköp Christina Berglund Berguvsvägen 8 Lu

ONDE Exemplo cláusula


A seguinte instrução SQL seleciona todos os clientes do país "México", na
tabela "Clientes":

Exemplo
SELECT * FROM Customers
WHERE Country='Mexico';

Tente você mesmo "


Campos de texto vs. campos numéricos
SQL requer aspas simples em torno de valores de texto (a maioria dos
sistemas de banco de dados também permitirá aspas).

No entanto, os campos numéricos não deve estar entre aspas:

Exemplo
SELECT * FROM Customers
WHERE CustomerID=1;

Operadores na cláusula WHERE


Os seguintes operadores podem ser usados na cláusula WHERE:

Operator Description

= Equal

<> Not equal. Note: In some versions of SQL this operator may be written
as !=

> Greater than

< Less than

>= Greater than or equal

<= Less than or equal


BETWEEN Between an inclusive range

LIKE Search for a pattern

IN To specify multiple possible values for a column

O SQL AND, OR e NOT Operadores


A cláusula WHERE pode ser combinado com AND, OR e NOT operadores.

A operadores AND e OR são usados para filtrar registros com base em


mais de uma condição:

 O operador AND exibe um registro se todas as condições


separados por e é verdadeira.
 O operador OU exibe uma ficha, se qualquer das condições
separados por OR é TRUE.

O operador NOT exibe um registro se a condição (s) não é verdade.

e sintaxe
SELECT column1, column2, ...
FROM table_name
WHERE condition1 AND condition2 AND condition3 ...;

OR Sintaxe
SELECT column1, column2, ...
FROM table_name
WHERE condition1 OR condition2 OR condition3 ...;

NÃO Sintaxe
SELECT column1, column2, ...
FROM table_name
WHERE NOT condition;
Banco de dados de demonstração
Abaixo está uma seleção da tabela "Clientes" no banco de dados de
exemplo Adamastor:

CustomerI CustomerName ContactName Address City


D

1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berl

2 Ana Trujillo Emparedados y Ana Trujillo Avda. de la Constitución Méx


helados 2222 D.F

3 Antonio Moreno Taquería Antonio Moreno Mataderos 2312 Méx


D.F

4 Around the Horn Thomas Hardy 120 Hanover Sq. Lon

5 Berglunds snabbköp Christina Berguvsvägen 8 Lule


Berglund

E Exemplo
A seguinte instrução SQL seleciona todos os campos de "Clientes", onde
país é "Alemanha" E da cidade é "Berlin":
Exemplo
SELECT * FROM Customers
WHERE Country='Germany' AND City='Berlin';

Exemplo OR
A seguinte instrução SQL seleciona todos os campos de "Clientes" em
que cidade é "Berlin" ou "München":

Exemplo
SELECT * FROM Customers
WHERE City='Berlin' OR City='München';

Exemplo NÃO
A seguinte instrução SQL seleciona todos os campos de "Clientes" em
que país não é "Alemanha":

Exemplo
SELECT * FROM Customers
WHERE NOT Country='Germany';

Combinando AND, OR e NOT


Você também pode combinar o AND, OR e NOT operadores.

A seguinte instrução SQL seleciona todos os campos de "Clientes", onde


país é "Alemanha" E da cidade deve ser "Berlin" OR "München" (uso de
parênteses para formar expressões complexas):

Exemplo
SELECT * FROM Customers
WHERE Country='Germany' AND (City='Berlin' OR City='München');
A seguinte instrução SQL seleciona todos os campos de "Clientes" em
que país não é "Alemanha" e não "EUA":

Exemplo
SELECT * FROM Customers
WHERE NOT Country='Germany' AND NOT Country='USA';

O SQL ORDER BY Keyword


A ORDER BY palavra-chave é usado para classificar o resultado-set em
ordem crescente ou decrescente.

A ORDER BY palavra-chave classifica os registros em ordem crescente


por padrão. Para classificar os registros em ordem decrescente, use a
palavra-chave DESC.

ORDER BY Sintaxe
SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC;

Banco de dados de demonstração


Abaixo está uma seleção da tabela "Clientes" no banco de dados de
exemplo Adamastor:

CustomerID CustomerName ContactName Address Ci

1 Alfreds Futterkiste Maria Anders Obere Str. 57 Be

2 Ana Trujillo Emparedados y helados Ana Trujillo Avda. de la Constitución 2222 M


D.
3 Antonio Moreno Taquería Antonio Moreno Mataderos 2312 M
D.

4 Around the Horn Thomas Hardy 120 Hanover Sq. Lo

5 Berglunds snabbköp Christina Berglund Berguvsvägen 8 Lu

ORDEM POR Exemplo


A seguinte instrução SQL seleciona todos os clientes da tabela
"Clientes", classificadas pela coluna "País":

Exemplo
SELECT * FROM Customers
ORDER BY Country;

Tente você mesmo "

ORDEM POR Exemplo DESC


A seguinte instrução SQL seleciona todos os clientes da tabela
"Clientes", classificado decrescente pela coluna "País":

Exemplo
SELECT * FROM Customers
ORDER BY Country DESC;

Tente você mesmo "


ORDEM por colunas Vários Exemplo
A seguinte instrução SQL seleciona todos os clientes da tabela
"Clientes", classificado pela "País" e a coluna "CustomerName":

Exemplo
SELECT * FROM Customers
ORDER BY Country, CustomerName;

Tente você mesmo "

ORDEM por várias colunas Exemplo 2


A seguinte instrução SQL seleciona todos os clientes da tabela
"Clientes", classificado ascendente pelo "País" e descendo pela coluna
"CustomerName":

Exemplo
SELECT * FROM Customers
ORDER BY Country ASC, CustomerName DESC;

O SQL ORER BY Keyword


A ORDER BY palavra-chave é usado para classificar o resultado-set em
ordem crescente ou decrescente.

A ORDER BY palavra-chave classifica os registros em ordem crescente


por padrão. Para classificar os registros em ordem decrescente, use a
palavra-chave DESC.

Address City PostalCode Country


Obere Str. 57 Berlin 12209 Germany

Avda. de la Constitución 2222 México D.F. 05021 Mexico

Mataderos 2312 México D.F. 05023 Mexico

120 Hanover Sq. London WA1 1DP UK

Berguvsvägen 8 Luleå S-958 22 Sweden

ORDEM POR Exemplo


A seguinte instrução SQL seleciona todos os clientes da tabela
"Clientes", classificadas pela coluna "País":

Exemplo
SELECT * FROM Customers
ORDER BY Country;

ORDEM POR Exemplo DESC


A seguinte instrução SQL seleciona todos os clientes da tabela
"Clientes", classificado decrescente pela coluna "País":

Exemplo
SELECT * FROM Customers
ORDER BY Country DESC;

A instrução SQL INSERT INTO


A instrução INSERT INTO é usado para inserir novos registros em uma
tabela.

INSERT INTO Sintaxe


É possível escrever a instrução INSERT INTO de duas maneiras.

A primeira maneira especifica ambos os nomes das colunas e os valores


a serem inseridos:

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

Se você estiver adicionando valores para todas as colunas da tabela,


você não precisa especificar os nomes das colunas na consulta SQL. No
entanto, certifique-se a ordem dos valores está na mesma ordem que as
colunas na tabela. O INSERT INTO sintaxe seria da seguinte forma:

INSERT INTO table_name
VALUES (value1, value2, value3, ...);

Banco de dados de demonstração


Abaixo está uma seleção da tabela "Clientes" no banco de dados de
exemplo Adamastor:

CustomerI CustomerName ContactName Address City PostalCode Country


D

89 White Clover Karl Jablonski 305 - 14th Ave. S. Seattle 98128 USA
Markets Suite 3B

90 Wilman Kala Matti Keskuskatu 45 Helsinki 21240 Finland


Karttunen
91 Wolski Zbyszek ul. Filtrowa 68 Walla 01-012 Poland

Exemplo INSERÇÃO EM
A seguinte instrução SQL insere um novo registro na tabela "Clientes":

Exemplo
INSERT INTO Customers (CustomerName, ContactName, Address, City,
PostalCode, Country)
VALUES ('Cardinal', 'Tom B. Erichsen', 'Skagen
21', 'Stavanger', '4006', 'Norway');

Tente você mesmo "

A seleção da tabela "Clientes" agora se parece com isso:

CustomerI CustomerName ContactName Address City PostalCode Country


D

89 White Clover Karl Jablonski 305 - 14th Ave. S. Seattle 98128 USA
Markets Suite 3B

90 Wilman Kala Matti Keskuskatu 45 Helsinki 21240 Finland


Karttunen

91 Wolski Zbyszek ul. Filtrowa 68 Walla 01-012 Poland


92 Cardinal Tom B. Skagen 21 Stavange 4006 Norway
Erichsen r

Você notou que não inserir qualquer número no campo


Identificação do Cliente? 
A coluna CustomerID é um auto-incremento de campo e será gerado
automaticamente quando um novo registro é inserido na tabela.

Inserir dados Apenas em colunas


especificadas
É também possível só para inserir dados em colunas específicas.

A seguinte instrução SQL irá inserir um novo registro, mas apenas


inserir dados no "CustomerName", "City", e colunas "País" (Cliente será
atualizado automaticamente):

Exemplo
INSERT INTO Customers (CustomerName, City, Country)
VALUES ('Cardinal', 'Stavanger', 'Norway');

A seleção da tabela "Clientes" agora se parece com isso:

CustomerI CustomerName ContactName Address City PostalCode Country


D

89 White Clover Karl Jablonski 305 - 14th Ave. S. Seattle 98128 USA
Markets Suite 3B

90 Wilman Kala Matti Keskuskatu 45 Helsinki 21240 Finland


Karttunen
91 Wolski Zbyszek ul. Filtrowa 68 Walla 01-012 Poland

92 Cardinal null null  Stavange null Norway


r

O que é um valor nulo?


Um campo com um valor NULL é um campo sem valor.

Se um campo em uma tabela é opcional, é possível inserir um novo


registro ou atualizar um registro, sem acrescentar um valor a este
campo. Em seguida, o campo será salvo com um valor NULL.

Nota: É muito importante compreender que um valor NULL é diferente


de um valor zero ou um campo que contém espaços. Um campo com um
valor NULL é aquele que foi deixado em branco durante a criação do
registro!

Como testar valores nulos?


Não é possível testar para valores nulos com operadores de comparação,
como =, <ou <>.

Vamos ter que usar o IS NULL e IS NOT operadores NULL vez.

IS NULL Sintaxe
SELECT column_names
FROM table_name
WHERE column_name IS NULL;

IS NOT NULL Sintaxe


SELECT column_names
FROM table_name
WHERE column_name IS NOT NULL;
Banco de dados de demonstração
Suponha que temos a seguinte tabela "Pessoas":

ID LastName FirstName Address City

1 Doe John 542 W. 27th Street New York

2 Bloggs Joe   London

3 Roe Jane   New York

4 Smith John 110 Bishopsgate London

Suponha que a coluna "Endereço" na tabela "Pessoas" é opcional. Se um


registro é inserido, sem valor para o "Endereço", na coluna "Endereço"
será salvo com um valor NULL.

O NULL operador é
A seguinte instrução SQL usa o operador IS NULL para listar todas as
pessoas que não têm endereço:

SELECT LastName, FirstName, Address FROM Persons


WHERE Address IS NULL;

O resultado-set será parecido com este:


LastName FirstName Address

Bloggs Joe  

Roe Jane  

Dica: Utilize sempre IS NULL para procurar valores nulos.

O NÃO É Operador NULL


A seguinte instrução SQL usa o NÃO É operador NULL para listar todas
as pessoas que têm um endereço:

SELECT LastName, FirstName, Address FROM Persons


WHERE Address IS NOT NULL;

O resultado-set será parecido com este:

LastName FirstName Address

Doe John 542 W. 27th Street

Smith John 110 Bishopsgate

A instrução SQL ATUALIZAÇÃO


A instrução UPDATE é usado para modificar os registros existentes em
uma tabela.

ATUALIZAÇÃO Sintaxe
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

Nota: Tenha cuidado ao atualizar registros em uma tabela! Observe a


cláusula WHERE na instrução UPDATE. A cláusula WHERE especifica que
registro (s) que deve ser atualizado. Se você omitir a cláusula WHERE,
todos os registros na tabela será atualizado!

Banco de dados de demonstração


Abaixo está uma seleção da tabela "Clientes" no banco de dados de
exemplo Adamastor:

CustomerID CustomerName ContactName Address City PostalCode Country

1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany

2 Ana Trujillo Ana Trujillo Avda. de la México 05021 Mexico


Emparedados y Constitución D.F.
helados 2222

3 Antonio Moreno Antonio Mataderos 2312 México 05023 Mexico


Taquería Moreno D.F.

4 Around the Horn Thomas Hardy 120 Hanover Sq. London WA1 1DP UK
5 Berglunds snabbköp Christina Berguvsvägen 8 Luleå S-958 22 Sweden
Berglund

atualizar a tabela
A instrução SQL a seguir atualiza o primeiro cliente (CustomerID = 1)
com uma nova pessoa de contato e uma nova cidade.

Exemplo
UPDATE Customers
SET ContactName = 'Alfred Schmidt', City= 'Frankfurt'
WHERE CustomerID = 1;

Tente você mesmo "

A seleção da tabela "Clientes" agora se parece com isso:

CustomerI CustomerName ContactName Address City PostalCode Country


D

1 Alfreds Futterkiste Alfred Schmidt Obere Str. 57 Frankfurt 12209 Germany

2 Ana Trujillo Ana Trujillo Avda. de la México 05021 Mexico


Emparedados y Constitución D.F.
helados 2222

3 Antonio Moreno Antonio Mataderos México 05023 Mexico


Taquería Moreno 2312 D.F.

4 Around the Horn Thomas Hardy 120 Hanover London WA1 1DP UK
Sq.

5 Berglunds snabbköp Christina Berguvsvägen 8 Luleå S-958 22 Sweden


Berglund

Atualizar vários registros


É a cláusula WHERE que determina quantos registros que serão
atualizados.

A seguinte instrução SQL irá atualizar o contactname para "Juan" para


todos os registros em que país é "México":

Exemplo
UPDATE Customers
SET ContactName='Juan'
WHERE Country='Mexico';

Tente você mesmo "

A seleção da tabela "Clientes" agora se parece com isso:

CustomerI CustomerName ContactName Address City PostalCode Country


D

1 Alfreds Futterkiste Alfred Schmidt Obere Str. 57 Frankfurt 12209 Germany


2 Ana Trujillo Juan Avda. de la México 05021 Mexico
Emparedados y Constitución D.F.
helados 2222

3 Antonio Moreno Juan Mataderos México 05023 Mexico


Taquería 2312 D.F.

4 Around the Horn Thomas Hardy 120 Hanover London WA1 1DP UK
Sq.

5 Berglunds snabbköp Christina Berguvsvägen 8 Luleå S-958 22 Sweden


Berglund

Atualização Aviso!
Tenha cuidado ao atualizar registros. Se você omitir a cláusula WHERE,
todos os registros serão atualizados!

Exemplo
UPDATE Customers
SET ContactName='Juan';

Tente você mesmo "

A seleção da tabela "Clientes" agora se parece com isso:

CustomerI CustomerName ContactName Address City PostalCode Country


D
1 Alfreds Futterkiste Juan Obere Str. 57 Frankfurt 12209 Germany

2 Ana Trujillo Juan Avda. de la México 05021 Mexico


Emparedados y Constitución D.F.
helados 2222

3 Antonio Moreno Juan Mataderos 2312 México 05023 Mexico


Taquería D.F.

4 Around the Horn Juan 120 Hanover Sq. London WA1 1DP UK

5 Berglunds snabbköp Juan Berguvsvägen 8 Luleå S-958 22 Sweden

A instrução DELETE SQL


A instrução DELETE é usado para excluir os registros existentes em uma
tabela.

APAGAR Sintaxe
DELETE FROM table_name
WHERE condition;

Nota: Tenha cuidado ao excluir registros em uma tabela! Observe a


cláusula WHERE na instrução DELETE. A cláusula WHERE especifica que
ficha (s) que deve ser eliminado. Se você omitir a cláusula WHERE,
todos os registros na tabela serão apagados!
Banco de dados de demonstração
Abaixo está uma seleção da tabela "Clientes" no banco de dados de
exemplo Adamastor:

CustomerID CustomerName ContactName Address City PostalCode Country

1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany

2 Ana Trujillo Ana Trujillo Avda. de la México 05021 Mexico


Emparedados y Constitución D.F.
helados 2222

3 Antonio Moreno Antonio Mataderos 2312 México 05023 Mexico


Taquería Moreno D.F.

4 Around the Horn Thomas Hardy 120 Hanover Sq. London WA1 1DP UK

5 Berglunds snabbköp Christina Berguvsvägen 8 Luleå S-958 22 Sweden


Berglund

SQL APAGAR Exemplo


A seguinte instrução SQL exclui o cliente "Alfreds Futterkiste" da tabela
"Clientes":
Exemplo
DELETE FROM Customers
WHERE CustomerName='Alfreds Futterkiste';

Tente você mesmo "

A tabela "Clientes" agora se parece com isso:

CustomerI CustomerName ContactName Address City PostalCode Country


D

2 Ana Trujillo Ana Trujillo Avda. de la México 05021 Mexico


Emparedados y Constitución D.F.
helados 2222

3 Antonio Moreno Antonio Mataderos 2312 México 05023 Mexico


Taquería Moreno D.F.

4 Around the Horn Thomas Hardy 120 Hanover Sq. London WA1 1DP UK

5 Berglunds snabbköp Christina Berguvsvägen 8 Luleå S-958 22 Sweden


Berglund

Excluir todos os registros


É possível excluir todas as linhas em uma tabela sem excluir a
tabela. Isto significa que a estrutura da tabela, atributos, e os índices
será intactos:

DELETE FROM table_name;

ou:
DELETE * FROM table_name;

A cláusula SQL SELECT TOP


A cláusula SELECT TOP é usado para especificar o número de registros
para retornar.

A cláusula SELECT TOP é útil em grandes mesas com milhares de


registros. Retornando um grande número de registros podem ter
impacto sobre o desempenho.

Nota: Nem todos os sistemas de banco de dados suporta a cláusula TOP


SELECT. MySQL suporta a cláusula LIMIT para selecionar um número
limitado de registros, enquanto a Oracle usa ROWNUM.

SQL Server / MS Access Sintaxe:

SELECT TOP number|percent column_name(s)
FROM table_name
WHERE condition;

MySQL Sintaxe:

SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT number;

A Oracle Sintaxe:

SELECT column_name(s)
FROM table_name
WHERE ROWNUM <= number;

Banco de dados de demonstração


Abaixo está uma seleção da tabela "Clientes" no banco de dados de
exemplo Adamastor:
CustomerID CustomerName ContactName Address City PostalCode Country

1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany

2 Ana Trujillo Ana Trujillo Avda. de la México 05021 Mexico


Emparedados y Constitución D.F.
helados 2222

3 Antonio Moreno Antonio Mataderos 2312 México 05023 Mexico


Taquería Moreno D.F.

4 Around the Horn Thomas Hardy 120 Hanover Sq. London WA1 1DP UK

5 Berglunds snabbköp Christina Berguvsvägen 8 Luleå S-958 22 Sweden


Berglund

SQL Top, limitar e ROWNUM Exemplos


A seguinte instrução SQL seleciona os três primeiros registros da tabela
"Clientes":

Exemplo
SELECT TOP 3 * FROM Customers;

Tente você mesmo "


A seguinte instrução SQL mostra o exemplo equivalente usando a
cláusula LIMIT:

Exemplo
SELECT * FROM Customers
LIMIT 3;

Tente você mesmo "

A seguinte instrução SQL mostra o exemplo equivalente usando


ROWNUM:

Exemplo
SELECT * FROM Customers
WHERE ROWNUM <= 3;

SQL SUPERIOR POR CENTO Exemplo


A seguinte instrução SQL seleciona o primeiro de 50% dos registros da
tabela "Clientes":

Exemplo
SELECT TOP 50 PERCENT * FROM Customers;

Tente você mesmo "

ADD uma cláusula WHERE


A seguinte instrução SQL seleciona os três primeiros registros da tabela
"Clientes", onde o país é "Alemanha":

Exemplo
SELECT TOP 3 * FROM Customers
WHERE Country='Germany';

Tente você mesmo "


A seguinte instrução SQL mostra o exemplo equivalente usando a
cláusula LIMIT:

Exemplo
SELECT * FROM Customers
WHERE Country='Germany'
LIMIT 3;

Tente você mesmo "

A seguinte instrução SQL mostra o exemplo equivalente usando


ROWNUM:

Exemplo
SELECT * FROM Customers
WHERE Country='Germany' AND ROWNUM <= 3;

O MIN SQL () e MAX () Funções


A função MIN () retorna o menor valor da coluna seleccionada.

A função MAX () retorna o maior valor da coluna seleccionada.

MIN () Sintaxe
SELECT MIN(column_name)
FROM table_name
WHERE condition;

MAX () Sintaxe
SELECT MAX(column_name)
FROM table_name
WHERE condition;

Banco de dados de demonstração


Abaixo está uma seleção da tabela de "Produtos" no banco de dados de
exemplo Adamastor:
ProductID ProductName SupplierID CategoryID Unit Price

1 Chais 1 1 10 boxes x 20 bags 18

2 Chang 1 1 24 - 12 oz bottles 19

3 Aniseed Syrup 1 2 12 - 550 ml bottles 10

4 Chef Anton's Cajun Seasoning 2 2 48 - 6 oz jars 22

5 Chef Anton's Gumbo Mix 2 2 36 boxes 21.35

MIN () Exemplo
A seguinte instrução SQL encontra o preço do produto mais barato:

Exemplo
SELECT MIN(Price) AS SmallestPrice
FROM Products;

Tente você mesmo "

MAX () Exemplo
A seguinte instrução SQL encontra o preço do produto mais caro:

Exemplo
SELECT MAX(Price) AS LargestPrice
FROM Products;

Tente você mesmo "

A contagem de SQL (), AVG () e SUM ()


Funções
A função COUNT () retorna o número de linhas que corresponde a um
critério especificado.

A função AVG () retorna o valor médio de uma coluna numérica.

A função de soma () retorna a soma total de uma coluna numérica.

COUNT () Sintaxe
SELECT COUNT(column_name)
FROM table_name
WHERE condition;

AVG () Sintaxe
SELECT AVG(column_name)
FROM table_name
WHERE condition;

SUM () Sintaxe
SELECT SUM(column_name)
FROM table_name
WHERE condition;

Banco de dados de demonstração


Abaixo está uma seleção da tabela de "Produtos" no banco de dados de
exemplo Adamastor:

ProductID ProductName SupplierID CategoryID Unit Price


1 Chais 1 1 10 boxes x 20 bags 18

2 Chang 1 1 24 - 12 oz bottles 19

3 Aniseed Syrup 1 2 12 - 550 ml bottles 10

4 Chef Anton's Cajun Seasoning 2 2 48 - 6 oz jars 22

5 Chef Anton's Gumbo Mix 2 2 36 boxes 21.35

COUNT () Exemplo
A seguinte instrução SQL encontra o número de produtos:

Exemplo
SELECT COUNT(ProductID)
FROM Products;

Tente você mesmo "

AVG () Exemplo
A seguinte instrução SQL encontra o preço médio de todos os produtos:

Exemplo
SELECT AVG(Price)
FROM Products;
Tente você mesmo "

Banco de dados de demonstração


Abaixo está uma seleção da mesa "OrderDetails" no banco de dados de
exemplo Adamastor:

OrderDetailID OrderID ProductID Quantity

1 10248 11 12

2 10248 42 10

3 10248 72 5

4 10249 14 9

5 10249 51 40

SUM () Exemplo
A seguinte instrução SQL localiza a soma dos campos "Quantidade" na
tabela "OrderDetails":

Exemplo
SELECT SUM(Quantity)
FROM OrderDetails;
O operador LIKE SQL
O operador LIKE é utilizado em uma cláusula WHERE para pesquisar um
padrão especificado em uma coluna.

Existem dois caracteres universais usados em conjunção com o operador


LIKE:

 % - O sinal de porcentagem representa zero, um, ou vários


personagens
 _ - O sublinhado representa um único caractere

Nota: MS Access usa um ponto de interrogação em vez do sublinhado


(_) (?).

O sinal de porcentagem e o sublinhado também pode ser usado em


combinações!

COMO Sintaxe
SELECT column1, column2, ...
FROM table_name
WHERE columnN LIKE pattern;

Dica: Você também pode combinar qualquer número de condições com


AND ou OR operadores.

Aqui estão alguns exemplos que mostram diferentes operadores LIKE


com '%' e '_' wildcards:

LIKE Operator Description

WHERE CustomerName LIKE Finds any values that starts with "a"
'a%'

WHERE CustomerName LIKE Finds any values that ends with "a"
'%a'
WHERE CustomerName LIKE Finds any values that have "or" in any position
'%or%'

WHERE CustomerName LIKE Finds any values that have "r" in the second position
'_r%'

WHERE CustomerName LIKE Finds any values that starts with "a" and are at least
'a_%_%' 3 characters in length

WHERE ContactName LIKE 'a Finds any values that starts with "a" and ends with
%o' "o"

Banco de dados de demonstração


Abaixo está uma seleção da tabela "Clientes" no banco de dados de
exemplo Adamastor:

CustomerI CustomerNam ContactNam Address City PostalCod Country


D e e e

1 Alfreds Maria Anders Obere Str. 57 Berlin 12209 German


Futterkiste y

2 Ana Trujillo Ana Trujillo Avda. de la México 05021 Mexico


Emparedados y Constitución D.F.
helados 2222

3 Antonio Antonio Mataderos México 05023 Mexico


Moreno
Taquería Moreno 2312 D.F.

4 Around the Thomas 120 Hanover Londo WA1 1DP UK


Horn Hardy Sq. n

5 Berglunds Christina Berguvsväge Luleå S-958 22 Sweden


snabbköp Berglund n8

Exemplos SQL COMO


A seguinte instrução SQL seleciona todos os clientes com um
CustomerName começando com "a":

Exemplo
SELECT * FROM Customers
WHERE CustomerName LIKE 'a%';
Tente você mesmo "

A seguinte instrução SQL seleciona todos os clientes com um


CustomerName terminando com "a":

Exemplo
SELECT * FROM Customers
WHERE CustomerName LIKE '%a';
Tente você mesmo "

A seguinte instrução SQL seleciona todos os clientes com um


CustomerName que tem "ou" em qualquer posição:

Exemplo
SELECT * FROM Customers
WHERE CustomerName LIKE '%or%';
Tente você mesmo "
A seguinte instrução SQL seleciona todos os clientes com um
CustomerName que tem "r" na segunda posição:

Exemplo
SELECT * FROM Customers
WHERE CustomerName LIKE '_r%';
Tente você mesmo "

A seguinte instrução SQL seleciona todos os clientes com um


CustomerName que começa com "a" e são pelo menos 3 caracteres de
comprimento:

Exemplo
SELECT * FROM Customers
WHERE CustomerName LIKE 'a_%_%';
Tente você mesmo "

A seguinte instrução SQL seleciona todos os clientes com um


NomeDoContato que começa com "a" e termina com "o":

Exemplo
SELECT * FROM Customers
WHERE ContactName LIKE 'a%o';
Tente você mesmo "

A seguinte instrução SQL seleciona todos os clientes com um


CustomerName que não começa com "a":

Exemplo
SELECT * FROM Customers
WHERE CustomerName NOT LIKE 'a%';

Personagens SQL curinga


Um caractere curinga é usado para substituir qualquer outro
personagem (s) em uma string.

Os caracteres curinga são usados com o SQL COMO operador. O


operador LIKE é utilizado em uma cláusula WHERE para pesquisar um
padrão especificado em uma coluna. 
Existem dois caracteres universais usados em conjunção com o operador
LIKE:

 % - O sinal de porcentagem representa zero, um, ou vários


personagens
 _ - O sublinhado representa um único caractere

Nota: MS Access usa um ponto de interrogação em vez do sublinhado


(_) (?).

Em MS Access e SQL Server, você também pode usar:

 [ Charlist ] - Define conjuntos e intervalos de caracteres para


combinar
 [^ Charlist ] ou [! charlist ] - Define conjuntos e intervalos de
caracteres NÃO para combinar

Os curingas também podem ser usados em combinações!

Aqui estão alguns exemplos que mostram diferentes operadores LIKE


com '%' e '_' wildcards:

LIKE Operator Description

WHERE CustomerName LIKE 'a%' Finds any values that starts with "a"

WHERE CustomerName LIKE '%a' Finds any values that ends with "a"

WHERE CustomerName LIKE '%or%' Finds any values that have "or" in any position

WHERE CustomerName LIKE '_r%' Finds any values that have "r" in the second position

WHERE CustomerName LIKE 'a_%_%' Finds any values that starts with "a" and are at least 3 charac

WHERE ContactName LIKE 'a%o' Finds any values that starts with "a" and ends with "o"
Banco de dados de demonstração
Abaixo está uma seleção da tabela "Clientes" no banco de dados de
exemplo Adamastor:

CustomerID CustomerName ContactName Address Ci

1 Alfreds Futterkiste Maria Anders Obere Str. 57 Be

2 Ana Trujillo Emparedados y helados Ana Trujillo Avda. de la Constitución 2222 M


D.

3 Antonio Moreno Taquería Antonio Moreno Mataderos 2312 M


D.

4 Around the Horn Thomas Hardy 120 Hanover Sq. Lo

5 Berglunds snabbköp Christina Berglund Berguvsvägen 8 Lu

Usando o Wildcard%
A seguinte instrução SQL seleciona todos os clientes com uma cidade
começando com "ber":
Exemplo
SELECT * FROM Customers
WHERE City LIKE 'ber%';

Tente você mesmo "

A seguinte instrução SQL seleciona todos os clientes com uma cidade


que contém o padrão "es": 

Exemplo
SELECT * FROM Customers
WHERE City LIKE '%es%';

Tente você mesmo "

Usando o _ Wildcard
A seguinte instrução SQL seleciona todos os clientes com uma cidade
começando com qualquer personagem, seguido por "erlin":

Exemplo
SELECT * FROM Customers
WHERE City LIKE '_erlin';

Tente você mesmo "

A seguinte instrução SQL seleciona todos os clientes com uma cidade


começando com "L", seguido de qualquer caractere, seguido por "n",
seguido de qualquer caractere, seguido por "on":

Exemplo
SELECT * FROM Customers
WHERE City LIKE 'L_n_on';

Tente você mesmo "

Usando o [charlist] Wildcard


A seguinte instrução SQL seleciona todos os clientes com uma cidade
que começa com "b", "s" ou "p":

Exemplo
SELECT * FROM Customers
WHERE City LIKE '[bsp]%';

Tente você mesmo "

A seguinte instrução SQL seleciona todos os clientes com uma cidade


começando com "a", "b" ou "c":

Exemplo
SELECT * FROM Customers
WHERE City LIKE '[a-c]%';

Tente você mesmo "

Usando o [! Charlist] Wildcard


Os dois seguintes instruções SQL selecionar todos os clientes com uma
cidade não começa com "b", "s" ou "p":

Exemplo
SELECT * FROM Customers
WHERE City LIKE '[!bsp]%';

Tente você mesmo "

Ou:

Exemplo
SELECT * FROM Customers
WHERE City NOT LIKE '[bsp]%';

Tente você mesmo "

O SQL na operadora
O operador IN permite que você especifique vários valores em uma
cláusula WHERE.

O operador IN é uma forma abreviada para múltiplas ou condições.

Na sintaxe
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1, value2, ...);

ou:

SELECT column_name(s)
FROM table_name
WHERE column_name IN (SELECT STATEMENT);

Banco de dados de demonstração


Abaixo está uma seleção da tabela "Clientes" no banco de dados de
exemplo Adamastor:

CustomerID CustomerName ContactName Address City PostalCode Country

1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany

2 Ana Trujillo Ana Trujillo Avda. de la México 05021 Mexico


Emparedados y Constitución D.F.
helados 2222

3 Antonio Moreno Antonio Mataderos 2312 México 05023 Mexico


Taquería Moreno D.F.

4 Around the Horn Thomas Hardy 120 Hanover Sq. London WA1 1DP UK
5 Berglunds snabbköp Christina Berguvsvägen 8 Luleå S-958 22 Sweden
Berglund

Nos Exemplos operador


A seguinte instrução SQL seleciona todos os clientes que estão
localizados em "Alemanha", "França" e "UK":

Exemplo
SELECT * FROM Customers
WHERE Country IN ('Germany', 'France', 'UK');

Tente você mesmo "

A seguinte instrução SQL seleciona todos os clientes que não estão


localizados em "Alemanha", "França" ou "UK":

Exemplo
SELECT * FROM Customers
WHERE Country NOT IN ('Germany', 'France', 'UK');

Tente você mesmo "

A seguinte instrução SQL seleciona todos os clientes que são dos


mesmos países como os fornecedores:

Exemplo
SELECT * FROM Customers
WHERE Country IN (SELECT Country FROM Suppliers);
O SQL entre o operador
O operador selecciona ENTRE valores dentro de uma determinada
gama. Os valores podem ser números, texto ou datas.

O operador ENTRE é inclusiva: começam e valores finais estão incluídos. 

ENTRE Sintaxe
SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;

Banco de dados de demonstração


Abaixo está uma seleção da tabela de "Produtos" no banco de dados de
exemplo Adamastor:

ProductID ProductName SupplierID CategoryID Unit Price

1 Chais 1 1 10 boxes x 20 bags 18

2 Chang 1 1 24 - 12 oz bottles 19

3 Aniseed Syrup 1 2 12 - 550 ml bottles 10

4 Chef Anton's Cajun Seasoning 1 2 48 - 6 oz jars 22

5 Chef Anton's Gumbo Mix 1 2 36 boxes 21.35


ENTRE Exemplo
A seguinte instrução SQL seleciona todos os produtos com um preço
entre 10 e 20:

Exemplo
SELECT * FROM Products
WHERE Price BETWEEN 10 AND 20;

Tente você mesmo "

NÃO ENTRE Exemplo


Para exibir os produtos fora do alcance do exemplo anterior, não use
ENTRE:

Exemplo
SELECT * FROM Products
WHERE Price NOT BETWEEN 10 AND 20;

Tente você mesmo "

ENTRE com EM Exemplo


A seguinte instrução SQL seleciona todos os produtos com um preço
entre 10 e 20. Além disso; não mostram produtos com uma CategoryID
de 1,2, ou 3:

Exemplo
SELECT * FROM Products
WHERE (Price BETWEEN 10 AND 20)
AND NOT CategoryID IN (1,2,3);

Tente você mesmo "

Entre texto Valores Exemplo


A seguinte instrução SQL seleciona todos os produtos com um
ProductName ENTRE 'Carnarvon tigres' e 'Mozzarella di Giovanni':

Exemplo
SELECT * FROM Products
WHERE ProductName BETWEEN 'Carnarvon Tigers' AND 'Mozzarella di
Giovanni'
ORDER BY ProductName;

Tente você mesmo "

NÃO ENTRE Texto Valores Exemplo


A seguinte instrução SQL seleciona todos os produtos com um
ProductName NÃO ENTRE 'Carnarvon tigres' e 'Mozzarella di Giovanni':

Exemplo
SELECT * FROM Products
WHERE ProductName NOT BETWEEN 'Carnarvon Tigers' AND 'Mozzarella di
Giovanni'
ORDER BY ProductName;

Tente você mesmo "

Tabela amostra
Abaixo está uma seleção da tabela "Pedidos" na base de dados de
exemplo Adamastor:
OrderID CustomerID EmployeeID OrderDate ShipperID

10248 90 5 7/4/1996 3

10249 81 6 7/5/1996 1

10250 34 4 7/8/1996 2

10251 84 3 7/9/1996 1

10252 76 4 7/10/1996 2

Entre as datas Exemplo


A seguinte instrução SQL seleciona todas as ordens com um OrderDate
ENTRE '04-julho-1996' e '09-julho-1996' :

Exemplo
SELECT * FROM Orders
WHERE OrderDate BETWEEN #07/04/1996# AND #07/09/1996#;

SQL Aliases
aliases SQL são utilizados para dar uma tabela ou uma coluna em uma
tabela, um nome temporário.
Aliases são muitas vezes utilizados para fazer os nomes das colunas
mais legível.

Um alias só existe para a duração da consulta.

Alias Column Sintaxe


SELECT column_name AS alias_name
FROM table_name;

Alias Tabela Sintaxe


SELECT column_name(s)
FROM table_name AS alias_name;

Banco de dados de demonstração


Neste tutorial, vamos utilizar o banco de dados conhecido exemplo
Adamastor.

Abaixo está uma seleção da tabela "Clientes":

CustomerI CustomerName ContactName Address City PostalCod Country


D e

2 Ana Trujillo Ana Trujillo Avda. de la México 05021 Mexico


Emparedados y Constitución D.F.
helados 2222

3 Antonio Moreno Antonio Mataderos México 05023 Mexico


Taquería Moreno 2312 D.F.

4 Around the Horn Thomas 120 Hanover London WA1 1DP UK


Hardy Sq.

E uma seleção da tabela "Orders":


OrderID CustomerID EmployeeID OrderDate ShipperID

10354 58 8 1996-11-14 3

10355 4 6 1996-11-15 1

10356 86 6 1996-11-18 2

Alias para colunas Exemplos


A instrução SQL a seguir cria dois apelidos, um para a coluna
CustomerID e uma para a coluna CustomerName:

Exemplo
SELECT CustomerID as ID, CustomerName AS Customer
FROM Customers;
Tente você mesmo "

A instrução SQL a seguir cria dois apelidos, um para a coluna


CustomerName e um para a coluna ContactName. Nota:Isso requer
aspas duplas ou colchetes se o nome de alias contém espaços:

Exemplo
SELECT CustomerName AS Customer, ContactName AS [Contact Person]
FROM Customers;
Tente você mesmo "

A seguinte instrução SQL cria um alias chamado "Endereço", que


combinam quatro colunas (endereço, Cep, cidade e país):

Exemplo
SELECT CustomerName, Address + ', ' + PostalCode + ' ' + City
+ ', ' + Country AS Address
FROM Customers;
Tente você mesmo "

Nota: Para obter a instrução SQL acima para trabalhar em MySQL use o


seguinte:

SELECT CustomerName, CONCAT(Address,', ',PostalCode,', ',City,',


',Country) AS Address
FROM Customers;

Alias para Tabelas Exemplo


A instrução SQL a seguir seleciona todas as ordens do cliente com
CustomerID = 4 (Around the Horn). Nós usamos os "Clientes" e
"Pedidos" mesas, e dar-lhes os aliases de tabela de "c" e "o",
respectivamente (Aqui usamos aliases para tornar o SQL mais curta):

Exemplo
SELECT o.OrderID, o.OrderDate, c.CustomerName
FROM Customers AS c, Orders AS o
WHERE c.CustomerName="Around the
Horn" AND c.CustomerID=o.CustomerID;
Tente você mesmo "

A seguinte instrução SQL é o mesmo que acima, mas sem aliases:

Exemplo
SELECT Orders.OrderID, Orders.OrderDate, Customers.CustomerName
FROM Customers, Orders
WHERE Customers.CustomerName="Around the
Horn" AND Customers.CustomerID=Orders.CustomerID;
Tente você mesmo "

Aliases pode ser útil quando:

 Há mais de uma tabela envolvida em uma consulta


 As funções são usadas na consulta
 Os nomes de coluna são grandes ou não muito legível
 Dois ou mais colunas são combinados em conjunto
A cláusula JOIN é usado para combinar as linhas de duas ou mais
tabelas, com base em uma coluna relacionada entre eles.

Vamos olhar para uma seleção da tabela "Orders":

OrderID CustomerID OrderDate

10308 2 1996-09-18

10309 37 1996-09-19

10310 77 1996-09-20

Então, olhe para uma seleção da tabela "Clientes":

CustomerID CustomerName ContactName Country

1 Alfreds Futterkiste Maria Anders Germany

2 Ana Trujillo Emparedados y helados Ana Trujillo Mexico

3 Antonio Moreno Taquería Antonio Moreno Mexico

Observe que a coluna "Cliente" na tabela "Orders" refere-se ao "Cliente"


na tabela "Clientes". A relação entre os dois quadros acima é a coluna de
"Cliente".

Então, podemos criar a seguinte instrução SQL (que contém um INNER


JOIN), que seleciona registros que possuem valores correspondentes em
ambas as tabelas:
Exemplo
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID;
Tente você mesmo "

e que irá produzir algo como isto:

OrderID CustomerName OrderDate

10308 Ana Trujillo Emparedados y helados 9/18/1996

10365 Antonio Moreno Taquería 11/27/1996

10383 Around the Horn 12/16/1996

10355 Around the Horn 11/15/1996

10278 Berglunds snabbköp 8/12/1996

Diferentes tipos de uniões SQL


Aqui estão os diferentes tipos da junta-SQL:

 (INNER) Cadastre- : retorna registros que possuem valores


correspondentes em ambas as tabelas
 LEFT (EXTERIOR) Cadastre- : Return todos os registros da
tabela à esquerda, e os registros correspondentes da tabela direita
 RIGHT (EXTERIOR) Cadastre- : Return todos os registros da
tabela à direita, e os registros correspondentes da tabela da
esquerda
 CHEIA (EXTERIOR) Cadastre- : Return todos os registros
quando há um jogo em qualquer tabela à esquerda ou à direita

    

    

SQL INNER JOIN Keyword


O INNER JOIN chave seleciona registros que possuem valores
correspondentes em ambas as tabelas.

INNER JOIN sintaxe


SELECT column_name(s)
FROM table1
INNER JOIN table2 ON table1.column_name = table2.column_name;

Banco de dados de demonstração


Neste tutorial, vamos utilizar o banco de dados conhecido exemplo
Adamastor.

Abaixo está uma seleção da tabela "Orders":

OrderID CustomerID EmployeeID OrderDate ShipperID

10308 2 7 1996-09-18 3

10309 37 3 1996-09-19 1

10310 77 8 1996-09-20 2

E uma seleção da tabela "Clientes":

CustomerID CustomerName ContactName Address City PostalCode Country

1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany

2 Ana Trujillo Ana Trujillo Avda. de la Méxic 05021 Mexico


Emparedados y Constitución o D.F.
helados 2222

3 Antonio Moreno Antonio Mataderos Méxic 05023 Mexico


Taquería Moreno 2312 o D.F.
SQL INNER JOIN Exemplo
A seguinte instrução SQL seleciona todas as ordens com as informações
do cliente:

Exemplo
SELECT Orders.OrderID, Customers.CustomerName
FROM Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;

Tente você mesmo "

Nota: A palavra-chave INNER JOIN seleciona todas as linhas de ambas


as tabelas, desde que existe uma correspondência entre as colunas. Se
houver registros na tabela "Pedidos" que não têm jogos em "Clientes",
estas ordens não será exibido!

 Juntar três Tabelas


A seguinte instrução SQL seleciona todas as ordens com as informações
do cliente e expedidor:

Exemplo
SELECT Orders.OrderID, Customers.CustomerName, Shippers.ShipperName
FROM ((Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID)
INNER JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID);

Tente você mesmo "

SQL LEFT JOIN Keyword


O LEFT JOIN retorna palavra-chave todos os registros da tabela
esquerda (Tabela 1), e os registros correspondentes da tabela direita
(table2). O resultado é NULL do lado direito, se não houver
correspondência.

LEFT JOIN sintaxe


SELECT column_name(s)
FROM table1
LEFT JOIN table2 ON table1.column_name = table2.column_name;

Nota: Em alguns bancos de dados LEFT JOIN é chamado LEFT OUTER


JOIN.

Banco de dados de demonstração


Neste tutorial, vamos utilizar o banco de dados conhecido exemplo
Adamastor.

Abaixo está uma seleção da tabela "Clientes":

CustomerID CustomerName ContactName Address City PostalCode Country

1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany

2 Ana Trujillo Ana Trujillo Avda. de la Méxic 05021 Mexico


Emparedados y Constitución o D.F.
helados 2222

3 Antonio Moreno Antonio Mataderos Méxic 05023 Mexico


Taquería Moreno 2312 o D.F.

E uma seleção da tabela "Orders":


OrderID CustomerID EmployeeID OrderDate ShipperID

10308 2 7 1996-09-18 3

10309 37 3 1996-09-19 1

10310 77 8 1996-09-20 2

SQL LEFT JOIN Exemplo


A seguinte instrução SQL irá selecionar todos os clientes, e quaisquer
ordens que pode ter:

Exemplo
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID
ORDER BY Customers.CustomerName;

Tente você mesmo "

Nota: O LEFT JOIN retorna palavra-chave todos os registros da tabela


esquerda (clientes), mesmo se não houver nenhuma correspondência na
tabela à direita (ordens).
SQL RIGHT JOIN Keyword
O direito JOIN retorna palavra-chave todos os registros da tabela direita
(table2), e os registros correspondentes da tabela esquerda (Tabela
1). O resultado é NULL do lado esquerdo, quando não há jogo.

RIGHT JOIN sintaxe


SELECT column_name(s)
FROM table1
RIGHT JOIN table2 ON table1.column_name = table2.column_name;

Nota: Em alguns bancos de dados RIGHT JOIN é chamado RIGHT


OUTER JOIN.

Banco de dados de demonstração


Neste tutorial, vamos utilizar o banco de dados conhecido exemplo
Adamastor.

Abaixo está uma seleção da tabela "Orders":

OrderID CustomerID EmployeeID OrderDate ShipperID

10308 2 7 1996-09-18 3

10309 37 3 1996-09-19 1
10310 77 8 1996-09-20 2

E uma seleção da tabela "Employees":

EmployeeID LastName FirstName BirthDate Photo

1 Davolio Nancy 12/8/1968 EmpID1.pic

2 Fuller Andrew 2/19/1952 EmpID2.pic

3 Leverling Janet 8/30/1963 EmpID3.pic

SQL RIGHT JOIN Exemplo


A seguinte instrução SQL retornará todos os funcionários, e quaisquer
ordens que possam ter se colocado:

Exemplo
SELECT Orders.OrderID, Employees.LastName, Employees.FirstName
FROM Orders
RIGHT JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID
ORDER BY Orders.OrderID;

Tente você mesmo "

Nota: o direito JOIN retorna palavra-chave todos os registros da tabela


direita (empregados), mesmo se não houver nenhuma correspondência
na tabela esquerda (ordens).
SQL FULL OUTER Cadastre Keyword
O FULL OUTER Cadastre retorno palavra-chave todos os registros
quando há uma partida em qualquer esquerda (Tabela 1) ou direita
registros (table2) de mesa.

Nota: FULL OUTER Cadastre potencialmente pode voltar muito grandes


de resultados conjuntos!

CHEIO EXTERIOR Sintaxe JOIN


SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2 ON table1.column_name = table2.column_name;

Banco de dados de demonstração


Neste tutorial, vamos utilizar o banco de dados conhecido exemplo
Adamastor.

Abaixo está uma seleção da tabela "Clientes":

CustomerID CustomerName ContactName Address City PostalCode Country

1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany

2 Ana Trujillo Ana Trujillo Avda. de la Méxic 05021 Mexico


Emparedados y Constitución o D.F.
helados 2222

3 Antonio Moreno Antonio Mataderos Méxic 05023 Mexico


Taquería Moreno 2312 o D.F.

E uma seleção da tabela "Orders":

OrderID CustomerID EmployeeID OrderDate ShipperID

103081 2 7 1996-09-18 3

10309 37 3 1996-09-19 1

10310 77 8 1996-09-20 2

SQL completa OUTER JOIN Exemplo


A seguinte instrução SQL seleciona todos os clientes, e todas as ordens:

SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
FULL OUTER JOIN Orders ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CustomerName;

A seleção do conjunto de resultados pode ser parecido com este:

CustomerName OrderID
Alfreds Futterkiste  

Ana Trujillo Emparedados y helados 10308

Antonio Moreno Taquería 10365

  10382

  10351

Nota: A FULL OUTER JOIN retorna-chave todas as linhas da tabela


esquerda (clientes), e todas as linhas da tabela direita (ordens). Se
houver linhas em "Clientes" que não têm jogos em "Pedidos", ou se
houver linhas em "Pedidos" que não têm jogos no "Clientes", essas
linhas serão listados também.

SQL Auto Cadastre


A auto JOIN é participar de um regular, mas a tabela está unido com ele
mesmo.

Auto Sintaxe JOIN


SELECT column_name(s)
FROM table1 T1, table1 T2
WHERE condition;

Banco de dados de demonstração


Neste tutorial, vamos utilizar o banco de dados conhecido exemplo
Adamastor.

Abaixo está uma seleção da tabela "Clientes":

Custom Customer ContactN Addres City PostalC Count


erID Name ame s ode ry

1 Alfreds Maria Obere Berl 12209 Germ


Futterkiste Anders Str. 57 in any

2 Ana Trujillo Ana Avda. Mé 05021 Mexic


Emparedad Trujillo de la xico o
os y Constit D.F.
helados ución
2222

3 Antonio Antonio Matade Mé 05023 Mexic


Moreno Moreno ros xico o
Taquería 2312 D.F.

SQL Auto Cadastre Exemplo


A seguinte instrução SQL corresponde clientes que são da mesma
cidade:

Exemplo
SELECT A.CustomerName AS CustomerName1,
B.CustomerName AS CustomerName2, A.City
FROM Customers A, Customers B
WHERE A.CustomerID <> B.CustomerID
AND A.City = B.City 
ORDER BY A.City;
O operador de união SQL
O operador UNION é usado para combinar o resultado-conjunto de duas
ou mais instruções SELECT.

 Cada instrução SELECT dentro UNION devem ter o mesmo número


de colunas
 As colunas também devem ter tipos de dados semelhantes
 As colunas em cada instrução SELECT também devem estar na
mesma ordem

UNIÃO Sintaxe
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;

UNION ALL Sintaxe


O operador selecciona UNIÃO apenas valores distintos por padrão. Para
permitir valores duplicados, uso UNION ALL:

SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;

Nota: Os nomes das colunas no resultado-set são geralmente iguais aos


nomes das colunas na primeira instrução SELECT na União.

Banco de dados de demonstração


Neste tutorial, vamos utilizar o banco de dados conhecido exemplo
Adamastor.

Abaixo está uma seleção da tabela "Clientes":

CustomerID CustomerName ContactNam Address City PostalCod Country


e e
1 Alfreds Maria Anders Obere Str. Berlin 12209 Germany
Futterkiste 57

2 Ana Trujillo Ana Trujillo Avda. de la México 05021 Mexico


Emparedados y Constitución D.F.
helados 2222

3 Antonio Moreno Antonio Mataderos México 05023 Mexico


Taquería Moreno 2312 D.F.

E uma seleção da tabela de "Fornecedores":

SupplierID SupplierName ContactName Address City PostalCode Country

1 Exotic Liquid Charlotte 49 London EC1 4SD UK


Cooper Gilbert
St.

2 New Orleans Shelley Burke P.O. Box New 70117 USA


Cajun Delights 78934 Orleans

3 Grandma Regina 707 Ann 48104 USA


Kelly's Murphy Oxford Arbor
Homestead Rd.

SQL Exemplo UNIÃO


A seguinte instrução SQL seleciona todas as cidades diferentes (apenas
valores distintos) de "Clientes" e "Fornecedores":

Exemplo
SELECT City FROM Customers
UNION
SELECT City FROM Suppliers
ORDER BY City;
Tente você mesmo "

Nota: Se alguns clientes ou fornecedores têm a mesma cidade, cada


cidade só será listada uma vez, porque UNIÃO seleciona apenas valores
distintos. Use UNION ALL também selecionar valores duplicados!

SQL UNION ALL Exemplo


A seguinte instrução SQL seleciona todas as cidades (valores duplicados
também) de "Clientes" e "Fornecedores":

Exemplo
SELECT City FROM Customers
UNION ALL
SELECT City FROM Suppliers
ORDER BY City;
Tente você mesmo "

UNIÃO SQL com o local onde


A seguinte instrução SQL seleciona todos os diferentes cidades alemãs
(apenas valores distintos) de "Clientes" e "Fornecedores":

Exemplo
SELECT City, Country FROM Customers
WHERE Country='Germany'
UNION
SELECT City, Country FROM Suppliers
WHERE Country='Germany'
ORDER BY City;
Tente você mesmo "
UNIÃO SQL TODOS ONDE
A seguinte instrução SQL seleciona todas as cidades alemãs (valores
duplicados também) de "Clientes" e "Fornecedores":

Exemplo
SELECT City, Country FROM Customers
WHERE Country='Germany'
UNION ALL
SELECT City, Country FROM Suppliers
WHERE Country='Germany'
ORDER BY City;
Tente você mesmo "

Outra Exemplo UNIÃO


A seguinte instrução SQL lista todos os clientes e fornecedores:

Exemplo
SELECT 'Customer' As Type, ContactName, City, Country
FROM Customers
UNION
SELECT 'Supplier', ContactName, City, Country
FROM Suppliers;

O GRUPO SQL pela declaração


A instrução GROUP BY é muitas vezes utilizado com funções de
agregação (COUNT, MAX, MIN, SUM, AVG) ao grupo a-resultado definido
por uma ou mais colunas.

GROUP BY Sintaxe
SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
ORDER BY column_name(s);

Banco de dados de demonstração


Abaixo está uma seleção da tabela "Clientes" no banco de dados de
exemplo Adamastor:

CustomerID CustomerName ContactName Address Ci

1 Alfreds Futterkiste Maria Anders Obere Str. 57 Be

2 Ana Trujillo Emparedados y helados Ana Trujillo Avda. de la Constitución 2222 M


D.

3 Antonio Moreno Taquería Antonio Moreno Mataderos 2312 M


D.

4 Around the Horn Thomas Hardy 120 Hanover Sq. Lo

5 Berglunds snabbköp Christina Berglund Berguvsvägen 8 Lu

GRUPO SQL por exemplos


A seguinte instrução SQL lista o número de clientes em cada país:

Exemplo
SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country;

Tente você mesmo "

A seguinte instrução SQL lista o número de clientes em cada país,


classificado de alto a baixo:

Exemplo
SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
ORDER BY COUNT(CustomerID) DESC;

Tente você mesmo "

Banco de dados de demonstração


Abaixo está uma seleção da tabela "Pedidos" na base de dados de
exemplo Adamastor:

OrderID CustomerID EmployeeID OrderDate ShipperID

10248 90 5 1996-07-04 3

10249 81 6 1996-07-05 1

10250 34 4 1996-07-08 2

E uma seleção da tabela "Transportadoras":


ShipperID ShipperName

1 Speedy Express

2 United Package

3 Federal Shipping

GROUP BY com juntam-se Exemplo


A seguinte instrução SQL lista o número de ordens enviadas por cada
expedidor:

Exemplo
SELECT Shippers.ShipperName, COUNT(Orders.OrderID) AS NumberOfOrders F
ROM Orders
LEFT JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID
GROUP BY ShipperName;

A cláusula HAVING SQL


A cláusula HAVING foi adicionado para SQL porque a palavra-chave
ONDE não poderia ser utilizado com funções de agregação.

TENDO Sintaxe
SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
HAVING condition
ORDER BY column_name(s);
Banco de dados de demonstração
Abaixo está uma seleção da tabela "Clientes" no banco de dados de
exemplo Adamastor:

CustomerID CustomerName ContactName Address Ci

1 Alfreds Futterkiste Maria Anders Obere Str. 57 Be

2 Ana Trujillo Emparedados y helados Ana Trujillo Avda. de la Constitución 2222 M


D.

3 Antonio Moreno Taquería Antonio Moreno Mataderos 2312 M


D.

4 Around the Horn Thomas Hardy 120 Hanover Sq. Lo

5 Berglunds snabbköp Christina Berglund Berguvsvägen 8 Lu

SQL TENDO Exemplos


A instrução SQL a seguir lista o número de clientes em cada país. incluir
apenas os países com mais de 5 clientes:

Exemplo
SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
HAVING COUNT(CustomerID) > 5;

Tente você mesmo "

A seguinte instrução SQL lista o número de clientes em cada país,


classificado de alto a baixo (Apenas incluir países com mais de 5
clientes):

Exemplo
SELECT COUNT(CustomerID), Country
FROM Customers
GROUP BY Country
HAVING COUNT(CustomerID) > 5
ORDER BY COUNT(CustomerID) DESC;

Tente você mesmo "

Banco de dados de demonstração


Abaixo está uma seleção da tabela "Pedidos" na base de dados de
exemplo Adamastor:

OrderID CustomerID EmployeeID OrderDate ShipperID

10248 90 5 1996-07-04 3

10249 81 6 1996-07-05 1

10250 34 4 1996-07-08 2
E uma seleção da tabela "Employees":

EmployeeID LastName FirstName BirthDate Photo Notes

1 Davolio Nancy 1968-12-08 EmpID1.pic Education includes a BA....

2 Fuller Andrew 1952-02-19 EmpID2.pic Andrew received his BTS....

3 Leverling Janet 1963-08-30 EmpID3.pic Janet has a BS degree....

Mais TENDO Exemplos


A seguinte instrução SQL lista os funcionários que foram registrados
mais de 10 ordens:

Exemplo
SELECT Employees.LastName, COUNT(Orders.OrderID) AS NumberOfOrders
FROM (Orders
INNER JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID)
GROUP BY LastName
HAVING COUNT(Orders.OrderID) > 10;

Tente você mesmo "

As seguintes listas de instrução SQL se os empregados "Davolio" ou


"Fuller" foram registrados mais de 25 ordens:

Exemplo
SELECT Employees.LastName, COUNT(Orders.OrderID) AS NumberOfOrders
FROM Orders
INNER JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID
WHERE LastName = 'Davolio' OR LastName = 'Fuller'
GROUP BY LastName
HAVING COUNT(Orders.OrderID) > 25;
O SQL EXISTE Operator
O operador existe é utilizado para testar a existência de qualquer ficha
num subconsulta.

O EXISTE retorna verdadeiro se a subconsulta retorna um ou mais


registros.

EXISTE Sintaxe
SELECT column_name(s)
FROM table_name
WHERE EXISTS
(SELECT column_name FROM table_name WHERE condition);

Banco de dados de demonstração


Abaixo está uma seleção da tabela de "Produtos" no banco de dados de
exemplo Adamastor:

ProductID ProductName SupplierID CategoryID Unit Price

1 Chais 1 1 10 boxes x 20 bags 18

2 Chang 1 1 24 - 12 oz bottles 19

3 Aniseed Syrup 1 2 12 - 550 ml bottles 10

4 Chef Anton's Cajun Seasoning 2 2 48 - 6 oz jars 22

5 Chef Anton's Gumbo Mix 2 2 36 boxes 21.35


E uma seleção da tabela de "Fornecedores":

SupplierID SupplierName ContactName Address City PostalCod Country


e

1 Exotic Liquid Charlotte 49 Gilbert St. London EC1 4SD UK


Cooper

2 New Orleans Cajun Shelley Burke P.O. Box 78934 New 70117 USA
Delights Orleans

3 Grandma Kelly's Regina Murphy 707 Oxford Rd. Ann 48104 USA
Homestead Arbor

4 Tokyo Traders Yoshi Nagase 9-8 Sekimai Tokyo 100 Japan


Musashino-shi

SQL EXISTE Exemplos


A seguinte instrução SQL retorna TRUE e lista os fornecedores com um
preço do produto inferior a 20:

Exemplo
SELECT SupplierName
FROM Suppliers
WHERE EXISTS (SELECT ProductName FROM Products WHERE SupplierId =
Suppliers.supplierId AND Price < 20);
Tente você mesmo "

A seguinte instrução SQL retorna TRUE e lista os fornecedores com um


preço do produto igual a 22:

Exemplo
SELECT SupplierName
FROM Suppliers
WHERE EXISTS (SELECT ProductName FROM Products WHERE SupplierId =
Suppliers.supplierId AND Price = 22);

O SQL toda e qualquer Operadores


Os operadores toda e qualquer são usadas com uma cláusula WHERE ou
HAVING.

O operador ANY retorna verdadeiro se qualquer um dos valores


subconsulta satisfazem a condição.

O operador ALL retorna true se todos os valores subconsulta satisfazem


a condição.

QUALQUER Sintaxe
SELECT column_name(s)
FROM table_name
WHERE column_name operator ANY
(SELECT column_name FROM table_name WHERE condition);

ALL Sintaxe
SELECT column_name(s)
FROM table_name
WHERE column_name operator ALL
(SELECT column_name FROM table_name WHERE condition);

Nota: O operador deve ser um operador de comparação padrão (=, <>,


=,>,> =, <ou <=!).

Banco de dados de demonstração


Abaixo está uma seleção da tabela de "Produtos" no banco de dados de
exemplo Adamastor:

ProductID ProductName SupplierID CategoryID Unit Price

1 Chais 1 1 10 boxes x 20 bags 18

2 Chang 1 1 24 - 12 oz bottles 19

3 Aniseed Syrup 1 2 12 - 550 ml bottles 10

4 Chef Anton's Cajun Seasoning 2 2 48 - 6 oz jars 22

5 Chef Anton's Gumbo Mix 2 2 36 boxes 21.35

E uma seleção da tabela "OrderDetails":

OrderDetailID OrderID ProductID Quantity

1 10248 11 12

2 10248 42 10

3 10248 72 5

4 10249 14 9
5 10249 51 40

SQL alguns exemplos


O operador ANY retorna TRUE se qualquer um dos valores subconsulta
satisfazem a condição.

A seguinte instrução SQL retorna TRUE e lista as ProductNames se


encontra todos os registros na tabela de OrderDetails essa quantidade =
10:

Exemplo
SELECT ProductName
FROM Products
WHERE ProductID
= ANY (SELECT ProductID FROM OrderDetails WHERE Quantity = 10);

Tente você mesmo "

A seguinte instrução SQL retorna TRUE e lista as ProductNames se


encontra todos os registros na tabela de OrderDetails essa quantidade>
99:

Exemplo
SELECT ProductName
FROM Products
WHERE ProductID
= ANY (SELECT ProductID FROM OrderDetails WHERE Quantity > 99);

Tente você mesmo "

SQL ALL Exemplo


O operador ALL retorna TRUE se todos os valores subconsulta satisfazem
a condição.
A seguinte instrução SQL retorna TRUE e lista as ProductNames Se todos
os registros na tabela OrderDetails tem quantidade = 10:

Exemplo
SELECT ProductName
FROM Products
WHERE ProductID
= ALL (SELECT ProductID FROM OrderDetails WHERE Quantity = 10);

A instrução SQL SELECT INTO


O SELECT INTO copia dados de uma tabela em uma nova tabela.

SELECT INTO Sintaxe


Copie todas as colunas em uma nova tabela:

SELECT *
INTO newtable [IN externaldb]
FROM oldtable
WHERE condition;

Copiar apenas algumas colunas em uma nova tabela:

SELECT column1, column2, column3, ...
INTO newtable [IN externaldb]
FROM oldtable
WHERE condition;

A nova tabela será criada com a coluna de nomes e tipos conforme


definido na tabela antiga. Você pode criar novos nomes de coluna
usando a cláusula AS.

SQL SELECT INTO Exemplos


A seguinte instrução SQL cria uma cópia de backup de Clientes:

SELECT * INTO CustomersBackup2017
FROM Customers;

A seguinte instrução SQL utiliza a cláusula IN para copiar a tabela em


uma nova tabela em outro banco de dados:
SELECT * INTO CustomersBackup2017 IN 'Backup.mdb'
FROM Customers;

A seguinte instrução SQL cópias apenas algumas colunas em uma nova


tabela:

SELECT CustomerName, ContactName INTO CustomersBackup2017
FROM Customers;

A seguinte instrução SQL copia apenas os clientes alemães em uma nova


tabela:

SELECT * INTO CustomersGermany
FROM Customers
WHERE Country = 'Germany';

O seguinte SQL Declaração de cópias de mais de uma tabela em uma


nova tabela:

SELECT Customers.CustomerName, Orders.OrderID
INTO CustomersOrderBackup2017
FROM Customers
LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;

Dica: SELECT INTO também pode ser usado para criar uma nova tabela,
vazio usando o esquema de outro. Basta adicionar uma cláusula WHERE
que faz com que a consulta para retornar sem dados:

SELECT * INTO newtable
FROM oldtable
WHERE 1 = 0;

A instrução SQL INSERT INTO


SELECIONAR
O INSERT INTO instrução Select copia dados de uma tabela e insere-lo
em outra mesa.

 INSERT INTO Select exige que tipos de dados em tabelas de


origem e de destino corresponder
 Os registros existentes na tabela de destino não são afetados

INSERT INTO Sintaxe SELECT


Copie todas as colunas de uma tabela para outra tabela:
INSERT INTO table2
SELECT * FROM table1
WHERE condition;

Copiar apenas algumas colunas de uma tabela em outra tabela:

INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table1
WHERE condition;

Banco de dados de demonstração


Neste tutorial, vamos utilizar o banco de dados conhecido exemplo
Adamastor.

Abaixo está uma seleção da tabela "Clientes":

CustomerID CustomerName ContactNam Address City PostalCod Country


e e

1 Alfreds Maria Anders Obere Str. Berlin 12209 Germany


Futterkiste 57

2 Ana Trujillo Ana Trujillo Avda. de la México 05021 Mexico


Emparedados y Constitución D.F.
helados 2222

3 Antonio Moreno Antonio Mataderos México 05023 Mexico


Taquería Moreno 2312 D.F.

E uma seleção da tabela de "Fornecedores":

SupplierID SupplierName ContactName Address City Postal Country


Code

1 Exotic Liquid Charlotte 49 Gilbert Londona EC1 UK


Cooper St. 4SD

2 New Orleans Cajun Shelley Burke P.O. Box New 70117 USA
Delights 78934 Orleans

3 Grandma Kelly's Regina 707 Ann 48104 USA


Homestead Murphy Oxford Rd. Arbor

Exemplos SQL INSERT INTO Select


O seguinte SQL declaração copia "Fornecedores" em "clientes" (as
colunas que não são preenchidos com dados, irá conter NULL):

Exemplo
INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country FROM Suppliers;
Tente você mesmo "

O seguinte SQL declaração copia "Fornecedores" em "clientes"


(preencher todas as colunas):

Exemplo
INSERT INTO Customers (CustomerName, ContactName, Address, City,
PostalCode, Country)
SELECT SupplierName, ContactName, Address, City,
PostalCode, Country FROM Suppliers;
Tente você mesmo "
A seguinte instrução SQL copia apenas os fornecedores alemães em
"Clientes":

Exemplo
INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country FROM Suppliers
WHERE Country='Germany';

SQL IFNULL (), ISNULL (), COALESCE () e


NVL () Funções
Olhe para a tabela a seguir "Produtos":

P_Id ProductName UnitPrice UnitsInStock UnitsOnOrder

1 Jarlsberg 10.45 16 15

2 Mascarpone 32.56 23  

3 Gorgonzola 15.67 9 20

Suponha-se que a coluna "UnidadesPedidas" é opcional, e pode conter


valores nulos.

Olhe para a seguinte instrução SELECT:

SELECT ProductName, UnitPrice * (UnitsInStock + UnitsOnOrder)


FROM Products;

No exemplo acima, se qualquer um dos valores "UnitsonOrder" são


NULL, o resultado será nulo.

soluções
MySQL

O MySQL IFNULL () função permite retornar um valor alternativo se uma


expressão é NULL:

SELECT ProductName, UnitPrice * (UnitsInStock +


IFNULL(UnitsOnOrder, 0))
FROM Products

ou podemos usar o COALESCE () função, assim:

SELECT ProductName, UnitPrice * (UnitsInStock


+ COALESCE(UnitsOnOrder, 0))
FROM Products

servidor SQL

O SQL Server ISNULL () função permite retornar um valor alternativo


quando uma expressão é NULL:

SELECT ProductName, UnitPrice * (UnitsInStock +


ISNULL(UnitsOnOrder, 0))
FROM Products

MS Access

O MS acesso ÉNulo () devolve VERDADEIRO (-1), se a expressão é um


valor nulo, de outro modo FALSO (0):

SELECT ProductName, UnitPrice * (UnitsInStock +


IIF(IsNull(UnitsOnOrder), 0, UnitsOnOrder))
FROM Products

Oráculo

A função do Oracle NVL () obtém o mesmo resultado:

SELECT ProductName, UnitPrice * (UnitsInStock + NVL(UnitsOnOrder, 0))


FROM Products

SQL Comentários
Os comentários são usados para explicar seções de instruções SQL,
ou para impedir a execução de instruções SQL.
Nota: Os exemplos neste capítulo não funciona no Firefox e
Microsoft Edge!

Os comentários não são suportados em bancos de dados Microsoft


Access. Firefox e Microsoft Edge está usando banco de dados Microsoft
Access em nossos exemplos.

Única linha Comentários


comentários de linha única começar -.

Qualquer texto entre - eo fim da linha será ignorado (não será


executado).

O exemplo a seguir usa um comentário de linha única como uma


explicação:

Exemplo
--Select all:
SELECT * FROM Customers;

Tente você mesmo "

O exemplo a seguir usa um comentário de linha única para ignorar o


final de uma linha:

Exemplo
SELECT * FROM Customers -- WHERE City='Berlin';

Tente você mesmo "

O exemplo a seguir usa um comentário de uma única linha de ignorar


um comunicado:

Exemplo
--SELECT * FROM Customers;
SELECT * FROM Products;

Tente você mesmo "


Multi-line Comentários
Multi-linha Comentários iniciam com / * e terminam com * /.

Qualquer texto entre / * e * / será ignorado.

O exemplo a seguir usa um comentário multi-linha como uma


explicação:

Exemplo
/*Select all the columns
of all the records
in the Customers table:*/
SELECT * FROM Customers;

Tente você mesmo "

O exemplo a seguir usa um comentário multi-linha para ignorar muitas


declarações:

Exemplo
/*SELECT * FROM Customers;
SELECT * FROM Products;
SELECT * FROM Orders;
SELECT * FROM Categories;*/
SELECT * FROM Suppliers;

Tente você mesmo "

Para ignorar apenas uma parte de uma instrução, também usam o / *


* / comentários.

O exemplo a seguir usa um comentário para ignorar parte de uma linha:

Exemplo
SELECT CustomerName, /*City,*/ Country FROM Customers;

Tente você mesmo "

O exemplo a seguir usa um comentário para ignorar parte de uma


instrução:
Exemplo
SELECT * FROM Customers WHERE (CustomerName LIKE 'L%'
OR CustomerName LIKE 'R%' /*OR CustomerName LIKE 'S%'
OR CustomerName LIKE 'T%'*/ OR CustomerName LIKE 'W%')
AND Country='USA'
ORDER BY CustomerName;

SQL Server tem muitas funções internas.

Esta referência contém a string, numérico, data, conversão e funções


avançadas em SQL Server.

Funções SQL Server corda

Function Description

ASCII Returns the number code that represents the specific


character

CHAR Returns the ASCII character based on the number code

CHARINDEX Returns the location of a substring in a string

CONCAT Concatenates two or more strings together

Concat with + Concatenates two or more strings together

DATALENGTH Returns the length of an expression (in bytes)


LEFT Extracts a substring from a string (starting from left)

LEN Returns the length of the specified string

LOWER Converts a string to lower-case

LTRIM Removes leading spaces from a string

NCHAR Returns the Unicode character based on the number code

PATINDEX Returns the location of a pattern in a string

REPLACE Replaces a sequence of characters in a string with another


set of characters

RIGHT Extracts a substring from a string (starting from right)

RTRIM Removes trailing spaces from a string

SPACE Returns a string with a specified number of spaces

STR Returns a string representation of a number

STUFF Deletes a sequence of characters from a string and then


inserts another sequence of characters into the string,
starting at a specified position

SUBSTRING Extracts a substring from a string

UPPER Converts a string to upper-case

Funções SQL Server numéricos

Function Description

ABS Returns the absolute value of a number

AVG Returns the average value of an expression

CEILING Returns the smallest integer value that is greater


than or equal to a number

COUNT Returns the count of an expression

FLOOR Returns the largest integer value that is equal to or


less than a number

MAX Returns the maximum value of an expression


MIN Returns the minimum value of an expression

RAND Returns a random number or a random number


within a range

ROUND Returns a number rounded to a certain number of


decimal places

SIGN Returns a value indicating the sign of a number

SUM Returns the summed value of an expression

Servidor Data Funções SQL

Function Description

CURRENT_TIMESTAMP Returns the current date and time

DATEADD Returns a date after a certain time/date interval


has been added

DATEDIFF Returns the difference between two date values,


based on the interval specified

DATENAME Returns a specified part of a given date, as a string


value

DATEPART Returns a specified part of a given date, as an


integer value

DAY Returns the day of the month (from 1 to 31) for a


given date

GETDATE Returns the current date and time

GETUTCDATE Returns the current UTC date and time

MONTH Returns the month (from 1 to 12) for a given date

YEAR Returns the year (as a four-digit number) for a


given date

Funções de conversão do SQL Server

Function Description

CAST Converts an expression from one data type to


another

CONVERT Converts an expression from one data type to


another

Funções SQL Server avançadas

Function Description

COALESCE Returns the first non-null expression in a list

CURRENT_USER Returns the name of the current user in the SQL


Server database

ISDATE Returns 1 if the expression is a valid date,


otherwise 0

ISNULL Lets you return an alternative value when an


expression is NULL

ISNUMERIC Returns 1 if the expression is a valid number,


otherwise 0

NULLIF Compares two expressions


SESSION_USER Returns the user name of the current session in the
SQL Server database

SESSIONPROPERTY Returns the setting for a specified option of a


session

SYSTEM_USER Returns the login name information for the current


user in the SQL Server database

USER_NAME Returns the user name in the SQL Server database

Você também pode gostar