Você está na página 1de 12

AULA 09/03

DDL - Data Definition Language - CREATE, DROP, ALTER

DML - Data Manipulation Language - INSERT, UPDATE, SELECT


DQL - Data Query Language - SELECT

DTL - Data Transaction Language - BEGIN TRANSACTION, COMMIT, ROLLBACK

DCL - Data Control Language - GRANT, REVOKE, DENY

AULA 23/03

Comparação:

= (igual, apenas um ‘=’)


>
<
>=
<=
<> diferente

Esses operadores acima são mais usados para valores numéricos.

Para textos:

SELECT registro, nome colunas


FROM pokemon tabela
WHERE nome LIKE ‘P%’ comecem com P

WILDCARDS
% O ou ∞ caracteres
_ apenas 1 caractere

SELECT registro, nome


FROM pokemon
WHERE registro IN (1, 4, 7)
SELECT registro, nome
FROM pokemon
WHERE registro < 500
ORDER BY geracao, nome

SELECT registro, nome


FROM pokemon
WHERE registro BETWEEN 152 AND 251

AULA 30/03

Funções

COUNT

MAX
MIN
SUM
AVG

SELECT COUNT(registro), geracao


FROM pokemon_game.pokemon
GROUP BY geracao;

SELECT AVG(registro) AS MEDIA, geracao


FROM pokemon_game.pokemon
GROUP BY geracao

SELECT SUM(quantidade), j.nick


FROM pokemon_game.itens_da_bag bg
INNER JOIN jogador j ON j.idJogador = bg.idJogador
GROUP BY bg.idJogador;

SELECT SUM(quantidade), j.nick


FROM pokemon_game.itens_da_bag bg, pokemon_game.jogador j
WHERE j.idJogador = bg.idJogador
GROUP BY bg.idJogador;
SELECT j.nick, i.nome, bg.quantidade
FROM pokemon_game.itens_da_bag bg
INNER JOIN jogador j ON j.idJogador = bg.idJogador
INNER JOIN item i ON i.idItem = bg.idItem;

SELECT j.nick, i.nome, count(bg.quantidade), sum(bg.quantidade)


FROM pokemon_game.itens_da_bag bg
INNER JOIN jogador j ON j.idJogador = bg.idJogador
INNER JOIN item i ON i.idItem = bg.idItem
group by bg.idJogador, bg.idItem;

SELECT J.nick, SUM(I.quantidade), J.capBag


FROM itens_da_bag I
INNER JOIN jogador J ON J.idJogador = I.idJogador
GROUP BY J. nick
HAVING SUM (I.quantidade) < 300

SELECT J.nick, SUM(I.quantidade), J.capBag


WHERE J.nick LIKE ‘s%’
FROM itens_da_bag I
INNER JOIN jogador J ON J.idJogador = I.idJogador
GROUP BY J. nick
HAVING SUM (I.quantidade) < 300

Paginação:

SELECT *
FROM pokemon
ORDER BY registro
LIMIT 10
OFFSET 10

Paginação - exibir pág 14:


P - 14 (página 14)
IPP - 7 (itens por página)

Limite: quantos registros serão exibidos


Offset: quantos registros vou pular pra começar a exibir (no caso abaixo, pulou 91 registros pra
começar a exibir. A página 14 começa a partir do item 92)
fórmula:
LIMIT -> P
OFFSET -> (P-1)*IPP

SELECT *
FROM pokemon
ORDER BY registro
LIMIT 7
OFFSET 91

AULA 06/04

SELECT COLUNAS

FROM TABELA(S)

JOIN TABELA ON CONDIÇÃO DO JOIN

WHERE CONDIÇÃO DO WHERE

GROUP BY COLUNA(S)*

HAVING CONDIÇÃO DO HAVING*


ORDER BY COLUNA(S)

LIMIT NUM

OFFSET NUM

- A ordem acima nunca deve mudar…

- Having é usado para funções de agregação.

SELECT J.nick, SUM(I.quantidade) FROM itens_da_bag I


INNER JOIN jogador J ON J.idJogador = I.idJogador
GROUP BY I.idJogador HAVING SUM(I.quantidade) > 300;

Funções:

● Funções de Texto
● Funções Numéricas
● Funções de Data
● Outras funções

Funções de Texto

- CONCAT

SELECT CONCAT(nick, '; ', time) FROM jogador

- CONCAT_WS
Concatenar com separador (with separator)

SELECT CONCAT(' - ', nick, time, email) FROM jogador


- UPPER
LOWER
Deixa os caracteres maiúsculos ou minúsculos

SELECT LOWER(email) FROM jogador

- LEFT
RIGHT
Retorna quantos caracteres você quiser do lado esquerdo ou direito

SELECT LEFT(nick, 3) FROM jogador


SELECT LEFT(nick, 3), RIGHT(nick, 5) FROM jogador

- TRIM
LTRIM
RTRIM
Aparar (ambos os lados), aparar esquerda, aparar direita. Elimina os espaços.

SELECT TRIM(nick) FROM jogador

- LENGTH
Mostra quantos caracteres tem.

SELECT LENGTH(nick) FROM jogador


SELECT nick, LENGTH(nick) FROM jogador

- REPLACE
Dentro do texto do primeiro parâmetro informado, ele procura todas as ocorrências do
segundo parâmetro e substitui pelo terceiro parâmetro. Faz distinção entre maiúsculos e
minúsculos.

SELECT REPLACE(nick, 'i', 'o' ) FROM jogador


SELECT REPLACE(REPLACE(nick, 'i', 'u' ), 'e', 'a' ) FROM jogador

