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