-
-
Save reginadiana/fc81ecaffa91e9562a8bd7e3059f90ae to your computer and use it in GitHub Desktop.
As sintaxes apresentadas sao baseadas em SQL, mas vale lembrar que dependendo do tipo de banco que esteja utilizando (ex: Oracle, SQL Server), algumas sintaxes podem mudar.
Select TOP
É bem parecido com o uso do LIMIT
. Com o TOP
conseguimos limitar uma quantidade de retornos baseado em valores fixos ou em porcentagem. É útil para base de dados grandes.
Limitando por valor fixo:
SELECT TOP 50 <column> FROM <table>;
Limitando por porcentagem:
Se quisermos puxar 90% da base, podemos fazer
SELECT TOP 90 PERCENT <column> FROM <table>;
Para o Oracle por exemplo, usariamos uma sintaxe com FETCH FIRST
Podemos mesclar a seleçao com top com outras queries como where
, order by
, etc:
SELECT TOP 5 <column> FROM <table>
WHERE column is not null
SELECT TOP 3 * FROM <table>
ORDER BY <column> DESC;
Podemos aplicar funções nativas nas nossas queries.
MAX()
Retorna o maior valor daquela coluna. Ex: retornar o maior preço
SELECT MIN(Price)
FROM Products;
MIN()
Retorna o menor valor daquela coluna. Ex: retornar o menor preço
SELECT MIN(Price)
FROM Products;
Agregando outras queries. Ex: retorna uma coluna com os menores valores em conjunto com seus respectivos category ids.
Aqui, o AS
está sendo usado para definir um nome descritivo (SmallestPrice) para o retorno de MAX(Price)
SELECT MIN(Price) AS SmallestPrice, CategoryID
FROM Products
GROUP BY CategoryID;
É possível definir uma frase ou conjunto de palavras como alias. Ex:
SELECT COUNT(*) AS [Number of records]
FROM Products;
COUNT()
Retorna a quantidade de valores daquela coluna considerando valores nulos. Ex: retornar quantos preços existem
SELECT COUNT(Price)
FROM Products;
SUM()
Retorna o valor somado dos valores daquela coluna. Ex: retornar a soma total de todos os preços
SELECT SUM(Price)
FROM Products;
Podemos ainda manipular expressões dentro da função, como por exemplo multiplicando cada quantidade por 10 e depois somando tudo
SELECT SUM(Quantity * 10)
FROM OrderDetails;
Podemos ainda manupular e relacionar tabelas diferentes:
SELECT SUM(Price * Quantity)
FROM OrderDetails
LEFT JOIN Products ON OrderDetails.ProductID = Products.ProductID;
AVG()
Retorna a média dos valores daquela coluna, ignorando valores nulos. Ex: retornar a média de preço
SELECT AVG(Price)
FROM Products;
Podemos ainda manular outras queries em cima, como por exemplo, puxando todos os produtos cujo seu valor é maior do que a média:
SELECT * FROM Products
WHERE price > (SELECT AVG(price) FROM Products);
LIKE
O LIKE
é usado em conjunto com o WHERE
para fazer buscas mais sofisticadas em strings. Podemos buscar por valores que começem, terminem ou contenham com letras especificas por exemplo.
... continuar
Termo | Descrição |
---|---|
SQL | linguagem estruturada para acessar e manipular dados de um banco de dados |
RDBMS | linguagem que permite criar, acessar e gerenciar banco de dados relacionais |
database |
conjunto de uma ou mais tabelas |
table |
conjunto de uma ou mais colunas e linhas |
column |
representa uma divisão de dados na tabela, ex: id , name |
row |
representa um registro dentro da tabela |
field |
representa um valor dentro de uma coluna |
Comando | Descrição |
---|---|
SELECT | extracts data from a database |
UPDATE | updates data in a database |
DELETE | deletes data from a database |
INSERT INTO | inserts new data into a database |
CREATE DATABASE | creates a new database |
ALTER DATABASE | modifies a database |
CREATE TABLE | creates a new table |
ALTER TABLE | modifies a table |
DROP TABLE | deletes a table |
CREATE INDEX | creates an index (search key) |
DROP INDEX | deletes an index |
-
Queries
Retorna todas as colunas e linhas:
SELECT * FROM table;
Retorna uma coluna e seus campos:
SELECT column FROM table;
Retorna duas ou mais colunas e seus campos:
SELECT column1, column2... FROM table;
Retorna uma quantidade limitada de resultados:
SELECT * FROM table LIMIT 1000 # aliás, isso é um comentário em SQL
Retorna os campos que sao diferentes em uma coluna, isto é, se tivermos uma coluna chamada "name" com 2 valores "Maria", essa query vai retornar apenas um registro com o nome de "Maria". Em outras palavras, ela omite os valores repetidos:
SELECT DISTINCT column FROM table;
Agora, se quisermos contas quantas vezes o nome "Maria" apareceu na coluna "name", podemos fazer algo como:
SELECT COUNT(DISTINCT column) FROM table;
Verifica se o valor é nulo:
SELECT column1 FROM table WHERE column1 IS NULL; # IS NOT NULL para nao nulos
-
Operações com WHERE
SELECT * FROM table WHERE column = 'string_type_value'
SELECT * FROM table WHERE column > 80 # valor do tipo numérico
SELECT * FROM table WHERE column < 60
SELECT * FROM table WHERE column <= 60
SELECT * FROM table WHERE column >= 60
SELECT * FROM table WHERE column <> 'string' # OU !=, diferente de
SELECT * FROM table WHERE column BETWEEN 60 AND 80
SELECT * FROM table WHERE column LIKE 'partial_string%' # OU '%partial_string', '%partial_string%'
SELECT * FROM table WHERE column IN ('value1', 'value2')
-
Operações com ORDER BY
Retorna os registros ordenados:
Para valores numéricos, a ordenação será em relação a um valor menor ou maior. Já para strings, a ordenação será alfabética.
SELECT column1, column2, ... FROM table ORDER BY column1, column2, ... ASC|DESC;
Podemos ordenar múltiplas colunas de uma vez. Ex: dado uma tabela com as colunas "Country" e "Name", se fizemos a ordenação primeiro pelo país teremos o seguinte resultado:
SELECT * FROM Countries ORDER BY Country
Repare que a coluna de nome segue uma ordem dentro dos registros "Argentina" que estao na coluna "Country":
Agora, se quisermos ordenar a coluna de nome dentro dos registros de "Argentina", adicionamos uma segunda coluna na ordenacao:
SELECT * FROM Countries ORDER BY Country, CustomerName;
-
CRUD
CREATE
Inserindo um novo registro na tabelaPodemos definir as colunas e os valores respectivos para cada uma.
INSET INTO table (column1, column2, column3...) VALUES ('value1', 'value2', 'value3'...)
READ
Acessando valoresSELECT * FROM table
UPDATE
Atualizando um valor⚠️ Sempre adicione um where na query para atualizar o valor correto, a menos que queria atualizar todos os valores daquela colunaUPDATE table SET column = 'new_value' WHERE column = 'old_value'
DELETE
Deletando valores e tabelasPara deletar um registro:
DELETE FROM table WHERE column = 'value'
Para deletar todos os registros de uma tabela, mantendo sua estrutura:
DELETE FROM table;
Já para deletar a tabela em si:
DROP TABLE table;