Skip to content

Instantly share code, notes, and snippets.

@geovannaotoni
Last active July 29, 2024 11:45
Show Gist options
  • Save geovannaotoni/85f659517b79b410a01b330ad7deea90 to your computer and use it in GitHub Desktop.
Save geovannaotoni/85f659517b79b410a01b330ad7deea90 to your computer and use it in GitHub Desktop.
Comandos SQL

COMANDOS SQL

Convenções:

  • 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.

Uso e tipos de Aspas:

  • 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).

Constraints (restrições aplicadas às colunas das tabelas):

  • 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.

Principais Queries

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;

Principais Operadores

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

Conditional Statements

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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment