Click here to load reader

Tutorial Linguagem SQL

  • View
    999

  • Download
    1

Embed Size (px)

Text of Tutorial Linguagem SQL

1

TUTORIAL

DE

LINGUAGEM SQL

2

INDCE

1. INTRODUO AO SQL 2. COMANDOS SQL 2.1. Select 2.2. Distinct 2.3. Where 2.4. And Or 2.5. In 2.6. Between 2.7. Like 2.8. Order By 2.9. Funes 2.10. Count 2.11. Group By 2.12. Having 2.13. Alias 2.14. Join 2.15. Outer Join 2.16. Funo Concatenate 2.17. Funo Substring 2.18. Funo Trim 2.19. Funo Length 2.20. Funo Replace 2.21. Funo Dateadd 2.22. Funo Datediff 2.23. Funo Datepart 2.24. Funo Getdate 2.25. Funo Sysdate 3. MANIPULAO DE TABELAS 3.1. Create Table 3.2. Constraint 3.3. NOT NULL Constraint 3.4. DEFAULT Constraint

4 6 6 7 8 9 10 11 13 14 16 17 18 20 21 23 24 26 28 29 30 32 33 34 36 37 38 39 39 41 41 42

3

3.5. UNIQUE Constraint 3.6. CHECK Constraint 3.7. Chave Primria 3.8. Chave Externa 3.9. Create View 3.10. Create Index 3.11. Alter Table 3.12. Drop Table 3.13. Truncate Table 3.14. Insert Into 3.15. Update 3.16. Delete From 4. SQL AVANADOS 4.1. Union 4.2. Union All 4.3. Intersect 4.4. Minus 4.5. Subquery 4.6. Exists 4.7. Case 4.8. NULL 4.9. Funo ISNULL 4.10. Funo IFNULL 4.11. Funo NVL 4.12. Funo Coalesce 4.13. Funo NULLIF 5. SQL SINTAXE

43 43 44 46 48 50 52 55 56 56 58 59 61 61 63 64 66 67 70 71 73 74 75 76 76 78 80

4

1. INTRODUO AO SQL

SQL (Linguagem de Consulta Estruturada) uma linguagem informtica destinada a armazenar, manipular e obter dados armazenados em bases de dados relacionais. A primeira encarnao da linguagem SQL apareceu em 1974, quando um grupo dentro da IBM desenvolveu o primeiro prottipo de uma base de dados relacional. A primeira base de dados relacional comercial foi distribuda pela Relational Software (mais tarde passou a chamar-se Oracle). Existem normas para a linguagem SQL. Contudo, a linguagem SQL que pode ser utilizada em cada um dos principais sistemas RDBMS possui diferentes caractersticas. Isso deve-se a duas razes: 1) A norma SQL relativamente complexa e no prtico implementar toda a norma 2) cada vendedor de bases de dados precisa de formas para diferenciar o seu produto dos outros. Neste tutorial, essas diferenas so mencionadas quando apropriado. Este site de tutorial de SQL lista os comandos SQL utilizados mais frequentemente e encontra-se dividido nas seguintes seces:

Comandos SQL: Instrues SQL bsicas para armazenar, obter e manipular dados numa base de dados relacional. Manipulao de tabelas: Forma como as instrues SQL so utilizadas para gerir tabelas dentro de uma base de dados. Linguagem SQL avanada: Comandos SQL avanados. Sintaxe SQL: Uma nica pgina que lista a sintaxe de todos os comandos SQL neste tutorial.

Para cada comando, a sintaxe SQL ser primeiro apresentada e explicada, seguindo-se um exemplo. No final deste tutorial, deve possuir uma compreenso geral adequada acerca da sintaxe SQL. Alm disso, deve ser capaz de gravar consultas SQL utilizando a sintaxe correta. A minha experincia diz-me que compreender os conceitos bsicos da linguagem SQL muito mais fcil do que dominar todas as complicaes desta linguagem de base de dados, e espero que seja capaz de chegar mesma concluso.

5

Se estiver interessado em saber como obter dados atravs da linguagem SQL, recomendamos que comece pela seco Comandos SQL. Se pretender compreender de que forma a linguagem SQL pode ser utilizada para manipular tabelas de bases de dados, recomendamos que comece pela seco Manipulao de tabelas.

6

2. COMANDOS SQL

2.1. Select Para que servem os comandos SQL? Uma utilizao comum a seleo de tabelas localizadas numa base de dados. Imediatamente, visualizamos duas palavraschave: necessitamos de SELECT (selecionar) FROM (de) uma tabela. (Note que uma tabela um receptculo existente numa base de dados onde os dados esto armazenados. Para obter mais informaes sobre como manipular tabelas, consulte a seco Manipulao de tabelas). Deste modo, temos a estrutura SQL mais bsica: SELECT "nome_coluna" FROM "nome_tabela" De modo a ilustrar o exemplo acima apresentado, assuma que possumos a seguinte tabela: Tabela Store_Information store_name Sales Date Los Angeles 1500 05-Jan-1999 San Diego 250 07-Jan-1999

Los Angeles 300 08-Jan-1999 Boston 700 08-Jan-1999

Iremos utilizar esta tabela como exemplo ao longo deste tutorial (esta tabela ir aparecer em todas as seces). Para selecionar todas as lojas nesta tabela, introduzimos SELECT store_name FROM Store_Information Resultado:

7

store_name Los Angeles San Diego Los Angeles Boston possvel selecionar nomes de vrias colunas, assim como selecionar nomes de vrias tabelas.

