Guia prático de comandos SQL: DDL e DML com exemplos
Resumo
O documento apresenta comandos SQL para criar e alterar tabelas (DDL) e para inserir, consultar e manipular dados (DML). Inclui exemplos de criação de tabelas com chaves primárias, estrangeiras e restrições CHECK, além de filtros, alias, ordenação, LIKE, GROUP BY com HAVING e a sintaxe básica de JOIN.
Pontos-chave
- DDL (Data Definition Language) define e altera a estrutura das tabelas, como CREATE TABLE, ALTER TABLE RENAME COLUMN, MODIFY e ADD.
- As restrições PRIMARY KEY, FOREIGN KEY e CHECK garantem a integridade dos dados nas tabelas.
- INSERT INTO adiciona registros respeitando os tipos e restrições definidos na tabela.
- DML (Data Manipulation Language) consulta e manipula dados com SELECT, WHERE, DISTINCT, ORDER BY e alias com AS.
- O operador LIKE com % permite buscar padrões de texto, como nomes que contenham uma palavra.
- GROUP BY agrupa registros e HAVING filtra os grupos após a agregação, como COUNT(*).
- CREATE TABLE ... AS SELECT cria uma nova tabela a partir do resultado de uma consulta.
Criando tabelas no Banco de Dados
CREATE TABLE Parentesco (
ID NUMBER(4),
Descricao VARCHAR2(75) NOT NULL,
CONSTRAINT PK_Parentesco PRIMARY KEY (ID)
);
CREATE TABLE Pessoa (
CPF NUMBER(11),
Nome_completo VARCHAR2(150) NOT NULL,
DT_nascimento DATE,
Sexo CHAR(1),
ID_parentesco NUMBER(4),
CONSTRAINT PK_pessoa PRIMARY KEY (CPF),
CONSTRAINT Check_date CHECK (DT_nascimento >= TO_DATE('01/01/1920', 'DD/MM/YYYY')),
CONSTRAINT Check_Sexo CHECK (Sexo IN ('M', 'F')),
CONSTRAINT FK_ID_Pessoa FOREIGN KEY (ID_parentesco) REFERENCES Parentesco(ID)
);Inserindo registros nas tabelas
INSERT INTO Parentesco (ID, Descricao) VALUES (9000, 'EU');
INSERT INTO Parentesco (ID, Descricao) VALUES (9100, 'Pai');
INSERT INTO Pessoa (CPF, Nome_completo, DT_nascimento, Sexo, ID_parentesco)
VALUES (12345678910, 'Igor Assis da Silva', TO_DATE('19/03/1993', 'DD/MM/YYYY'), 'M', 9000);Alterações de estrutura (DDL)
- Alterar nome de coluna:
ALTER TABLE cliente RENAME COLUMN CLI_ENDER TO CLI_ENDERECO; - Modificar tipo de coluna:
ALTER TABLE cliente MODIFY (CLI_CREDITO NUMBER(12,2)); - Acrescentar atributo na tabela:
ALTER TABLE veiculo ADD valor_venda NUMERIC(10,2);
Consultas e manipulação de dados (DML)
- Listagem de clientes (filtro complexo):
SELECT * FROM cliente WHERE cli_credito NOT BETWEEN 3000 AND 5000 AND cli_estado <> 'SP'; - Visualizar valores distintos de crédito:
SELECT DISTINCT cli_credito FROM cliente; - Uso de Alias e ordenação:
SELECT cli_nome AS "Nome", cli_credito AS "Credito", cli_credito * 0.08 AS "Reajuste", cli_credito * 1.08 AS "Credito Reajustado" FROM cliente ORDER BY cli_credito; - Identificar clientes indicados pelo cliente 1015:
SELECT cli_nome FROM cliente WHERE cli_id_indicacao IN (1015); - Listar clientes com "Eletro" no nome:
SELECT * FROM cliente WHERE cli_nome LIKE '%ELETRO%'; - Agrupamento e filtro de contagem:
SELECT fabricante, COUNT(*) FROM veiculo GROUP BY fabricante HAVING COUNT(*) <= 5; - Criar tabela a partir de outra:
CREATE TABLE carrosFord AS SELECT placa, ano, modelo, valor_venda FROM veiculo WHERE fabricante = 'FORD';
Sintaxe de JOIN
SELECT <campo> FROM <tabela1> JOIN <tabela2> ON <relacionamento> WHERE <condicao>;
Baixar
PDF Word HTMLPerguntas frequentes
Qual a diferença entre WHERE e HAVING em SQL?
WHERE filtra linhas antes do agrupamento, enquanto HAVING filtra grupos depois do GROUP BY. O documento usa HAVING COUNT(*) <= 5 para filtrar fabricantes após a contagem de veículos.
Como alterar o nome de uma coluna em uma tabela?
Use ALTER TABLE nome_tabela RENAME COLUMN nome_antigo TO nome_novo. O exemplo do documento renomeia CLI_ENDER para CLI_ENDERECO na tabela cliente.
Como criar uma tabela a partir de outra?
Use CREATE TABLE nova_tabela AS SELECT colunas FROM tabela_origem WHERE condicao. O exemplo cria carrosFord com os veículos do fabricante FORD.
Teste-se
Cartões de revisão
Clique em um cartão para ver a resposta.
Teste
Perguntas geradas com IA a partir do documento: verifique as respostas com o texto.