Conhecendo a linguagem SQL

Publicado por Merovingio em 19/03/2014

[ Hits: 8.805 ]

 


Conhecendo a linguagem SQL



Salve, salve, turma VOL!

Sou o Merovingio e essa é a minha primeira contribuição, de muitas. Todo o conteúdo da dica, faz parte do meu conhecimento acadêmico.

Linguagem SQL

Trata-se de um tipo de linguagem muito usada e importante, chamada SQL (Structured Query Language, ou Linguagem de Consulta Estruturada). Pra quem quer saber um pouco mais sobre a linguagem, pode ver neste link:
Para começar, é necessário um SGBD (eu uso o PostgreSQL), mas pode ser qualquer um. Pode ser o MySQL ou, para quem faz uso do sistema do Bill (o Windows), tem o SQL Server. Bem, cada SGBD tem características próprias, mas a linguagem é a mesma para todos. Vamos lá.

Os comandos em SQL podem ser agrupados em cinco categorias. Segue abaixo suas definições:
  • DDL :: Data Definition Language (Linguagem de Definição de Dados), é o conjunto de comandos utilizados para incluir, alterar e excluir tabelas e visões;
  • DML :: Data Manipulation Language (Linguagem de Manipulação de Dados), é o conjunto de comandos utilizados para incluir, alterar e excluir dados;
  • DCL :: Data Control Language (Linguagem de Controle de Dados), é o conjunto de comandos utilizados para controlar o nível de acesso de usuários;
  • DQL :: Data Query Language (Linguagem de Consulta de Dados), se resume basicamente ao comando SELECT;
  • DTL :: Data Transaction Language (Linguagem de Transação de Dados), é o conjunto de comandos utilizados para iniciar uma transação.

Até aí, tudo bem! Legal essa parte né? Mas, vamos ver o uso dos comandos:

DDL:
  • CREATE :: Cria objetos em um SGBD.
  • ALTER :: Altera a estrutura de objetos em um SGBD.
  • DROP :: Exclui objetos em um SGBD.

* Lembrando: SGBD é o Sistema de Gerenciamento de Banco de Dados. Ex.: PostgreSQL, MySQL, SQL Server, etc.

DML:
  • INSERT: : Inserir dados em uma tabela.
  • UPDATE :: Alterar dados em uma tabela.
  • DELETE :: Excluir dados em uma tabela.

DCL:
  • GRANT :: Concede permissões de acesso a dados.
  • DENY :: Negar permissões de acesso a dados.
  • REVOKE :: Remove permissões concedidas ou negadas anteriormente.

DQL:
  • SELECT :: Consulta dados em uma tabela.

DTL:
  • BEGIN TRANSACTION :: Marca o ponto inicial de uma transação.
  • COMMIT TRANSACTION :: Força a gravação das mudanças no banco.
  • ROOLBACK TRANSACTION :: Descarta as alterações desde o último commit.

Agora, um pouco de sintaxe.

DDL:
  • CREATE DATABASE nome-do-banco; → Como já sabemos, cria o banco.
  • ALTER DATABASE nome-atual-do-banco RENAME TO novo-nome-do-banco; → Renomeia o banco.
  • DROP DATABASE nome-do-banco; → Exclui o banco.

Exemplos:

CREATE DATABASE Banco;
ALTER DATABASE Banco RENAME TO MeuBanco;
DROP DATABASE MeuBanco;


Agora, a mesma coisa, só que em tabelas:
 
  CREATE TABLE tabela ( atributo1 tipo,
                        atributo2 tipo);
  
  ALTER TABLE tabela (ADD/DROP/ALTER COLUMN) atributo tipo,
                                             atributo tipo;
  
  DROP TABLE nome-ta
 
 
Exemplos:
 
  CREATE TABLE Cliente ( Codigo int PRIMARY KEY,
                         Nome varchar(45) NOT NULL);
  
  ALTER TABLE Cliente ADD Sobrenome varchar(45) NOT NULL;
  
  DROP TABLE Cli
 
 
Obs.: PRIMARY KEY ou Chave Primária, veremos mais à frente.

Vamos à sintaxe do comando DML:
  • INSERT INTO tabela (campos) VALUES (valores);
  • UPDATE tabela SET campo = expressão WHERE condição;
  • DELETE FROM tabela;

Exemplos:

INSERT INTO Cliente (Codigo, Nome, Sobrenome) VALUES (10,'Paulo','Soares');
UPDATE Cliente SET Sobrenome = 'Silva' WHERE Soares;
DELETE FROM Cliente;


Comandos DQL:

Esse comando é bem simples, resume-se basicamente ao comando SELECT:

SELECT tipo campos FROM tabela condição

Onde:
  • TIPO :: Parâmetro opcional que determina o tipo de registro.
  • CAMPO :: Coluna da consulta.
  • TABELA :: Nome da tabela a ser consultada.
  • CONDIÇÃO :: Aqui vamos ver alguns critérios.
  • WHERE :: Permite criar condições para filtrar dados utilizando operadores, dos tipos:

    • Relacionais :: <, <=, >, >=. =, <>;
    • Lógicos :: NOT, IN, LIKE, etc.
    • GROUP BY :: Agrupa dados em uma consulta.
    • ORDER BY :: <ASC/DESC> Ordenação (ascendente ou descendente).

Exemplo:

SELECT * FROM Cliente;
Ou:
SELECT Nome Cliente FROM Codigo = 10;

Mais um:

SELECT * FROM Cliente ORDER BY ASC;

E o DTL:

BEGIN TRANSACTION
<instruções SQL>
COMMIT TRANSACTION ou ROLLBACK TRANSACTION


Praticamente, isso.

Restrição de Domínio

