- Utiliza-se as palavras chave do SQL em caixa alta para diferenciar das indicações de tabelas e colunas.
- Utiliza-se o ; (ponto e vírgula) ao final de cada comando.
- Backticks ou crase (``): identificar nome de tabelas e colunas. Necessárias apenas quando o identificador for uma palavra reservada do MySQL ou quando o nome da tabela/coluna contiver espaços em branco.
- Aspas simples (''): usadas em valores do tipo string (é preferível usar aspas simples no lugar das aspas duplas).
- NOT NULL - O campo não pode conter valores nulos. (Se não houver um valor padrão DEFAULT definido, será sempre necessário passar um valor durante a inserção ou alteração de dados).
- UNIQUE - O valor inserido na coluna da tabela é único para esta coluna registrado nesta tabela.
- PRIMARY KEY - O valor é a chave primária da tabela. (A coluna que possui essa constraint aplicada é o identificador único da tabela). Ela também é, por definição, não nula e única.
- FOREIGN KEY - O valor é uma chave estrangeira da tabela, ou seja, faz referência à chave primária de outra tabela, permitindo um relacionamento entre tabelas.
- DEFAULT - Caso nenhum valor seja inserido na coluna (ou caso seja inserido um valor nulo), a constraint colocará o valor padrão passado para ela.
- RESTRICT: Rejeita a atualização ou exclusão de um registro da tabela pai, se houver registros na tabela filha.
- CASCADE: Atualiza ou exclui os registros da tabela filha automaticamente, ao atualizar ou excluir um registro da tabela pai.
- SET NULL: Define como null o valor do campo na tabela filha, ao atualizar ou excluir o registro da tabela pai.
- SET DEFAULT: Define o valor da coluna na tabela filha como o valor definido como default, ao excluir ou atualizar um registro na tabela pai.
Comando | Definição | Exemplo |
---|---|---|
CREATE | Criar bancos de dados, tabelas, etc | -CREATE DATABASE nome_do_banco_de_dados; - CREATE TABLE actor(actor_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL); |
ALTER | Alterar a estrutura de qualquer objeto | ALTER nome_do_banco_de_dados; |
DROP | Deletar objetos | DROP nome_do_banco_de_dados; |
TRUNCATE | Esvazia os dados dentro de uma tabela, mas a mantém no banco de dados | TRUNCATE table; |
Comando | Definição | Exemplo |
---|---|---|
SHOW | Retorna informações sobre objetos do banco de dados | -SHOW TABLES; - SHOW DATABASES; |
Comando | Definição | Exemplo |
---|---|---|
SELECT | Fazer pesquisas e retornar dados do banco | -SELECT * FROM table - SELECT column1, column2 FROM nome_da_tabela |
INSERT | Insere dados em uma tabela | - INSERT INTO tbl_name (col1, col2) VALUES (value1_col1, value1_col2), (value2_col1, value2_col2); - INSERT INTO tableA (col1, col2) SELECT col1_tableB, col2_tableB FROM tableB; |
UPDATE | Altera dados dentro de uma tabela | UPDATE table SET column1 = new_value WHERE condition condition example: column1 = old_value, column_id = value |
DELETE | Exclui dados de uma tabela | DELETE <statement> FROM table WHERE condition |
Obs: Por padrão, existe uma configuração no MySQL Server chamada Safe Updates Mode que só vai permitir executar os comandos UPDATE e o DELETE caso eles incluam os IDs (coluna do tipo KEY) que devem ser modificados. Assim, para desabilitar essa funcionalidade, utiliza-se o comando SET SQL_SAFE_UPDATES = 0;
Comando | Definição | Exemplo |
---|---|---|
USE | Definir a referência do banco de dados que será utilizado | USE nome_do_banco_de_dados; |
DESCRIBE | Visualizar estrutura de uma tabela | DESCRIBE table; |
Comando | Definição | Exemplo |
---|---|---|
DISTINCT | Oculta dados duplicados, exibe somente dados unicos | SELECT DISTINCT column FROM table; |
COUNT | Retorna a quantidade de resultados (linhas) não nulos da busca | SELECT COUNT(DISTINCT column) FROM table; |
CONCAT | Concatenar resultados de colunas | SELECT CONCAT(column1, ' ', column2) AS new_column_name FROM table; |
WHERE | Cria uma condição para a pesquisa | SELECT * FROM table WHERE column=value; |
GROUP BY | Agrupa o resultado da busca, unindo valores repetidos | SELECT column FROM table GROUP BY column; |
ORDER BY ASC/DESC | Ordenar os resultados de forma alfabética ou numérica | ORDER BY column1 DESC |
LIMIT | Limita os dados retornados para um número de linhas | LIMIT 5 |
OFFSET | Utilizado com o LIMIT, pula linhas desnecessárias | SELECT * FROM table LIMIT 10 OFFSET 3; |
Operador | Definição | Exemplo |
---|---|---|
= | comparação exata de igualdade (Case sensitive) | col_name = "abc" |
!= ou <> | comparação de desigualdade | col_name != "abcd" |
>, <, >=, <= | comparadores numéricos | col_name > 3 |
LIKE | comparação exata de igualdade (Case insensitive) | col_name LIKE "ABC" |
% | Usado com LIKE para buscar a string que corresponda a sequência de caracteres, pode representar zero, um ou múltiplos caracteres | col_name LIKE "%AT%" (matches "AT", "ATTIC", "CAT", "BATS") |
_ | Usado com LIKE, substitui um único caractere | col_name LIKE "AN_" (matches "AND", but not "AN") |
IS NULL/TRUE/FALSE | Verifica valores (linhas) nulos/verdadeiros/falsos na coluna | SELECT * FROM table WHERE column IS NULL; |
BETWEEN | Verifica valores dentro de uma faixa numérica, datas, strings | -WHERE col_name BETWEEN value1 AND value2; - WHERE col_name BETWEEN '2005-05-27' AND '2005-07-17' |
AND | Operador lógico 'e' | SELECT * FROM table WHERE column1 = 1 AND column2 = 2; |
OR | Operador lógico 'ou' | SELECT * FROM table WHERE column1 = value1 OR column2 = value2; |
IN | shorthand para multíplas condições OR | SELECT * FROM table WHERE column1 IN ('value1','value2'); |
NOT | Operador de negação | SELECT * FROM table WHERE NOT column1 = value; |
Operador | Definição | Exemplo |
---|---|---|
+ - / * | Operadores matemáticos | SELECT column1 / column2 FROM table |
DIV | Retorna o resultado inteiro de uma divisão, ignorando as casas decimais | SELECT column1 DIV column2 FROM table |
MOD | Retorna o resto de uma divisão como resultado | SELECT column1 MOD column2 FROM table |
ROUND | Retorna o valor arredondado. Se a parte decimal for >= 0.5, arredonda-se para cima, caso contrário, para baixo. (Pode-se especificar o número de casas decimais* para o arredondamento) | SELECT ROUND(column1, num_casas_dec*) FROM table |
CEIL / FLOOR | Retorna o valor arredondado sempre para cima / baixo | SELECT CEIL(column1) FROM table |
POW | Retorna o valor elevado à potência especificada | SELECT POW(value, power) FROM table |
SQRT | Retorna a raíz quadrada de um valor | SELECT SQRT(column1) FROM table |
RAND | Retorna um valor aleatório entre 0 e 1 | SELECT RAND() |
ROUND & RAND | Retorna um valor aleatório entre uma faixa de valores | SELECT ROUND(initial_value + (RAND() * (final_value - initial_value))); |
Operador | Definição | Exemplo |
---|---|---|
MIN/MAX | Exibe o valor mínimo/máximo da coluna | SELECT MAX(column1) FROM table; |
JSON_ARRAYAGG() | Retorna o resultado como um array | SELECT JSON_ARRAYAGG(column1) FROM table GROUP BY column_id |
AVG() | Retorna o valor médio dos resultados da coluna | SELECT AVG(column1) FROM table; |
SUM() | Retorna a soma dos valores da coluna | SELECT SUM(column1) FROM table; |
GROUP BY | Agrupa todos os registros que têm o mesmo valor, exibindo apenas um registro de cada valor | SELECT column(s), COUNT(*) FROM table GROUP BY column(s); |
HAVING | Utilizado para filtrar resultados agrupados por GROUP BY, assim como SELECT...WHERE é usado para filtrar resultados individuais | SELECT column(s), COUNT(*) FROM table GROUP BY column(s) HAVING condition; |
Comando | Definição | Exemplo |
---|---|---|
DATE | Formato YYYY-MM-DD | -WHERE DATE(coluna_do_tipo_date) = '2005-07-31'; - WHERE coluna_do_tipo_date LIKE '2005-07-31%'; - WHERE coluna_do_tipo_date BETWEEN '2005-05-26 00:00:00' AND '2005-05-27 23:59:59'; |
TIME | Formato hh:mm:ss | SELECT * FROM coluna_do_tipo_datetime WHERE TIME(coluna) = '00:07:11'; |
DATETIME | Formato YYYY-MM-DD hh:mm:ss | SELECT coluna_do_tipo_datetime FROM table WHERE coluna = '2005-05-26 00:07:11'; |
YEAR, MONTH, DAY, HOUR, MINUTE, SECOND | Funções que retornam partes específicas de uma data ou hora | SELECT DAY(coluna_do_tipo_date) FROM table; |
CURRENT_DATE | Retorna a data atual no formato YYYY-MM-DD | SELECT CURRENT_DATE(); |
NOW | Retorna a data atual no formato YYYY-MM-DD HH:MM:SS | SELECT NOW(); |
DATEDIFF | Retorna a diferença em dias entre duas datas | SELECT DATEDIFF('2030-01-31', CURRENT_DATE()); |
TIMEDIFF | Retorna a diferença em horas entre dois horários | SELECT TIMEDIFF('08:30:10', '10:30:50'); |
Comando | Definição | Exemplo |
---|---|---|
LCASE / LOWER | Converte o texto da string para CAIXA ALTA | SELECT LCASE('string'); |
UCASE / UPPER | Converte o texto da string para caixa baixa | SELECT UCASE('string'); |
REPLACE | Substitui as ocorrências de uma substring em uma string | SELECT REPLACE('String Qualquer', 'palavra_a_ser_alterada', 'palavra_nova'); |
LEFT/RIGHT | Retorna o número especificado de caracteres iniciado à esquerda/direita | SELECT LEFT('string', num_caracteres); |
CHAR_LENGTH | Retorna o número de caracteres na srting | SELECT CHAR_LENGTH('string'); |
SUBSTRING / MID | Retorna a parte da string de acordo com o índice do caractere inicial e a quantidade de caracteres a extrair* (opcional: se não passado, retorna até o final da string) | -SELECT SUBSTRING('string', num_caractere_inicial, quant_caracteres*); - SELECT SUBSTRING('string', num_caractere_inicial); |
Obs: No SQL as strings são contabilizadas a partir do índice 1 e não do índice 0, como no JavaScript
Comando | Definição | Exemplo |
---|---|---|
IF | Retorna de acordo com o resultado do IF Statement | SELECT column1, IF(condition, value_if_true, value_if_false) AS condition_result FROM table; |
CASE | Retorna de acordo com as condições declaradas no CASE Statement | SELECT column1 CASE WHEN condition THEN value1 ELSE value2 END AS condition_result FROM table; |
Comando | Definição | Exemplo |
---|---|---|
INNER JOIN | Combinar dados de duas ou mais tabelas, com base em uma coluna relacionada entre elas. Retorna somente os registros que possuem valores correspondentes em ambas as tabelas. | SELECT table1.column, table2.column FROM table1 AS t1 INNER JOIN table2 AS t2 ON t1.column_in_common = t2.column_in_common; |
LEFT JOIN | Combinar dados de duas ou mais tabelas, colocando como referência a tabela da esquerda (table 1). Retorna todos os registros da tabela da esquerda e valores correspondentes da tabela da direita, caso existam. Valores que não possuem correspondentes são exibidos como nulos. | SELECT table1.column(s), table2.column(s) FROM table1 AS t1 LEFT JOIN table2 AS t2 ON t1.column_in_common = t2.column_in_common; |
RIGHT JOIN | Combinar dados de duas ou mais tabelas, colocando como referência a tabela da direita (table 2). Retorna todos os registros da tabela da direita e valores correspondentes da tabela da esquerda, caso existam. Valores que não possuem correspondentes são exibidos como nulos. | SELECT table1.column(s), table2.column(s) FROM table1 AS t1 RIGHT JOIN table2 AS t2 ON t1.column_in_common = t2.column_in_common; |
SELF JOIN | Utilizado para o caso em que uma tabela faz JOIN consigo mesma (auto relacionamento). Geralmente é usado para consultar dados hierárquicos ou para comparar uma linha com outras linhas na mesma tabela. Não é um comando SQL | SELECT table.column1, table.column2 FROM table1 AS t1 INNER JOIN table1 AS t2 ON t1.column_in_common = t2.column_in_common; |
Comando | Definição | Exemplo |
---|---|---|
INT | Um número inteiro. | age INT |
VARCHAR(size) | Uma string de tamanho variável, com limite máximo de caracteres. | name VARCHAR(50) |
CHAR(size) | Uma string de tamanho fixo, com limite máximo de caracteres. | country CHAR(2) |
DATE | Uma data, no formato 'AAAA-MM-DD'. | birth_date DATE |
TIME | Uma hora, no formato 'HH:MM:SS'. | start_time TIME |
DATETIME | Uma combinação de data e hora, no formato 'AAAA-MM-DD HH:MM:SS'. | created_at DATETIME |
FLOAT | Um número de ponto flutuante. | price FLOAT |
DECIMAL(precision, scale) | Um número decimal, com precisão e escala especificadas. | amount DECIMAL(10,2) |
BOOLEAN | Um valor booleano (verdadeiro ou falso). | is_active BOOLEAN |
BLOB | Um objeto binário de grande tamanho. | image BLOB |
TINYINT | Um número inteiro de tamanho pequeno, com sinal opcional. Faixa: -128 a 127 (ou 0 a 255 sem sinal) | status TINYINT |
SMALLINT | Um número inteiro de tamanho pequeno, com sinal opcional. Faixa: -32,768 a 32,767 (ou 0 a 65,535 sem sinal) | quantity SMALLINT |
MEDIUMINT | Um número inteiro de tamanho médio, com sinal opcional. Faixa: -8,388,608 a 8,388,607 (ou 0 a 16,777,215 sem sinal) | population MEDIUMINT |