2.2. Distinct A palavra-chave SELECT permite-nos obter todas as informaes de uma coluna (ou colunas) numa tabela. Isso, claro, significa obrigatoriamente que existiro redundncias. E se apenas pretendermos selecionar cada elemento DISTINCT? Isso facilmente concretizvel na linguagem SQL. Basta adicionar DISTINCT aps SELECT. A sintaxe ser a seguinte: SELECT DISTINCT "nome_coluna" FROM "nome_tabela" Por exemplo, para selecionar todos os armazenamentos distintos na tabela Store_Information, Tabela Store_Information store_name Sales Date Los Angeles 1500 05-Jan-1999 San Diego 250 07-Jan-1999

Los Angeles 300 08-Jan-1999 Boston introduzimos 700 08-Jan-1999

8

SELECT DISTINCT store_name FROM Store_Information Resultado: store_name Los Angeles San Diego Boston

2.3. Where Em seguida, podemos selecionar condicionalmente os dados da tabela. Por exemplo, podemos pretender obter lojas com vendas superiores a 1.000$. Para tal, utilizamos a palavra-chave WHERE. A sintaxe ser a seguinte: SELECT "nome_coluna" FROM "nome_tabela" WHERE "condio" Por exemplo, para selecionar todas as lojas com valores superiores a 1.000 na Tabela Store_Information, Tabela Store_Information store_name Sales Date Los Angeles 1500 05-Jan-1999 San Diego 250 07-Jan-1999

Los Angeles 300 08-Jan-1999 Boston 700 08-Jan-1999

introduzimos

9

SELECT store_name FROM Store_Information WHERE Sales > 1000 Resultado: store_name Los Angeles

2.4. And Or Na seco anterior, vimos que a palavra-chave WHERE pode ser utilizada para selecionar condicionalmente dados de uma tabela. Esta condio pode ser uma condio simples (como a apresentada na seco anterior) ou pode ser uma condio composta. As condies compostas so constitudas por vrias condies simples ligadas atravs de AND ou OR. No existe qualquer limite relativamente ao nmero de condies simples que podem estar presentes numa nica instruo SQL. A sintaxe de uma condio composta a seguinte: SELECT "nome_coluna" FROM "nome_tabela" WHERE "condio simples" {[AND|OR] "condio simples"}+ Os smbolos {}+ significam que a expresso entre parnteses ir ocorrer uma ou mais vezes. Note que AND e OR podem ser utilizados alternadamente. Alm disso, podemos utilizar os sinais de parnteses () para indicar a ordem da condio. Por exemplo, podemos pretender selecionar todas as lojas com vendas superiores a 1 000 ou todas as lojas com vendas inferiores a 500 mas superiores a 275 na Tabela Store_Information, Tabela Store_Information

10

store_name Los Angeles San Diego

Sales Date 1500 05-Jan-1999 250 07-Jan-1999

San Francisco 300 08-Jan-1999 Boston 700 08-Jan-1999

introduzimos SELECT store_name FROM Store_Information WHERE Sales > 1000 OR (Sales < 500 AND Sales > 275) Resultado: store_name Los Angeles San Francisco

2.5. In Na linguagem SQL, a palavra-chave IN pode ser utilizada de duas formas e esta seco introduz uma que est relacionada com a clusula WHERE. Quando utilizada neste contexto, sabemos exatamente o valor dos valores devolvidos que pretendemos visualizar em pelo menos uma das colunas. A sintaxe para utilizar a palavra-chave IN a seguinte: SELECT "nome_coluna" FROM "nome_tabela" WHERE "nome_coluna" IN ('valor1', 'valor2', ...)

11

O nmero de valores entre parnteses pode ser um ou mais, com cada valor separado por uma vrgula. Os valores podem ser numricos ou caracteres. Se existir apenas um valor entre parnteses, o comando equivalente a WHERE "nome_coluna" = 'valor1' Por exemplo, podemos pretender selecionar todos os registos das lojas de Los Angeles e San Diego na Tabela Store_Information, Tabela Store_Information store_name Los Angeles San Diego Sales Date 1500 05-Jan-1999 250 07-Jan-1999

San Francisco 300 08-Jan-1999 Boston introduzimos SELECT * FROM Store_Information WHERE store_name IN ('Los Angeles', 'San Diego') Resultado: store_name Sales Date Los Angeles 1500 05-Jan-1999 San Diego 250 07-Jan-1999 700 08-Jan-1999

2.6. Between Enquanto a palavra-chave IN ajuda as pessoas a limitar o critrio de seleo a um ou mais valores discretos, a palavra-chave BETWEEN permite a seleo de um

12

intervalo. A sintaxe da clusula BETWEEN a seguinte: 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'. Por exemplo, podemos querer visualizar todas as vendas entre 6 de Janeiro de 1999 e 10 de Janeiro de 2010 na Tabela Store_Information, Tabel Store_Information store_name Los Angeles San Diego Sales Date 1500 05-Jan-1999 250 07-Jan-1999

San Francisco 300 08-Jan-1999 Boston introduzimos SELECT * FROM Store_Information WHERE Date BETWEEN '06-Jan-1999' AND '10-Jan-1999' Note que a data pode estar armazenada em diferentes formatos em bases de dados diferentes. Este tutorial simplesmente seleciona um dos formatos. Resultado: store_name San Diego Sales Date 250 07-Jan-1999 700 08-Jan-1999

San Francisco 300 08-Jan-1999 Boston 700 08-Jan-1999

13

2.7. Like LIKE outra palavra-chave utilizada na clusula WHERE. Basicamente, LIKE permite-lhe efetuar uma procura com base num padro em vez de especificar exatamente o pretendido (como em IN) ou excluir um in