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.