Comandos DDL e DML Essenciais: Create, Select, Update, Delete
Trabalhar com bancos de dados, especialmente os relacionais como o MySQL, envolve fundamentalmente definir a estrutura dos seus dados e, em seguida, interagir com esses dados. Esse processo é tipicamente dividido em duas categorias principais de comandos SQL: Data Definition Language (DDL) e Data Manipulation Language (DML). Os comandos DDL são usados para definir e gerenciar objetos de banco de dados, como tabelas, enquanto os comandos DML são usados para inserir, recuperar, modificar e excluir registros dentro dessas tabelas.
Este guia o conduzirá pelos comandos DDL e DML mais essenciais do MySQL: CREATE TABLE para definir suas estruturas de dados, e INSERT, SELECT, UPDATE e DELETE para manipular os próprios dados. Dominar esses comandos é um passo crucial para qualquer pessoa que busca gerenciar e utilizar efetivamente um banco de dados MySQL.
Data Definition Language (DDL): Criando Tabelas
Os comandos DDL estão relacionados ao esquema e à estrutura dos objetos do seu banco de dados. O comando DDL mais fundamental para armazenamento de dados é CREATE TABLE, que permite definir o projeto (blueprint) para seus dados.
Sintaxe do CREATE TABLE
A sintaxe básica para criar uma tabela envolve especificar o nome da tabela e, em seguida, definir suas colunas, incluindo seus tipos de dados e quaisquer restrições.
CREATE TABLE table_name (
column1 datatype constraints,
column2 datatype constraints,
column3 datatype constraints,
...
);
table_name: O nome que você deseja dar à sua tabela. Deve ser único dentro do banco de dados.column_name: O nome de cada campo individual dentro da tabela.datatype: Especifica o tipo de dados que a coluna irá armazenar (por exemplo,INTpara inteiros,VARCHAR(255)para strings de comprimento variável,DATEpara datas,DECIMAL(10, 2)para números decimais precisos).constraints: Regras aplicadas a uma coluna para garantir a integridade dos dados. As restrições comuns incluem:NOT NULL: Garante que uma coluna não pode ter um valor NULL.UNIQUE: Garante que todos os valores em uma coluna são distintos.PRIMARY KEY: Uma combinação deNOT NULLeUNIQUE. Cada tabela deve ter uma chave primária para identificar unicamente cada linha.FOREIGN KEY: Liga uma coluna em uma tabela à chave primária de outra tabela, aplicando a integridade referencial.DEFAULT value: Define um valor padrão para uma coluna se nenhum valor for especificado durante a inserção.
Exemplo de CREATE TABLE
Vamos criar uma tabela products simples para armazenar informações sobre itens em um inventário:
CREATE TABLE products (
product_id INT AUTO_INCREMENT PRIMARY KEY,
product_name VARCHAR(100) NOT NULL UNIQUE,
category VARCHAR(50),
price DECIMAL(10, 2) NOT NULL,
stock_quantity INT DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Neste exemplo:
* product_id é um inteiro que incrementa automaticamente e serve como chave primária.
* product_name é uma string obrigatória que deve ser única.
* price é um número decimal obrigatório.
* stock_quantity assume o valor padrão de 0 se não for especificado.
* created_at registra o timestamp quando a linha foi criada.
Data Manipulation Language (DML): Trabalhando com Dados
Os comandos DML são usados para gerenciar os registros (linhas) dentro das tabelas do seu banco de dados. Eles são os comandos mais frequentemente usados para operações diárias de banco de dados.
Comando INSERT: Adicionando Novos Dados
O comando INSERT é usado para adicionar novas linhas de dados a uma tabela.
Sintaxe do INSERT
Existem algumas maneiras de usar o INSERT:
-
Especificando valores para todas as colunas:
sql INSERT INTO table_name VALUES (value1, value2, value3, ...);
A ordem dos valores deve corresponder à ordem das colunas na definição da tabela. -
Especificando valores para colunas específicas:
sql INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);
Esta é geralmente a opção preferida, pois é mais legível e menos propensa a erros se a estrutura da tabela mudar.
Exemplo de INSERT
Usando nossa tabela products:
-- Inserindo valores para todas as colunas (assumindo AUTO_INCREMENT para product_id)
INSERT INTO products (product_name, category, price, stock_quantity)
VALUES ('Laptop Pro', 'Electronics', 1200.50, 50);
-- Inserindo valores para colunas específicas
INSERT INTO products (product_name, price)
VALUES ('Mechanical Keyboard', 75.99);
-- Inserindo várias linhas de uma vez
INSERT INTO products (product_name, category, price, stock_quantity)
VALUES
('Ergonomic Mouse', 'Electronics', 25.00, 120),
('Desk Lamp', 'Home Goods', 45.00, 75);
Comando SELECT: Recuperando Dados
O comando SELECT é a pedra angular da recuperação de dados. Ele permite que você consulte seu banco de dados e obtenha dados específicos com base em vários critérios.
Sintaxe do SELECT
SELECT column1, column2, ...
FROM table_name
WHERE condition
ORDER BY column_name [ASC|DESC]
LIMIT number;
column1, column2, ...: As colunas que você deseja recuperar. Use*para selecionar todas as colunas.FROM table_name: A tabela que você está consultando.WHERE condition: (Opcional) Filtra as linhas com base em uma condição especificada. As condições podem envolver operadores de comparação (=,!=,>,<,>=,<=), operadores lógicos (AND,OR,NOT) e correspondência de padrões (LIKE).ORDER BY column_name [ASC|DESC]: (Opcional) Classifica o conjunto de resultados por uma ou mais colunas.ASCpara ascendente (padrão),DESCpara descendente.LIMIT number: (Opcional) Restringe o número de linhas retornadas.
Exemplos de SELECT
-- Selecionar todas as colunas para todos os produtos
SELECT *
FROM products;
-- Selecionar apenas o nome e o preço dos produtos
SELECT product_name, price
FROM products;
-- Selecionar produtos na categoria 'Electronics'
SELECT *
FROM products
WHERE category = 'Electronics';
-- Selecionar produtos com preço maior que 100, ordenados por preço decrescente
SELECT product_name, price
FROM products
WHERE price > 100
ORDER BY price DESC;
-- Selecionar os 5 produtos mais caros
SELECT product_name, price
FROM products
ORDER BY price DESC
LIMIT 5;
-- Selecionar produtos cujo nome começa com 'L'
SELECT *
FROM products
WHERE product_name LIKE 'L%';
Comando UPDATE: Modificando Dados Existentes
O comando UPDATE permite alterar registros existentes em uma tabela.
Sintaxe do UPDATE
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
table_name: A tabela que contém os registros a serem atualizados.SET column1 = value1, ...: Especifica quais colunas atualizar e seus novos valores.WHERE condition: Crucial! Esta cláusula determina quais linhas serão atualizadas. Se omitida, todas as linhas na tabela serão atualizadas.
Exemplos de UPDATE
-- Aumentar o preço do 'Laptop Pro' em 50
UPDATE products
SET price = price + 50.00
WHERE product_name = 'Laptop Pro';
-- Atualizar a categoria e o estoque do 'Mechanical Keyboard'
UPDATE products
SET category = 'Accessories', stock_quantity = 100
WHERE product_name = 'Mechanical Keyboard';
-- **ATENÇÃO**: Isso atualizaria o preço de TODOS os produtos para 10.00
-- UPDATE products
-- SET price = 10.00;
Dica: Sempre use uma cláusula WHERE ao atualizar para garantir que você modifique apenas os registros pretendidos. Teste sua cláusula WHERE com uma instrução SELECT primeiro para verificar se ela direciona as linhas corretas.
Comando DELETE: Removendo Dados
O comando DELETE é usado para remover linhas de uma tabela.
Sintaxe do DELETE
DELETE FROM table_name
WHERE condition;
table_name: A tabela da qual remover linhas.WHERE condition: Crucial! Esta cláusula especifica quais linhas excluir. Se omitida, todas as linhas na tabela serão excluídas.
Exemplos de DELETE
-- Excluir o produto com o nome 'Desk Lamp'
DELETE FROM products
WHERE product_name = 'Desk Lamp';
-- Excluir todos os produtos que ficaram sem estoque (stock_quantity é 0)
DELETE FROM products
WHERE stock_quantity = 0;
-- **ATENÇÃO**: Isso excluiria TODOS os registros da tabela 'products'!
-- DELETE FROM products;
Aviso: Semelhante ao UPDATE, omitir a cláusula WHERE em uma instrução DELETE é uma operação destrutiva que removerá todos os dados da tabela. Use com extrema cautela.
Resumo
Compreender e usar eficazmente os comandos DDL e DML é fundamental para o gerenciamento de banco de dados. CREATE TABLE permite definir a estrutura dos seus dados, enquanto INSERT, SELECT, UPDATE e DELETE capacitam você a popular, consultar, modificar e gerenciar esses dados.
Ao praticar esses comandos com cláusulas WHERE claras, especialmente para UPDATE e DELETE, você pode construir uma base sólida para trabalhar com bancos de dados MySQL e garantir a integridade e precisão dos seus dados. Lembre-se sempre de fazer backup dos seus dados antes de realizar operações potencialmente destrutivas.