SQL Anotação Farley Nunes
SQL Anotação Farley Nunes
SQL Anotação Farley Nunes
AVANÇADO!!!
SELECT
Comando universal do SQL que pode ser utilizado independente do
Banco de dados que você estiver trabalhando, SELECT. A ideia básica do
SELECT é que você selecione uma coluna ou mais ou todas de uma
tabela:
SELECT
É possível também que você faça uma consulta e que ela retorne todas
as colunas do banco de dados e não apenas uma ou outra:
DISTINCT
Esse comando é usado quando você quer omitir os dados duplicados
de uma tabela, ou seja, você quer que retorne apenas os dados únicos
da tabela.
WHERE
Esse comando é usado quando você quer que os dados retornados
cumpram uma condição. E ele vem sempre acompanhado de um
operador lógico.
WHERE
Operadores lógicos:
Obs.: para fazer comentários no SQL você usa dois tipos de comando o “ - - “ e o “ /* “.
DESAFIO
Desafio 1:
DESAFIO
Desafio 2:
DESAFIO
Desafio 3:
Com isso a gente conseguiu retornar o Business Entity ID, que é uma chave única para cada usuário.
DESAFIO
Desafio 3:
E com o ID já conhecido usamos o SELECT FROM para achar o e-mail do usuário
COUNT
Basicamente retorna o número de linhas que bate com a condição que
foi definida, ou seja:
Conseguimos trabalhar em conjunto com a função DISTINCT, para que você retorne a contagem especifica de
uma coluna, e não inclua os valores NULL (Nulos)
DESAFIO
Desafio 1:
DESAFIO
Desafio 2:
DESAFIO
Desafio 3:
TOP
Basicamente ele vai filtrar/ limitar, a quantidade de dados que é
retornado de um comando SELECT.
ORDER BY
Basicamente irá permitir que ordene os resultados por alguma coluna
em ordem crescente ou decrescente:
asc = crescente
desc = decrescente
ORDER BY
• asc (ou crescente)
Sintaxe:
GROUP BY
Na pratica:
GROUP BY
Exemplo:
GROUP BY
Exemplo 2:
GROUP BY
Exemplo 3:
DESAFIO
Desafio 1:
DESAFIO
Desafio 2:
DESAFIO
Desafio 3:
DESAFIO
Desafio 4:
HAVING
Basicamente é muito usado em junção com o GROUP BY para filtrar
resultados de um agrupamento, ou seja, ele é uma forma mais simples
de um WHERE para dados agrupados.
Sintaxe:
HAVING
Qual a grande diferença entre WHERE e HAVING, é que o GROUP BY é
aplicado depois que os dados já foram agrupados, enquanto o WHERE
é aplicado antes dos dados serem agrupados.
Ex.:
HAVING
Na pratica:
HAVING
Observação: Se você chegar a usar o HAVING antes do GROUP BY
ocorrerá um erro de sintaxe, porque o HAVING só pode ser usado
depois que os dados estão agrupados, o que não ocorre com a função
WHERE;
HAVING
Exemplo:
HAVING
Exemplo 2:
HAVING
Desafio 1:
HAVING
Desafio 2:
AS
Basicamente serve para dar um nome especifico para uma coluna, ou
um SELECT que você criou ou até mesmo para uma agregação.
AS
Exemplo:
DESAFIO
Desafios:
DESAFIO
Desafios:
DESAFIO
Desafios:
INNER JOIN
Existem três tipos de “JOIN”, são eles:
INNER JOIN
OUTER JOIN
SELF-JOIN
INNER JOIN
Abaixo temos 2 tabelas, a “Cliente” e a “Endereço”. Vamos dizer que
queremos trazer a informação que não existe na tabela Cliente. Na
tabela “Cliente” não temos a informação do endereço, apenas a
informação do “EnderecoId”, essa informação se encontra na tabela
“Endereço” de fato, nesse caso o que temos que fazer é um JOIN, ou
seja juntar uma informação na outra:
INNER JOIN
Então nesse caso como eu ligaria/join essa informação?
Agora iremos fazer a junção de informação baseada na coluna que temos em comum que é a
BusinessEntityID para trazer todos os dados solicitados:
E essa é a parte onde o LEFT JOIN vai te ajudar ele vai incluir os
resultados mesmo onde não estão presente as informações na segunda
tabela, que nesse caso é a “Sales.PersonCreditCard”.
O LEFT JOIN é interessante para que você extraia essa informação das
tabelas que não tenha dados preenchidos dentro dela.
OUTER JOIN
Levando isso em consideração, como poderia retirar essa informação,
das 854 pessoas que não tem dados cadastrados?
UNION
O operador UNION combina dois ou mais resultados em um único
resultado apenas.
Sintaxe:
Nesse caso eu teria que dividir o comando em duas partes, se não fosse usar o SUBSELECT.
Sintaxe:
SELF JOIN
Na pratica:
SELF JOIN
Na pratica:
SELF JOIN
Desafio:
TIPOS DE DADOS
Temos principalmente 4 tipos:
• Boleanos
• Caractere
• Números
• Temporais
TIPOS DE DADOS
1 – Boleanos
Por padrão ele é inicializado como nulo (NULL), e pode receber tanto 1 ou
0.
Para representar valores boleanos no SQL server usa-se o tipo BIT
2 – Caracteres
Utilizamos o tipo CHAR, ele te permite inserir até uma quantidade fixa de
caracteres, porem ele sempre ocupa todo o espaço reservado, o que
significa isso, se você definiu que seu CHAR vai ter 50, mesmo tendo usado
somente 10, ele sempre vai ocupar 50 espaços na memória.
TIPOS DE DADOS
Outro exemplo é o tamanho variável:
Varchar ou nvarchar – porque ele permite inserir até uma quantidade
que foi definida porem ele só vai usar o espação que for preenchido,
por exemplo se você definiu que o valor máximo que ele aceitar é 50,
mas só usou 10, ele vai ocupar apenas os 10 espaços na memória e os
40 que restaram estarão desocupados
TIPOS DE DADOS
3 – Números - Valores exatos:
• TINYINT – não tem valor fracionados (ex: 1.43, 24.23) somente 1,123123, 324234, 313123,
etc... Ele sempre será um valor inteiro;
• SMALLINT – Mesma coisa porem um limite maior;
• INT – mesma coisa porem com um limite maior;
• BIGINT – mesma coisa porem com um limite maior;
• NUMERIC ou DECIMAL – Valores exatos, porem permite ter parte fracionados, que também
podem ser especificados a precisão e escala (escala é o número de dígitos na parte
fracional)
Ex.: NUMERIC (5,2) = 113,44 (5 dígitos ao total sendo que após a virgula uma precisão de 2
dígitos nesse caso o 44)
TIPOS DE DADOS
Números - Valores aproximados:
• REAL – Tem precisão aproximada de até 15 dígitos;
• FLOAT – Mesmo conceito do REAL;
TIPOS DE DADOS
4 – Temporais:
• DATE – Vai sempre armazenar data no formato de aaaa/mm/dd;
• DATETIME – armazena data e hora no formato de aaaa/mm/dd:hh:mm:ss;
• DATETIME2 – armazena data e hora com a adição de milissegundos no formato
aaaa/mm/dd:hh:mm:sssssss;
• SMALLDATETIME – armazena data e hora respeitando o limite entre ‘1900-01-
01:00:00:00’ até ‘2079-06-06:23:59:59’;
• TIME – vai armazenar apenas horas, minutos, segundos e milissegundos
respeitando o limite de ‘00:00:00.0000000’ até ‘23:59:59:9999999’;
• DATETIMEOFFSET – permite armazenar informações de data e horas incluindo o
fuso horário;
CHAVE PRIMARIA E SECUNDARIA
Exemplo:
CHAVE PRIMARIA E SECUNDARIA
CHAVE PRIMARIA E SECUNDARIA
Exemplo:
CHAVE PRIMARIA E SECUNDARIA
Exemplo prático:
CREATE TABLE
Sintaxe:
Sintaxe
INSERT INTO
Caso queira inserir varias linhas, mantem-se o mesmo padrão:
Sintaxe
Após o comando:
UPDATE
Antes do comando:
Após o comando:
UPDATE
Desafio:
UPDATE
Curiosidade:
Sintaxe:
DELETE TABLE
Na Prática:
Antes do comando:
Depois do comando:
ALTER TABLE
Sintaxe:
Depois do Comando:
ALTER TABLE
Alterando nome da tabela
Antes do comando:
Depois do Comando:
ALTER TABLE
Desafio:
ALTER TABLE
Desafio: