Comandos SQL
Comandos SQL
SQL
SQL > Comandos SQL > Select
Tabela Store_Information
Iremos utilizar esta tabela como exemplo ao longo deste tutorial (esta tabela irá
aparecer em todas as secções). Para selecionar todas as lojas nesta tabela,
introduzimos
Resultado:
Store_Name
Los Angeles
San Diego
Los Angeles
Boston
Tabela Store_Information
introduzimos
Resultado:
Store_Name
Los Angeles
San Diego
Boston
SELECT "nome_coluna"
FROM "nome_tabela"
WHERE "condição";
Por exemplo, para selecionar todas as lojas com valores superiores a 1.000 €
na Tabela Store_Information,
Tabela Store_Information
introduzimos
SELECT Store_Name
FROM Store_Information
WHERE Sales > 1000;
Resultado:
Store_Name
Los Angeles
Na secção anterior, vimos que a palavra-chave WHERE pode ser utilizada para
selecionar condicionalmente dados de uma tabela. Esta condição pode ser
uma condição simples (como a apresentada na secção anterior) ou pode ser
uma condição composta. As condições compostas são constituídas por várias
condições simples ligadas através de AND ou OR. Não existe qualquer limite
relativamente ao número de condições simples que podem estar presentes
numa única instrução SQL.
SELECT "nome_coluna"
FROM "nome_tabela"
WHERE "condição simples"
{[AND|OR] "condição simples"}+;
Os símbolos {}+ significam que a expressão entre parênteses irá ocorrer uma
ou mais vezes. Note que AND e OR podem ser utilizados alternadamente.
Além disso, podemos utilizar os sinais de parênteses ( ) para indicar a ordem
da condição.
Tabela Store_Information
introduzimos
SELECT Store_Name
FROM Store_Information
WHERE Sales > 1000
OR (Sales < 500 AND Sales > 275);
Resultado:
Store_Name
Los Angeles
San Francisco
SELECT "nome_coluna"
FROM "nome_tabela"
WHERE "nome_coluna" IN ('valor1', 'valor2', ...);
O número de valores entre parênteses pode ser um ou mais, com cada valor
separado por uma vírgula. Os valores podem ser numéricos ou caracteres. Se
existir apenas um valor entre parênteses, o comando é equivalente a
Por exemplo, podemos pretender selecionar todos os registos das lojas de Los
Angeles e San Diego na Tabela Store_Information,
Tabela Store_Information
introduzimos
SELECT *
FROM Store_Information
WHERE Store_Name IN ('Los Angeles', 'San Diego');
Resultado:
SELECT "nome_coluna"
FROM "nome_tabela"
WHERE "nome_coluna" BETWEEN ''valor1' AND ''valor2';
Este comando irá selecionar todas as linhas cuja coluna tiver um valor entre o
'valor1' e o 'valor2'.
Tabel Store_Information
introduzimos
SELECT *
FROM Store_Information
WHERE Txn_Date BETWEEN '06-Jan-1999' AND '10-Jan-1999';
Resultado:
Store_Name Sales Txn_Date
San Diego 250 07-Jan-1999
San Francisco 300 08-Jan-1999
Boston 700 08-Jan-1999
SELECT "nome_coluna"
FROM "nome_tabela"
WHERE "nome_coluna" LIKE {PATTERN};
'A_Z': Todas as cadeias que começam por 'A', outro caráter, e terminam
em 'Z'. Por exemplo, 'ABZ' e 'A2Z' iriam ambas satisfazer a condição,
enquanto 'AKKZ' não iria (porque existem dois caracteres entre A e Z em
vez de um).
Tabela Store_Information
SELECT *
FROM Store_Information
WHERE Store_Name LIKE '%AN%';
Resultado:
SELECT "nome_coluna"
FROM "nome_tabela"
[WHERE "condição"]
ORDER BY "nome_coluna" [ASC, DESC];
introduzimos
Resultado:
AVG
COUNT
MAX
MIN
SUM
A sintaxe para utilizar funções é:
Tabela Store_Information
introduziríamos
Resultado:
SUM (Sales)
2750
Para além de utilizar funções, também é possível utilizar a linguagem SQL para
efetuar tarefas simples como a adição (+) e a subtração (-). Para dados de
caracteres, também se encontram disponíveis várias funções de cadeias, tais
como as funções de concatenação, corte e subtração. Os diferentes
vendedores de sistemas RDBMS têm diferentes implementações de cadeias e
é melhor consultar as referências relativas ao seu sistema RDBMS para
descobrir de que forma estas funções são utilizadas.
SELECT COUNT("nome_coluna")
FROM "nome_tabela";
introduziríamos
Resultado:
COUNT (Store_Name)
4
Resultado:
Resultado:
Tabela Store_Information
introduziríamos
Resultado:
Store_Name SUM(Sales)
Los Angeles 1800
A seguir focamos a utilização de alias. Existem dois tipos de alias que são
utilizados mais frequentemente: alias de colunas e alias de tabelas.
Tabela Store_Information
Resultado:
Tabela Store_Information
Tabela Geography
Region_Name Store_Name
East Boston
East New York
West Los Angeles
West San Diego
Resultado:
REGION SALES
East 700
West 2050
As duas primeiras linhas dizem ao sistema SQL para selecionar dois campos, o
primeiro é o campo "region_name" da tabela Geography (com alias como
REGION), e o segundo é o somatório do campo "Sales" da
tabela Store_Information (com alias como SALES). Repare que agora os alias
das tabelas são utilizados aqui: Geography possui alias como
A1, Store_Information com alias como A2. Sem alias, a primeira linha seria
A sintaxe para efetuar uma união externa na linguagem SQL depende da base
de dados. Por exemplo, em Oracle, iremos colocar o sinal "(+)" na
cláusula WHERE no outro lado da tabela para a qual queremos incluir todas as
linhas.
Tabela Store_Information
Tabela Geography
Region_Name Store_Name
East Boston
East New York
West Los Angeles
West San Diego
Note que neste caso estamos a utilizar a sintaxe Oracle para a união externa.
Resultado:
Store_Name SALES
Boston 700
New York
Los Angeles 1800
San Diego 250
MySQL: CONCAT( )
Oracle: CONCAT( ), ||
SQL Server: +
Concatenar str1, str2, str3 e quaisquer outras cadeias juntas. Note que a
função Oracle CONCAT( ) apenas permite dois argumentos -- apenas duas
cadeias podem ser utilizadas em simultâneo aquando da utilização desta
função. Contudo, é possível concatenar mais de duas cadeias em simultâneo
no Oracle utilizando '||'.
Tabela Geography
Region_Name Store_Name
East Boston
East New York
West Los Angeles
West San Diego
Exemplo 1
MySQL/Oracle:
Resultado:
'EastBoston'
Exemplo 2
Oracle:
Resultado:
'East Boston'
Exemplo 3
SQL Server:
Resultado:
'East Boston'
A função SUBSTRING na linguagem SQL é utilizada para obter uma parte dos
dados armazenados. Esta função possui nomes diferentes nas diversas bases
de dados:
Tabela Geography
Region_Name Store_Name
East Boston
East New York
West Los Angeles
West San Diego
Exemplo 1
Resultado:
's Angeles'
Exemplo 2
Resultado:
'an D'
Exemplo 1
Resultado:
'Sample'
Exemplo 2
Resultado:
'Sample '
Exemplo3
Resultado:
' Sample'
MySQL: LENGTH ( )
Oracle: LENGTH ( )
SQL Server: LEN ( )
Tabela Geography
Region_Name Store_Name
East Boston
East New York
West Los Angeles
West San Diego
Exemplo 1
Resultado:
11
Exemplo 1
Resultado:
Tabela Geography
Region_Name Store_Name
East Boston
East New York
West Los Angeles
West San Diego
Resultado:
Region_Name
Eastern
Eastern
West
West
datepart Abreviatura
year yy, yyyy
quarter qq, q
month mm, m
dayofyear dy, y
day dd, d
week wk, ww
hour hh
minute mi, n
second ss, s
millisecond ms
microsecond mcs
nanosecond ns
TZoffset tz
ISO_WEEK isowk, isoww
'2000-01-15 00:05:00.000'
MySQL:
SQL Server:
datepart Abreviatura
year yy, yyyy
quarter qq, q
month mm, m
dayofyear dy, y
day dd, d
week wk, ww
hour hh
minute mi, n
second ss, s
millisecond ms
microsecond mcs
nanosecond ns
TZoffset tz
ISO_WEEK isowk, isoww
-5
DATEPART é uma função do SQL Server que extrai uma parte específica do
valor de data/hora. A sua sintaxe será a seguinte:
Exemplo 1
Resultado:
2000
Exemplo 2
Resultado:
41
GETDATE ( )
GETDATE não requer qualquer argumento.
SELECT GETDATE ( );
'2000-03-15 00:05:02.123'
Oracle:
SYSDATE
'16-JAN-2000'
MySQL:
SYSDATE ( )
'2000-01-16 09:06:22'
Por vezes, pretendemos fornecer um valor padrão para cada coluna. É utilizado
um valor padrão quando não especificar um valor para a coluna ao introduzir
dados na tabela. Para especificar um valor padrão, adicione "Default [valor]"
após a declaração do tipo de dados. No exemplo acima, que quiser que o
padrão da coluna "Address" passe para "Unknown" e "City" para "Rio de
Janeiro", escreveria
Pode colocar restrições para limitar o tipo de dados a introduzir numa tabela.
Essas restrições podem ser especificadas quando a tabela for primeiro criada
através da instrução CREATE TABLE ou após a tabela já ter sido criada
através da instrução ALTER TABLE.
NOT NULL Constraint: Garante que uma coluna não pode ter o valor
NULL.
DEFAULT Constraint: Fornece um valor padrão para uma coluna
quando nenhum é especificado.
UNIQUE Constraint: Garante que todos os valores numa coluna são
diferentes.
CHECK Constraint: Garante que todos os valores numa coluna
satisfazem um determinado critério.
Primary Key Constraint: Utilizado para identificar de forma única uma
linha na tabela.
Foreign Key Constraint: Utilizado para garantir a integridade referencial
dos dados.
Por defeito, uma coluna pode suportar NULL. Se não quiser permitir o valor
NULL numa coluna, deverá colocar uma restrição nessa coluna a especificar
que NULL agora não é um valor permitido.
irá provocar um erro porque irá fazer com que a coluna "SID" seja NULL, o que
viola a restrição NOT NULL nessa coluna.
A restrição UNIQUE garante que todos os valores numa coluna são diferentes.
a coluna "SID" tem uma restrição única e, por conseguinte, não pode incluir
valores duplicados. Tal restrição não suporta as colunas "Last_Name" e
"First_Name". Assim sendo, se a tabela já possuir as seguintes linhas:
irá provocar um erro, pois '3' já existe na coluna SID e, como tal, tentar
introduzir outra linha com esse valor viola a restrição UNIQUE.
Note que uma coluna que seja especificada como chave primária também deve
ser única. Ao mesmo tempo, uma coluna que seja única pode ou não pode ser
uma chave primária. Além disso, é possível definir várias
restrições UNIQUE numa tabela.
SQL > Manipulação de Tabelas > CHECK Constraint
A coluna "SID" tem uma restrição -- o seu valor apenas deve incluir números
inteiros superiores a 0. Como tal, tentar executar a seguinte instrução
irá dar origem a um erro, pois os valores de SID devem ser superiores a 0.
Note que desta vez a restrição CHECK não é importa por linguagem MySQL.
Uma chave primária é utilizada da identificar de forma única cada linha numa
tabela. Pode fazer parte do próprio registo atual ou pode ser um campo artificial
(um que não tenha nada que ver com o registo atual). Uma chave primária
pode ser composta por um ou mais campos numa tabela. Quando são
utilizados vários campos como chave primária, são denominados por chave
composta.
MySQL:
SQL Server:
MySQL:
Oracle:
SQL Server:
Nota: Antes de utilizar o comando ALTER TABLE para adicionar uma chave
primária, deve certificar-se de que o campo se encontra definido como 'NOT
NULL' -- por outras palavras, NULL não pode ser um valor aceite para esse
campo.
Uma chave externa é um campo (ou campos) que aponta para a chave
primária de outra tabela. O objetivo da chave externa é garantir a integridade
referencial dos dados Por outras palavras, apenas os valores suportados que
supostamente devem aparecer na base de dados são permitidos.
Tabela CUSTOMER
Tabela ORDERS
MySQL:
Oracle:
SQL Server:
CREATE TABLE ORDERS
(Order_ID integer PRIMARY KEY,
Order_Date datetime,
Customer_SID integer REFERENCES CUSTOMER (SID),
Amount double);
MySQL:
Oracle:
SQL Server:
As vistas podem ser consideradas como tabelas virtuais. Regra geral, uma
tabela tem um conjunto de definições e armazena fisicamente os dados. Uma
vista também tem um conjunto de definições, que são criadas sobre tabela(s)
ou outra(s) vista(s), e não armazena fisicamente os dados.
"Instrução SQL" pode ser qualquer uma das instruções SQL abordadas neste
tutorial.
Tabela Customer
View V_Customer
Também podemos utilizar uma vista para aplicar uniões a duas tabelas. Nesse
caso, os utilizadores apenas visualizam uma em vez de duas tabelas e a
instrução SQL que os utilizadores devem emitir torna-se muito mais simples.
Suponhamos que temos as duas tabelas seguintes:
Tabela Store_Information
Tabela Geography
Region_Name Store_Name
East Boston
East New York
West Los Angeles
West San Diego
e queremos criar uma vista com informações de vendas por região. Iríamos
emitir a seguinte instrução SQL:
Resultado:
REGION SALES
East 700
West 2050
Como tal, muitas vezes é preferível criar índices nas tabelas. Um índice pode
abranger uma ou mais colunas. A sintaxe geral para criar um índice é:
Não existe uma regra rígida sobre qual o nome a atribuir a um índice. O
método geralmente aceite é colocar um prefixo, tal como "IDX_", antes de um
nome de índice de modo a evitar confusões com outros objetos da base de
dados. Também é boa ideia fornecer informações sobre que tabela e coluna(s)
o índice é utilizado.
Note que a sintaxe exata para CREATE INDEX pode ser diferente para
diferentes bases de dados. Deve consultar o manual de referência da sua base
de dados para obter a sintaxe precisa.
Assim que uma tabela for criada na base de dados, muitas vezes o utilizador
poderá querer alterar a estrutura da tabela. Os casos típicos incluem o
seguinte:
Note que o acima apresentado não constitui uma lista exaustiva. Existem
outros momentos em que ALTER TABLE é utilizado para alterar a estrutura da
tabela, tal como alterar a especificação da chave primária ou adicionar uma
restrição única a uma coluna.
A sintaxe SQL para ALTER TABLE é:
Adicionar uma coluna: ADD "coluna 1" "tipo de dados para a coluna 1"
Remover uma coluna: DROP "coluna 1"
Alterar o nome de uma coluna: CHANGE "antigo nome da coluna" "novo
nome da coluna" "tipo de dados para novo nome da coluna"
Alterar o tipo de dados de uma coluna: MODIFY "coluna 1" "novo tipo de
dados"
Tabela Customer
Tabela Customer
Tabela Customer
Tabela Customer
Tabela Customer
Por vezes podemos pretender remover uma tabela da base de dados por
qualquer motivo. De fato, seria problemático se tal não fosse possível, pois
poderia ser um pesadelo para o DBA (administrador da base de dados).
Felizmente, a linguagem SQL permite-nos fazê-lo através do comando DROP
TABLE. A sintaxe para DROP TABLE é
Por vezes queremos remover todos os dados de uma tabela. Uma forma de o
fazer é através do comando DROP TABLE, abordado na secção anterior.
Mas e se apenas quisermos remover todos os dados , mas não a própria
tabela? Para tal, podemos utilizar o comando TRUNCATE TABLE. A sintaxe
para TRUNCATE TABLE é
USE "nome_do_banco_de_dados";
Por exemplo, se você deseja conectar-se a um banco de dados chamado
"Scores", você pode digitar o seguinte:
USE Scores;
USE Scores;
SELECT ...
FROM Course_110, Personnel.Students
WHERE ...
;
Nas secções anteriores, vimos como obter informações das tabelas. Mas de
que forma estas linhas de dados são introduzidas inicialmente nas tabelas? É
isso que esta secção, que aborda a instrução INSERT e a secção seguinte,
que aborda a instrução UPDATE, explicam.
A sintaxe para inserir dados numa linha da tabela de cada vez é a seguinte:
Tabela Store_Information
Note que esta é a forma simples. A instrução completa pode facilmente conter
as cláusulas WHERE, GROUP BY, e HAVING, assim como alias e uniões de
tabelas.
Aqui foi utilizada a sintaxe do sistema Servidor SQL para extrair a informação
do ano de uma data. Outras bases de dados relacionadas terão uma sintaxe
diferente. Por exemplo, no sistema Oracle, irá utilizar TO_CHAR (Txn_Date,
'yyyy') = 1998.
UPDATE "nome_tabela"
SET "coluna 1" = [novo valor]
WHERE "condição";
Por exemplo, se possuirmos atualmente uma tabela conforme abaixo
apresentado:
Tabela Store_Information
UPDATE Store_Information
SET Sales = 500
WHERE Store_Name = 'Los Angeles'
AND Txn_Date = '08-Jan-1999';
Tabela Store_Information
UPDATE "nome_tabela"
SET kolom 1 = [valor 1], kolom 2 = [valor 2]
WHERE "condição";
Tabela Store_Information
Tabela Store_Information
SQL UNION
SQL UNION ALL
SQL Visualização Embutida
SQL INTERSECT
SQL MINUS
SQL Subquery
SQL WITH
SQL EXISTS
SQL CASE
SEQUENCE e NEXTVAL
SQL NULL
SQL ISNULL
SQL IFNULL
SQL NVL
SQL COALESCE
SQL NULLIF
[Instrução SQL 1]
UNION
[Instrução SQL 2];
Tabela Store_Information
Tabela Internet_Sales
Txn_Date Sales
07-Jan-1999 250
10-Jan-1999 535
11-Jan-1999 320
12-Jan-1999 750
Txn_Date
05-Jan-1999
07-Jan-1999
08-Jan-1999
10-Jan-1999
11-Jan-1999
12-Jan-1999
[Instrução SQL 1]
UNION ALL
[Instrução SQL 2];
Tabela Store_Information
Tabela Internet_Sales
Txn_Date Sales
07-Jan-1999 250
10-Jan-1999 535
11-Jan-1999 320
12-Jan-1999 750
Resultado:
Txn_Date
05-Jan-1999
07-Jan-1999
08-Jan-1999
08-Jan-1999
07-Jan-1999
10-Jan-1999
11-Jan-1999
12-Jan-1999
Sintaxe
Exemplo
Vamos supor que temos duas tabelas: A primeira tabela é User_Address, que
mapeia cada usuário para um código ZIP; a segunda tabela é User_Score, que
registra todas as pontuações de cada usuário. A pergunta é: como escrever
uma consulta SQL para encontrar o número de usuários que pontuaram mais
de 200 para cada código ZIP?
Sem usar uma visualização embutida, podemos realizar isso em dois passos:
Consulta 1
Consulta 2
Consulta 3
2. Podemos usar uma única consulta SQL para alcançar o que desejamos.
[Instrução SQL 1]
INTERSECT
[Instrução SQL 2];
Tabela Store_Information
Tabela Internet_Sales
Txn_Date Sales
07-Jan-1999 250
10-Jan-1999 535
11-Jan-1999 320
12-Jan-1999 750
Resultado:
Txn_Date
07-Jan-1999
[Instrução SQL 1]
MINUS
[Instrução SQL 2];
Tabela Store_Information
Tabela Internet_Sales
Txn_Date Sales
07-Jan-1999 250
10-Jan-1999 535
11-Jan-1999 320
12-Jan-1999 750
Txn_Date
05-Jan-1999
08-Jan-1999
É possível integrar uma instrução SQL noutra. Quando tal é efetuado nas
instruções WHERE ou HAVING, possuem uma construção de consulta
secundária.
SELECT "nome_coluna1"
FROM "nome_tabela1"
WHERE "nome_coluna2" [Comparison Operator]
(SELECT "nome_coluna3"
FROM "nome_tabela2"
WHERE "condição");
[Comparison Operator] pode ser um operador de igualdade como =, >, <, >=,
<=. Também pode ser um operador de texto como "LIKE". A parte
a vermelho é considerada como sendo uma "consulta interna", enquanto a
parte verde é considerada como sendo a "consulta externa".
Tabela Store_Information
Tabela Geography
Region_Name Store_Name
East Boston
East New York
West Los Angeles
West San Diego
Resultado:
SUM(Sales)
2050
Você poderia tentar chegar à resposta em uma única passagem usando várias
visualizações embutidas ou várias subconsultas, mas isso provavelmente
tornaria seu SQL difícil de entender, e algumas variedades de SQL, como o
Hive SQL, não permitem mais de uma subconsulta.
Sintaxe
WITH <nome_da_consulta_1> AS (
SELECT Declaração 1
)
Declaração SELECT Principal
Porque o WITH não cria uma tabela ou uma visualização, o objeto associado à
declaração WITH desaparece após a execução da declaração SQL principal e
não há nada para limpar.
WITH <nome_da_consulta_1> AS (
SELECT Declaração 1
), <nome_da_consulta_2> AS (
SELECT Declaração 2
),
..
<nome_da_consulta_n> AS (
SELECT Declaração N
)
Declaração SELECT Principal
Para ter várias cláusulas WITH, você não precisa especificar WITH várias
vezes. Em vez disso, após a conclusão da primeira cláusula WITH, adicione
uma vírgula e, em seguida, você pode especificar a próxima cláusula
começando com <nome_da_consulta> seguido de COMO. Não há vírgula entre
a última cláusula WITH e a consulta SQL principal.
Exemplos
Tabela Store_Sales
Store_Name Sales
Boston 7000
Digamos que queremos listar todas as lojas que têm mais vendas do que a
média. Para fazer isso, podemos usar a seguinte declaração WITH:
WITH t1 AS (
SELECT AVG(Sales) AVG_SALES FROM Store_Sales
)
SELECT a1.* FROM Store_Sales a1, t1
WHERE a1.Sales > t1.AVG_SALES;
Resultado:
Store_Name Sales
Boston 7000
Da mesma forma, isso pode ser alcançado através do seguinte SQL usando
uma subconsulta:
Observe que a versão com subconsulta não funciona no Hive SQL devido à
forma como o Hive SQL suporta subconsultas.
A parte WITH da consulta vem após o CREATE TABLE AS. Não coloque a
cláusula WITH no início. A consulta abaixo resultará em um erro:
WITH t1 AS (
SELECT AVG(Sales) AVG_SALES FROM Store_Sales
)
CREATE TABLE Above_Average_Sales
AS
SELECT a1.* FROM Store_Sales a1, t1
WHERE a1.Sales > t1.AVG_SALES;
A sintaxe de EXISTS é:
SELECT "nome_coluna1"
FROM "nome_tabela1"
WHERE EXISTS
(SELECT *
FROM "nome_tabela2"
WHERE "condição");
Tabela Store_Information
Tabela Geography
Region_Name Store_Name
East Boston
East New York
West Los Angeles
West San Diego
SUM(Sales)
2750
No início, isto pode parecer confuso porque a consulta secundária inclui a
condição [region_name = 'West'], embora a consulta tenha somado as lojas de
todas as regiões. Após uma inspecção mais atenta, descobrimos que como a
consulta secundária apresenta mais de 0 linhas, a condição EXISTS é
verdadeira e a condição existente na consulta interna não influencia a forma
como a consulta externa é executada.
Tabela Store_Information
Sintaxe
Exemplo
Tabela USER_TABLE
Tabela USER_TABLE
Tabela NEW_USER
Na linguagem SQL, NULL significa que os dados não existem. NULL não é
igual a 0 ou uma cadeia vazia. Tanto 0 como uma cadeia vazia representam
um valor, enquanto NULL não tem qualquer valor.
10 + NULL = NULL
As funções agregadas, tais como SUM, COUNT, AVG, MAX e MIN excluem os
valores NULL. Não é provável que provoque quaisquer problemas com os
comandos SUM, MAX e MIN. Contudo, pode provocar confusões com AVG e
COUNT.
Tabela Sales_Data
Store_Name Sales
Store A 300
Store B 200
Store C 100
Store D NULL
COUNT (Sales) = 3
Note que a função AVG conta apenas 3 linhas (a linha NULL é excluída), pelo
que a média é 600 / 3 = 200 e não 600 / 4 = 150. A função COUNT também
ignora a linha NULL, pelo que COUNT (Sales) = 3.
SQL Server
No SQL Server, a função ISNULL( ) é utilizada para substituir o valor NULL por
outro valor.
Tabela Sales_Data
Store_Name Sales
Store A 300
Store B NULL
apresenta o valor 400. Isso deve-se ao fato de NULL ter sido substituído por
100 através da função ISNULL.
MySQL
Por exemplo,
Tabela Sales_Data
Store_Name Sales
Store A 300
Store B NULL
Tabela Sales_Data
Store_Name Sales
Store A 300
Store B NULL
Store C 150
apresenta 550. Isso deve-se ao fato de NULL ter sido substituído por 100
através da função NVL, pelo que a soma das 3 linhas é 300 + 100 + 150 = 550.
Tabela Contact_Info
Name Business_Phone Cell_Phone Home_Phone
Jeff 531-2531 622-7813 565-9901
Laura NULL 772-5588 312-4088
Peter NULL NULL 594-7477
Resultado:
Name Contact_Phone
Jeff 531-2531
Laura 772-5588
Peter 594-7477
Por exemplo, suponhamos que temos uma tabela que regista as vendas
actuais e o objectivo de vendas conforme abaixo:
Tabela Sales_Data
O resultado é:
Nesta página, listamos a sintaxe SQL para cada um dos comandos SQL
presentes neste tutorial. Para obter explicações detalhadas sobre cada sintaxe
SQL, consulte a secção individual clicando na palavra-chave.
O objectivo desta página é obter uma referência rápida acerca da sintaxe SQL.
Sugerimos que adicione esta página aos favoritos premindo Control-D para
que possa aceder rapidamente a esta página de sintaxe.
Select
SELECT "nome_coluna" FROM "nome_tabela";
Distinct
SELECT DISTINCT "nome_coluna"
FROM "nome_tabela";
Where
SELECT "nome_coluna"
FROM "nome_tabela"
WHERE "condição";
And/Or
SELECT "nome_coluna"
FROM "nome_tabela"
WHERE "condição simples"
{[AND|OR] "condição simples"}+;
In
SELECT "nome_coluna"
FROM "nome_tabela"
WHERE "nome_coluna" IN ('valor1', 'valor2', ...);
Between
SELECT "nome_coluna"
FROM "nome_tabela"
WHERE "nome_coluna" BETWEEN 'valor1' AND 'valor2';
Like
SELECT "nome_coluna"
FROM "nome_tabela"
WHERE "nome_coluna" LIKE {PATROON};
Order By
SELECT "nome_coluna"
FROM "nome_tabela"
[WHERE "condição"]
ORDER BY "nome_coluna" [ASC, DESC];
Count
SELECT COUNT("nome_coluna")
FROM "nome_tabela";
Group By
SELECT "nome_coluna 1", SUM("nome_coluna 2")
FROM "nome_tabela"
GROUP BY "nome_coluna 1";
Having
SELECT "nome_coluna 1", SUM("nome_coluna 2")
FROM "nome_tabela"
GROUP BY "nome_coluna 1"
HAVING (condição da função aritmética);
Create Table
CREATE TABLE "nome_tabela"
("coluna 1" "tipo_dados_para_coluna_1",
"coluna 2" "tipo_dados_para_coluna_2",
... );
Drop Table
DROP TABLE "nome_tabela";
Truncate Table
TRUNCATE TABLE "nome_tabela";
Insert Into
INSERT INTO "nome_tabela" ("coluna 1", "coluna 2", ...)
VALUES ("valor 1", "valor 2", ...);
Update
UPDATE "nome_tabela"
SET "coluna 1" = [novo valor]
WHERE "condição";
Delete From
DELETE FROM "nome_tabela"
WHERE "condição";