- REPEAT
Repete o texto da coluna a quantidade de vezes que você quiser.

SELECT REPEAT(time, 5) FROM jogador


SELECT REPEAT(CONCAT(time,'o'), 5) FROM jogador

- SUBSTR
Dentro de uma string, pega um trecho e substitui por outra string. No exemplo abaixo,
vai pegar a partir do terceiro caractere e trazer cinco caracteres. O terceiro parâmetro é
opcional.

SELECT SUBSTR(nick, 3, 5) FROM jogador

- INSTR
Retorna a posição da primeira ocorrência do segundo parâmetro.

SELECT INSTR(nick, 'e') FROM jogador

Exercício:
SELECT upper(left(nick,1)) as nick, concat(repeat(concat('0'),
5-length(capBag)), capBag) as items FROM jogador;

AULA 13/04

Funções Numéricas:

DIV :
Resultado da divisão de 2 números
SELECT 5/2, 5 DIV 2

MOD:
Exibe o resto da divisão 0 e 1
SELECT 5/2, 5 MOD 2

RAND:
Exibe um número aleatório randômico (Usado para sortear coisas aleatórias)
SELECT RAND()

SELECT * FROM pokemon ORDER BY RAND() LIMIT 1

SELECT * FROM pokemon WHERE registro = ROUND(RAND() * 9 + 1)


LIMIT 1;
ROUND:
Arredonda valor
SELECT ROUND(RAND())
SELECT ROUND(RAND(),3)

TRUNCATE:
Exibe o resto da divisão 0 e 1
SELECT TRUNCATE(RAND(), 3)

EXERCÍCIOS

1 - SELECT LEFT(p.nome, 3) from pokemon p;


2 - SELECT nome from pokemon order by length(nome) desc;
3 - SELECT REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(nome), 'a',
'A' ), 'e', 'E' ), 'i', 'I'), 'o', 'O'), 'u', 'U') as nome FROM
pokemon ORDER BY nome DESC;
4 - SELECT * FROM pokemon WHERE geracao =1 AND
registro=ROUND(RAND()*(3-1)+1) LIMIT 1;

Funções de Data

current_date
current_time
current_timestamp
NOW

DAY NAME
DAY OF THE WEEK
DAYOFMONTH
DAYOFYEAR
DATEDIFF

AULA 01/06

SELECT pc.IdPlayer,
c.IdConquista,
c.nome,
c.descricao,
c.icone_url,
c.dificuldade,
pc.progresso
FROM conquista c
LEFT JOIN player_conquista pc ON pc.idConquista = c.idConquista
WHERE c.idConquista IN (1,2,3)
AND pc.idPlayer = 1

SELECT pc.IdPlayer,
c.IdConquista,
c.nome,
c.descricao,
c.icone_url,
c.dificuldade,
pc.progresso
FROM conquista c
LEFT JOIN player_conquista pc ON pc.idConquista = c.idConquista AND pc.idPlayer = 1
WHERE c.idConquista IN (1,2,3)

http://spigo.net/sql_to_json.php
http://spigo.net/pbd/?username=spigo594_aula01&db=spigo594_aula01&select=conquista

http://spigo.net/fatec/ aqui ta a prova

SELECT * FROM pokemon p INNER JOIN pokedono pd ON p.registro = pd.registro

SELECT p.nome, p.geracao, pd.CP


FROM pokemon p
INNER JOIN pokedono pd ON p.registro = pd.registro
WHERE pd.idJogador = 1
ORDER BY pd.CP DESC
SELECT p.nome, p.geracao, pd.CP FROM pokemon p INNER JOIN pokedono pd ON
p.registro = pd.registro WHERE pd.idJogador = 1 ORDER BY pd.CP DESC

SELECT j.nick,
COUNT(0) quantidade
FROM jogador j
INNER JOIN pokedono pd ON pd.idJogador = j.idJogador
GROUP BY pd.idJogador

SELECT j.nick, COUNT(0) quantidade FROM jogador j INNER JOIN pokedono pd ON


pd.idJogador = j.idJogador GROUP BY pd.idJogador

(se não tiver o group by ele traz mais pokemons, entao tem q estar agrupadas por jogador)
*lembrar que quando usamos count também usamos group by
isso é uma possível questão de prova

SELECT COUNT(0) quantidade FROM pokemon


SELECT COUNT(0) quantidade FROM pokemon GROUP BY geracao

SELECT geracao,
MIN(registro) primeiro,
MAX(registro) ultimo
FROM pokemon
GROUP BY geracao

SELECT SUM(quantidade) FROM itens_da_bag GROUP BY idJogador

SELECT j.nick,
SUM(i.quantidade) itens
FROM itens_da_bag
INNER JOIN jogador j ON i.idJogador = j.idJogador
GROUP BY idJogador

(provavelmente esse comando acima não está funcionando, arrumar)

SELECT j.nick,
SUM(i.quantidade) itens,
j.capBag
FROM itens_da_bag i
INNER JOIN jogador j ON i.idJogador = j.idJogador
GROUP BY i.idJogador

Seleção de 2 tabelas, 2 colunas


SELECT j.nick,
p.nome
FROM jogador j
INNER JOIN pokedono pd ON j.idJogador = pd.idJogador
INNER JOIN pokemon p ON pd.registro = p.registro
ORDER BY p.registro

Função de texto
SELECT j.nick,
UPPER(p.nome)
FROM jogador j
INNER JOIN pokedono pd ON j.idJogador = pd.idJogador
INNER JOIN pokemon p ON pd.registro = p.registro
ORDER BY p.registro

Você também pode gostar