Pronto, já conhecemos os comandos básicos SQL. Veremos agora, uma coisa chamada Restrição de Domínio.

Comados:
  • PRIMARY KEY :: Chave Primária.
  • FORENIGN KEY :: Chave Estrangera.
  • CHECK :: Especifica as restrições de integridade.
  • DEFAULT :: Especifica o valor padrão para as colunas com o tipo de dado do domínio.
  • NOT NULL :: Não permite valor nulo.
  • NULL :: São permitidos valores nulos.

Para isso, usaremos duas tabelas:
 
  CREATE TABLE Cliente ( Cod_cli int PRIMARY KEY,
                         Nome varchar(45),
                         Sexo char(1));
  CREATE TABLE Endereco ( Codigo int PRIMARY KEY,
                          Rua varchar(45),
                          Cep numeric(8)
                          Numeoro numeric
 
 
Exemplo de FOREIGN KEY:
 
  CREATE TABLE Cliente ( Cod_cli int PRIMARY KEY,
                         Nome varchar(45),
                         Sexo char(1),
                         FOREIGN KEY (Cod_end) REFERENCES Endereco(Cod_e
 
 
Exemplo de CHECK:
 
  CREATE TABLE Cliente ( Cod_cli int PRIMARY KEY,
                         Nome varchar(45),
                         Sexo char(1)CHECK(Sexo = 'M' OR sexo = '
 
 
Exemplo de DEFAULT:
 
  CREATE TABLE Cliente ( Cod_cli int PRIMARY KEY,
                         Nome varchar(45),
                         Sexo char(1) DEFAULT('
 
 
Exemplo de NOT NULL:
 
  CREATE TABLE Cliente ( Cod_cli int PRIMARY KEY,
                         Nome varchar(45) NOT NULL,
                         Sexo char
 
 

Junção

São alguns exemplos, só coisa básica. Chegou a hora das Junções.

- O que é junção?
- Bem, junção é o ato de juntar duas coisas.

No modo relacional, é: Operação para combinar dados de duas ou mais tabelas.

Usaremos o exemplo:
  
  CREATE TABLE Cliente ( Cod_cli int PRIMARY KEY,
                         Nome varchar(45),
                         Sexo char(1));
  
  CREATE TABLE Endereco ( Cod_cli int,
                          Rua varchar(45),
                          Cep numeric(8),
                          Numeoro numeric(6)
                          FOREIGN KEY (Cod_cli) REFERENCES Cliente(Cod_C
 
 
Operações:

Cartesiano:
SELECT * FROM Cliente,Endereco;

União:
SELECT * FROM Cliente UNION SELECT * FROM Cliente;

Interseção:
SELECT * FROM Cliente INTERSECT SELECT * FROM Cliente;

Diferença:
SELECT * FROM Cliente EXCEPT SELECT * FROM Cliente;

Tipos de JOIN:

- INNER JOIN
Junta todos os registros que possuem correspondência nas tabelas relacionadas.
Exemplo:

SELECT Cli.nome, End.Rua, End.Cep, End.Numero
FROM Cliente as Cli
INNER JOIN Enderco as End on Cli.Cod_cli = End.Cod_cli;

- LEFT JOIN
Junta todos os registros da primeira tabela e na segunda, apenas aqueles que possuem relação.
Exemplo:

SELECT Cli.nome, End.Rua, End.Cep, End.Numero
FROM Cliente as Cli
LEFT JOIN Enderco as End on Cli.Cod_cli = End.Cod_cli;

- RIGHT JOIN
Junta todos os registros da segunda tabela e na primeira, apenas aqueles que possuem relação.
Exemplo:

SELECT Cli.nome, End.Rua, End.Cep, End.Numero
FROM Cliente as Cli
RIGHT JOIN Enderco as End on Cli.Cod_cli = End.Cod_cli;

- FULL OUTER JOIN
Mostra todos os registros das duas tabelas, independente de existirem correspondências.
Exemplo:

SELECT Cli.nome, End.Rua, End.Cep, End.Numero
FROM Cliente as Cli
FULL OUTER JOIN Enderco as End on Cli.Cod_cli = End.Cod_cli;

- CROSS JOIN
Junta todos os registros de duas tabelas formando um produto cartesiano.
Exemplo:

SELECT Cli.nome, End.Rua, End.Cep, End.Numero
FROM Cliente as Cli
CROSS JOIN Enderco as End on Cli.Cod_cli = End.Cod_cli;

Conclusão

Bem, com essas informações, já dá para "brincar" com um banco de dados.

Só fique claro: isso não é tudo, existem ainda três coisas muito importantes: TRIGGERS, PROCEDURES e FUNÇÕES.

Vou esperar comentários sobre a dica, caso sejam positivos, criarei outra com TRIGGERS, PROCEDURES e FUNÇÕES.

É isso aí, turma.
Espero que não tenha errado nada, mas acho que está tudo certo. Fui.

Outras dicas deste autor
Nenhuma dica encontrada.
Leitura recomendada

SELECT para paginação no MySQL

Firebird 2.1 com FlameRobin no Ubuntu 9.10

MySQL no Debian 6

Lentidão ao carregar sistema com Fedora 7 + LDAP + Samba

Dados X Informação

  

Comentários
[1] Comentário enviado por cesaraf em 20/03/2014 - 12:44h

Excelente irmão!!! Gostaria que continuasse nessa jornada!!!

[2] Comentário enviado por sk47 em 01/04/2014 - 13:55h

Parabéns pelo artigo! muito completo e detalhado, salvo nos favoritos!

[3] Comentário enviado por removido em 11/06/2015 - 01:30h

Parabéns pelo texto. ADD
Ele tem a estrutura de um artigo.
Dava prá dividir em algumas páginas.
--
Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts