Comandos SQL Essenciais: Guia Prático de Banco de Dados
Criação de Banco de Dados e Tabelas
Criar banco de dados (BD)
create database banco
Criar tabela
create table fitas
(
codigo int primary key,
descricao varchar(20),
data_cadastro datetime,
valor decimal(10,2) NOT NULL
)
ou
create table locacao_item
(
locacao_id int NOT NULL,
fita_cod int NOT NULL,
valor decimal(10,2) NULL default 0,
CONSTRAINT PK_locacao_item PRIMARY KEY (locacao_id, fita_cod)
)
Criando chave estrangeira
alter table nome_da_tabela
add CONSTRAINT FK_nomedadatabela_nomedatabeladeondevemachave FOREIGN KEY (qualseráonomedocampo) REFERENCES Compra (campodeondevem)
Manipulação de Dados (DML)
INSERT: inserir itens na tabela
insert into TABELA (campo1, campo2) values (valor1, valor2)
DELETE: excluir registros da tabela
delete from tabela where condição
UPDATE: alterar registros
update TABELA set campo1 = valor1, campo2 = valor2, campoN = valorN
where condição
Consultas com SELECT
SELECT: selecionar dados de uma tabela
select * from Funcionarios -- seleciona todos os campos
AS: dar um apelido a um campo
select func_id as "Código do Funcionário" from funcionarios
Cláusula WHERE (restrições)
select ... from ... where ...
BETWEEN (condição com uma faixa de valores)
SELECT ... FROM ... WHERE ... BETWEEN ... AND ...
LIKE (busca por padrões)
SELECT ... FROM ... WHERE ... LIKE '[%]parte_literal[%]'
- 'a%': retorna todos os funcionários cujo nome inicia com a letra "a"
- '%a': retorna todos os funcionários cujo nome termina com a letra "a"
- '%b%': retorna todos os funcionários que contêm a letra "b" em qualquer parte do nome
IN (condição com valores fixos)
SELECT ... FROM ... WHERE ... IN (...)
DISTINCT (valores únicos)
O operador DISTINCT elimina todas as repetições.
SELECT DISTINCT ... FROM ...
TOP (limitando a quantidade de registros)
select top 5 * from funcionarios
ORDER BY (ordenação)
select * from setores order by setor_nome asc
Funções de Agregação
COUNT: contador
SELECT COUNT([DISTINCT] campo ou *) FROM ...
SUM: somatória dos valores de um campo
SELECT SUM(...) FROM ...
AVG: média de valores
SELECT AVG(...) FROM ...
MIN e MAX: menor e maior valor
SELECT MIN(...) FROM ...
SELECT MAX(...) FROM ...
GROUP BY (agrupamento)
select setor_id, count(*) as "Total de funcionários no setor"
from funcionarios
where setor_id is not null
group by setor_id
Cláusula HAVING
select setor_id, count(*) as "Total de funcionários no setor"
from funcionarios
where setor_id is not null
group by setor_id
having count(*) > 4
Junções de Tabelas
INNER JOIN
select ... from ... inner join ... on ... = ...