SQL - Linguagem Estruturada de Consulta
O que é SQL?
SQL (Structured Query Language) é a linguagem padrão para trabalhar com bancos de dados relacionais. Ela permite definir estruturas de dados, manipular informações e realizar consultas complexas.
Comandos principais abordados:
- DDL: CREATE, ALTER, DROP
- DML: INSERT, UPDATE, DELETE, SELECT
- DCL: GRANT, REVOKE
CREATE TABLE
O comando CREATE TABLE define a estrutura de uma nova tabela no banco de dados.
Sintaxe básica:
CREATE TABLE nome_tabela (
coluna1 tipo_dado(tamanho),
coluna2 tipo_dado(tamanho),
...
);
Exemplo - Tabela pessoas:
CREATE TABLE pessoas (
cpf varchar(13),
nome varchar(40),
sexo char(1),
salario number(8,2),
data_nasc date
);
CREATE TABLE sexo (
id varchar(1),
descricao varchar(10)
)
Exemplo - Tabela alunos:
CREATE TABLE alunos (
matricula varchar(10),
nome varchar(40),
turma varchar(20),
curso varchar(40)
);
Exemplo - Tabela empréstimo:
CREATE TABLE emprestimos (
numero number(8),
dt_emprestimo date,
valor number(8,2),
cliente varchar(40)
);
DESCRIBE
O comando DESCRIBE (ou DESC) mostra a estrutura de uma tabela existente.
Sintaxe:
DESCRIBE nome_tabela;
-- ou
DESC nome_tabela;
Exemplos:
DESCRIBE pessoa;
DESC aluno;
DESC emprestimo;
ALTER TABLE
Para adicionar colunas a uma tabela existente:
ALTER TABLE pessoas ADD telefone varchar(15);
ALTER TABLE alunos ADD sexo char(1);
ALTER TABLE emprestimos ADD conta varchar(10);
INSERT - Inserindo Dados
O comando INSERT adiciona novos registros às tabelas.
Sintaxe completa:
INSERT INTO nome_tabela VALUES (valor1, valor2, ...);
Sintaxe com colunas específicas:
INSERT INTO nome_tabela (coluna1, coluna2) VALUES (valor1, valor2);
Exemplos :
INSERT INTO pessoas VALUES ('001','João','M',1000, '21/06/1989');
INSERT INTO alunos (matricula, nome) VALUES ('001.201501','Ana Claudia Nunes');
INSERT INTO alunos (matricula, nome) VALUES ('002.589.57','Frodo Baggins');
INSERT INTO emprestimos (dt_emprestimo, valor, numero, cliente)
VALUES ('08/12/2015',1500,100201501,'Hugo Silva');
INSERT INTO sexo (id, descricao) VALUES ('M', 'Masculino');
INSERT INTO sexo (id, descricao) VALUES ('F', 'Feminino');
SELECT
O comando SELECT recupera dados das tabelas.
Sintaxe básica:
SELECT colunas FROM nome_tabela;
Selecionar todas as colunas:
SELECT * FROM nome_tabela;
Exemplos:
SELECT * FROM pessoas;
SELECT matricula, nome FROM alunos;
SELECT numero, cliente FROM emprestimos ORDER BY numero;
select * from pessoas where cpf = '001';
select * from pessoas where nome = 'João';
select * from alunos where matricula
-- Quando se utiliza "=", o resultado precisa ser exatamente igual ao que foi pedido
-- Nesse caso, se tiver um valor 'Frodo Baggins', ele não
-- será retornado porque 'Frodo Baggins' != 'Frodo'
select nome, sexo from pessoas nome like 'J%';
-- O "like" significa que não precisa ser exatamente igual, mas
-- parecido. A "%" indica que depois de "Frodo" pode ter qualquer
-- outra coisa escrita, mas tem que começar com Frodo
select nome, sexo from pessoas nome like '%Claudia%';
Selecionando duas tabelas:
-- O resultado é a multiplicação das colunas e linhas das duas tabelas
select * from pessoas, alunos;
-- Juntando corretamente as tabelas
select from pessoas, sexo where pessoas.sexo = sexo.id;
-- No exemplo abaixo usando alias "AS" ou "apelido" para as colunas e tabelas
SELECT A.NOME AS "Nome do aluno"
, B.DESCRICAO AS "Sexo do aluno"
FROM PESSOAS A JOIN SEXO B ON (B.ID = A.ID_SEXO)
ORDER BY
A cláusula ORDER BY organiza os resultados:
SELECT numero, cliente FROM emprestimos ORDER BY numero;
UPDATE
O comando update altera registros existentes.
Sintaxe:
UPDATE nome_tabela SET coluna1 = valor1, coluna2 = valor2 WHERE condição;
Exemplo:
update pessoas
set sexo = 'M'
where cpf = '001';
update alunos
set sexo = 'F'
where matricula = '001.201501';
DELETE
O comando DELETE FROM nome_tabela WHERE condição;
Sintaxe completa:
delete from nome_tabela where coluna1 = valor1;
Exemplo:
delete from pessoas where cpf = '001';
delete from alunos where matricula = '001.201501';
GROUP BY
Comandos de grupo group by agrupam linhas baseadas em um ou mais campos.
Sintaxe:
select campo1, campo2, função_grupo
from tabela
group by campo1, campo2
-- Contando todos as pessoas
select count(*) from pessoas;
-- Apresentando todos as pessoas por sexo
select sexo, count(*) from pessoas group by sexo;
-- Valor máximo da data de nascimento
select max(data_nasc) from pessoas;
-- Valor mínimo da data de nascimento
select min(data_nasc) from pessoas;
-- Valor médio dos salários
select avg(salario) from pessoas;
-- Somatório dos salários
select sum(salario) from pessoas;
Exercícios Práticos
Para praticar os comandos aprendidos:
- Crie uma tabela
produtocom campos: codigo, nome, preco, estoque - Use DESCRIBE para verificar a estrutura
- Insira alguns produtos na tabela
- Faça consultas para listar todos os produtos e produtos ordenados por preco
Benefícios do SQL
- Padronização: Linguagem universal para bancos relacionais
- Simplicidade: Sintaxe intuitiva para operações complexas
- Flexibilidade: Suporte a consultas simples e avançadas
- Integração: Compatível com diversas linguagens de programação
Dominar estes comandos básicos é fundamental para trabalhar com bancos de dados relacionais.