Você está na página 1de 82

Linguagem SQL

Conteúdo
Comentários.................................................................................................................................4
Utilização básica da instrução SELECT..........................................................................................4
SELECT … WHERE.......................................................................................................................10
SELECT DISTINCT........................................................................................................................13
ORDER BY … ASC … DESC............................................................................................................17
SELECT … WHERE … LIKE............................................................................................................22
SELECT … WHERE … NOT LIKE....................................................................................................24
SELECT … LIMIT...........................................................................................................................27
SELECT … WHERE … BETWEEN...................................................................................................28
SELECT … WHERE … IN...............................................................................................................32
SELECT … WHERE … NOT IN........................................................................................................33
SELECT … MIN … MAX................................................................................................................35
SELECT … MIN … MAX (Utilização de ALIASES)...........................................................................36
SELECT COUNT, AVG, SUM.........................................................................................................37
GROUP BY...................................................................................................................................39
GROUP BY … HAVING.................................................................................................................44
DELETE.......................................................................................................................................47
TRUNCATE..................................................................................................................................47
INNER JOIN.................................................................................................................................47
LEFT JOIN....................................................................................................................................50
RIGHT JOIN.................................................................................................................................51
UNION........................................................................................................................................52
UNION ALL..................................................................................................................................53
UPDATE......................................................................................................................................54
INSERT........................................................................................................................................54
CHAR_LENGTH...........................................................................................................................55
CONCAT......................................................................................................................................57
CONCAT_WS..............................................................................................................................59
FORMAT.....................................................................................................................................60
SELECT INSERT............................................................................................................................61
UCASE, UPPER, LCASE, LOWER...................................................................................................64
LEFT, RIGHT................................................................................................................................68
LOCATE.......................................................................................................................................71
LPAD, RPAD................................................................................................................................72
MID............................................................................................................................................74
REPEAT.......................................................................................................................................75
REPLACE.....................................................................................................................................76
REVERSE.....................................................................................................................................77
ABS.............................................................................................................................................78
CEIL, CEILING (arredondar sempre para cima)...........................................................................78
FLOOR (arredondar sempre para baixo).....................................................................................78
ROUND.......................................................................................................................................78
SELECT TRUNCATE......................................................................................................................78
DIV (dividir 2 números e arrendo logo)......................................................................................78
PI................................................................................................................................................79
POW ou POWER (potencia)........................................................................................................79
SQRT (raiz quadrada)..................................................................................................................79
MOD (resto de uma divisão)......................................................................................................79
CREATE DATABASE.....................................................................................................................80
DROP DATABASE........................................................................................................................80
CREATE TABLE............................................................................................................................80
DROP TABLE...............................................................................................................................80
SQL DATATYPES..........................................................................................................................80
CONSTRAINTS (evitar de ter valores nulos.................................................................................81
UNIQUE......................................................................................................................................81
PRIMARY KEY..............................................................................................................................81
FOREIGN KEY..............................................................................................................................81
DEFAULT VALUE.........................................................................................................................82
AUTO_INCREMENT.....................................................................................................................82
CREATE VIEW.............................................................................................................................82
Comentários
 --
 /* */

Utilização básica da instrução SELECT


 SELECT * FROM sócios (Exercício 01)
 SELECT id_socio, nome, telefone FROM sócios (Exercício 02)
 SELECT nome, nome FROM sócios
 SELECT nome, nome as nome1 FROM sócios
 SELECT nome, nome as “novo nome” FROM sócios
 SELECT now()

 SELECT MD5(‘abcdef’) AS chave

 SELECT 10 + 20 AS soma
SELECT … WHERE
 SELECT * FROM socios WHERE id_socio = 10 (Exercício 03)

 SELECT nome FROM socios WHERE id_socio = 10 (Exercício 04)

 SELECT id_socio, nome FROM socios WHERE id_socio < 10 (Exercício 05)
 SELECT id_socio, nome FROM socios WHERE NOT id_socio = 10 (Exercício 06)

 SELECT id_socio, nome FROM socios WHERE id_socio = 10 OR id_socio = 20 (Exercício


07)
 SELECT id_socio, nome FROM socios WHERE id_socio = 10 AND id_socio = 20

 SELECT * FROM socios WHERE id_socio = 3 AND cidade = ‘Amadora’

 SELECT * FROM socios WHERE id_socio <= 100 AND cidade = ‘Lisboa’ (Exercício 08)

 SELECT id_socio, nome FROM socios WHERE id_socio >= 100 AND id_socio <= 400 AND
cidade = ‘Porto’ (Exercício 09)
SELECT DISTINCT
 SELECT DISTINCT cidade FROM socios
 SELECT DISTINCT quantia FROM donativos
 SELECT DISTINCT quantia FROM donativos WHERE quantia < 10
 SELECT DISTINCT cidade FROM socios WHERE id_socio <= 50
ORDER BY … ASC … DESC
 SELECT nome FROM socios ORDER BY nome (Exercício 10)
 SELECT nome FROM socios ORDER BY nome ASC
 SELECT nome FROM socios ORDER BY nome DESC
 SELECT nome, cidade FROM socios ORDER BY cidade ASC
 SELECT nome, cidade FROM socios ORDER BY nome ASC, cidade ASC
SELECT … WHERE … LIKE
 SELECT * FROM socios WHERE nome LIKE ‘a%’ (Exercício 11)

 SELECT * FROM socios WHERE nome LIKE ‘%Garcia%’ (Exercício 12)


 SELECT * FROM socios WHERE telefone LIKE ‘93%’ (Exercício 13)

 SELECT * FROM socios WHERE telefone LIKE ‘93%6’ (Exercício 14)

 SELECT * FROM socios WHERE telefone LIKE ‘93_6%’ (Exercício 15)

 SELECT * FROM socios WHERE telefone LIKE ‘93%’ AND id_socio>=100 AND
id_socio<=200 (Exercício 16)
SELECT … WHERE … NOT LIKE
 SELECT * FROM socios WHERE telefone NOT LIKE ‘93%’ (Exercício 17)
 SELECT * FROM socios WHERE nome NOT LIKE ‘a%’
 SELECT * FROM socios WHERE nome NOT LIKE ‘%nunes%’
SELECT … LIMIT
 SELECT * FROM socios WHERE nome LIKE ‘ana %’ LIMIT 3

 SELECT * FROM socios WHERE nome LIKE ‘ana %’ ORDER BY id_socio DESC LIMIT 3
SELECT … WHERE … BETWEEN
 SELECT * FROM socios WHERE id_socio BETWEEN 100 AND 200
 SELECT * FROM socios WHERE id_socio BETWEEN 100 AND 200 OR id_socio BETWEEN
300 AND 400
 SELECT * FROM socios WHERE data_nascimento BETWEEN ‘1960-01-01’ AND ‘1969-
12-31’
 SELECT * FROM socios WHERE nome BETWEEN ‘carla’ AND ‘fernanda’ ORDER BY nome
SELECT … WHERE … IN
 SELECT * FROM socios WHERE id_socio IN (10,20,30)

 SELECT * FROM socios WHERE cidade IN (‘Lisboa’, ‘Porto’)


SELECT … WHERE … NOT IN
 SELECT * FROM socios WHERE id_socio NOT IN (10,20,30)
 SELECT * FROM socios WHERE cidade NOT IN (‘Lisboa’, ‘Porto’)
SELECT … MIN … MAX
 SELECT MIN(data_nascimento) FROM socios

 SELECT MAX(data_nascimento) FROM socios

 SELECT MAX(data_nascimento) FROM socios WHERE id_socio <=50

 SELECT MIN(quantia) FROM donativos

 SELECT MAX(quantia) FROM donativos


SELECT … MIN … MAX (Utilização de ALIASES)
 SELECT MIN(quantia) AS mínimo, MAX(quantia) AS máximo FROM donativos

 SELECT MIN(data_nascimento) AS mais_velho, MAX(data_nascimento) AS


mais_novo FROM socios
SELECT COUNT, AVG, SUM
 SELECT COUNT(id_socio) FROM socios

 SELECT COUNT(nome) AS total FROM socios (Exercício 18)

 SELECT COUNT(nome) AS total FROM socios WHERE data_nascimento < ‘1980-


01-01’ (Exercício 19)

 SELECT COUNT(id_donativo) AS total FROM donativos WHERE quantia = 20


(Exercício 20)

 SELECT AVG(quantia) FROM donativos

 SELECT AVG(quantia) FROM donativos WHERE data_hora <= ‘2015-01-01’

 SELECT SUM(quantia) AS total FROM donativos (Exercício 21)


 SELECT SUM(quantia) AS total FROM donativos WHERE data_hora >= ‘2017-01-
01’ (Exercício 22)
GROUP BY
 SELECT COUNT(id_socio) total, cidade FROM socios GROUP BY cidade
 SELECT COUNT(id_socio) total, cidade FROM socios GROUP BY cidade ORDER
BY cidade DESC
 SELECT id_socio, COUNT(id_donativo) as numero_de_donativos FROM
donativos GROUP BY id_socio
 SELECT socios.id_socio, socios.nome, COUNT(id_donativo) AS
numero_de_donativos FROM donativos, socios WHERE socios.id_socio =
donativos.id_socio GROUP BY socios.id_socio
 SELECT socios.id_socio, socios.nome, SUM(quantia) AS total_doado FROM
donativos, socios WHERE socios.id_socio = donativos.id_socio GROUP BY
socios.id_socio
GROUP BY … HAVING
 SELECT socios.id_socio, socios.nome, SUM(quantia) AS total_doado FROM
donativos, socios WHERE socios.id_socio = donativos.id_socio GROUP BY
socios.id_socio HAVING total_doado >= 3000

 SELECT id_socio, COUNT(id_donativo) AS total_donativos FROM donativos


GROUP BY id_socio HAVING id_socio <= 10
 SELECT s.nome, SUM(d.quantia) AS total FROM donativos d, socios s WHERE
s.id_socio = d.id_socio GROUP BY s.id_socio HAVING s.nome LIKE ‘a%’
 SELECT s.nome, SUM(d.quantia) AS total FROM donativos d, socios s WHERE
s.id_socio = d.id_socio GROUP BY s.id_socio HAVING total >= 2300 ORDER BY
total DESC
DELETE
 DELETE FROM socios
 DELETE FROM socios WHERE id_socio = 10
 DELETE FROM socios WHERE name LIKE ‘a%’
 DELETE FROM socios WHERE cidade = “Lisboa”

TRUNCATE
 TRUNCATE donativos

INNER JOIN
 SELECT * FROM socios INNER JOIN donativos ON socios.id_socio =
donativos.id_socio
 SELECT * FROM socios INNER JOIN donativos ON socios.id_socio =
donativos.id_socio ORDER BY donativos.data_hora DESC
 SELECT * FROM socios INNER JOIN donativos ON socios.id_socio =
donativos.id_socio WHERE socios.nome LIKE ‘a%’ ORDER BY
donativos.data_hora DESC
LEFT JOIN
 SELECT * FROM socios LEFT JOIN donativos ON socios.id_socio =
donativos.id_socio WHERE socios.id_socio <= 10 ORDER BY socios.id_socio ASC
RIGHT JOIN
 SELECT socios.id_socio, socios.nome, donativos.* FROM donativos RIGHT JOIN
socios ON donativos.id_socio = socios.id_socio WHERE socios.id_socio = 20
ORDER BY socios.id_socio ASC
UNION
 SELECT * FROM socios WHERE id_socio < 10 UNION SELECT * FROM socios
WHERE id_socio >= 200

 SELECT id_socio, SUM(quantia) AS valor FROM donativos WHERE id_socio = 1


UNION SELECT id_socio, COUNT(id_donativo) AS valor FROM donativos WHERE
id_socio = 1
UNION ALL
 SELECT nome FROM socios UNION ALL SELECT nome FROM socios
UPDATE
 UPDATE socios SET nome = ‘ALTERADO’ WHERE id_socio = 1
 UPDATE socios SET nome = ‘ALTERADO2’, cidade = ‘NOVA’ WHERE id_socio = 10
 UPDATE socios SET cidade = “Portos” WHERE cidade = “Porto”

INSERT
 INSERT INTO donativos(id_socio, quantia, data_hora) VALUES(400, 20, NOW())
CHAR_LENGTH
 SELECT nome FROM socios WHERE CHAR_LENGTH(nome) >= 25
 SELECT nome, CHAR_LENGTH(nome) AS tamanho FROM socios WHERE
CHAR_LENGTH(nome) >= 25
CONCAT
 SELECT nome, CONCAT(morada, ‘ – ‘, cidade) AS morada_completa FROM
socios
 SELECT CONCAT(‘Nome: ‘, nome) AS nome FROM socios
CONCAT_WS
 SELECT CONCAT_WS(‘ > ‘, nome, morada, cidade) AS valor FROM socios
FORMAT
 SELECT FORMAT(quantia, 2) FROM donativos

 SELECT FORMAT(250.495, 2) AS total


SELECT INSERT
 SELECT INSERT(nome,10,3,’(…)’) AS nome FROM socios
 SELECT INSERT(nome,20,100,’(…)’) AS nome FROM socios
 SELECT INSERT(nome,10,50,’…’) AS nome, LENGTH(INSERT(nome,10,50,’…’))
FROM socios
UCASE, UPPER, LCASE, LOWER
 SELECT UCASE(nome) AS nome FROM socios
 SELECT UPPER(nome) AS nome FROM socios
 SELECT LOWER(nome) AS nome FROM socios
 SELECT LCASE(nome) AS nome FROM socios
LEFT, RIGHT
 SELECT LEFT(nome, 5) AS nome FROM socios
 SELECT RIGHT(nome, 5) AS nome FROM socios
 SELECT CONCAT(LEFT(nome, 3), ‘…’) AS nome FROM socios
LOCATE
 SELECT LOCATE(‘Silva’, nome) AS posicao, nome FROM socios WHERE
LOCATE(‘Silva’, nome) <> 0

 SELECT LOCATE(‘Silva’, nome) AS posicao, nome FROM socios WHERE nome


LIKE ‘%Silva%’
LPAD, RPAD
 SELECT LPAD(nome, 50, ‘.’) AS nome FROM socios
 SELECT RPAD(nome, 50, ‘.’) AS nome FROM socios
MID
 SELECT MID(nome, 5, 4) AS nome FROM socios
REPEAT
 SELECT REPEAT(‘abc’, 5) AS valor

 SELECT REPEAT(nome, 5) AS nome FROM socios


REPLACE
 SELECT REPLACE(nome, ‘ ‘, ‘---’) AS nome FROM socios
REVERSE
 SELECT REVERSE(nome) AS nome FROM socios
ABS
 SELECT ABS(-10) AS valor

CEIL, CEILING (arredondar sempre para cima)


 SELECT CEIL(1.5) AS valor

FLOOR (arredondar sempre para baixo)


 SELECT FLOOR(1.9) AS valor

ROUND
 SELECT ROUND(120.524,2) AS valor

SELECT TRUNCATE
 SELECT TRUNCATE(25.156,2) AS valor

DIV (dividir 2 números e arrendo logo)


 SELECT 15 DIV 2 AS valor
SIGN (ver se os números são positivos, zeros ou
negativos (1 – positivo, 0 – zero, -1 – negativo)
 SELECT SIGN(100)

PI
 SELECT PI() * 10

POW ou POWER (potencia)


 SELECT POW(3,2)

SQRT (raiz quadrada)


 SELECT SQRT(64)

MOD (resto de uma divisão)


 SELECT MOD(10,3)
CREATE DATABASE
 CREATE DATABASE socios2

DROP DATABASE
 DROP DATABASE socios2

CREATE TABLE
 CREATE TABLE teste(id INT, nome VARCHAR(50), data_nascimento DATETIME)

DROP TABLE
 DROP TABLE teste

SQL DATATYPES
 Alfanuméricos (TEXTO)
o CHAR (colocar o numero de carateres)
o VARCHAR (limite até 255 carateres)
o TINYTEXT (limite até 255 carateres)
o TEXT (limite até 65535 carateres)
o BLOB (limite até 65535 carateres)
o MEDIUMTEXT (limite até 16700000 carateres)
o MEDIUMBLOB (limite até 16700000 carateres)
o LONGTEXT
o LONGBLOB
 Numéricos (números)
o TINYINT (-128 até 127 números)
o TINYINT UNSIGNED (não aceita números negativos. Aceita de 0 até 256
números)
o SMALLINT (-32 768 até 32 768 números)
o SMALLINT UNSIGNED (não aceita números negativos. 0 e 65 535
números)
o MEDIUMINT
o INT (-4 294 967 295 até 4 294 967 295 números)
o BIGINT (-18 446 744 073 709 551 615 até 18 446 744 073 709 551 615
números)
o FLOAT (4, 2) – primeiro número é a parte esquerda da virgula e o
segundo número é à direita da virgula
o DOUBLE (20, 10)
o DECIMAL (4, 2) – guarda número do tipo string
 Data e Hora
o DATE (guarda uma data deste tipo 2018-09-23)
o DATETIME (guarda uma data deste tipo 2018-09-23 12:30:45)
o TIMESTAMP (tem um limite de 09-01-2038)
o TIME
o YEAR

CONSTRAINTS (evitar de ter valores nulos


 CREATE TABLE teste(id INT NOT NULL, nome VARCHAR(50))

UNIQUE
 CREATE TABLE teste(id INT UNIQUE, nome VARCHAR(30))

PRIMARY KEY
 CREATE TABLE teste(id INT NOT NULL PRIMARY KEY, nome VARCHAR(30))

FOREIGN KEY
 CREATE DATABASE loja
 CREATE TABLE cliente(id_cliente INT PRIMARY KEY, nome VARCHAR(50));
 CREATE TABLE vendas(id_venda INT PRIMARY KEY, id_cliente INT, produto
VARCHAR(30), FOREIGN KEY(id_cliente) REFERENCES clientes(id_cliente) ON
DELETE CASCADE)
 INSERT INTO clientes(id_cliente, nome) VALUE(1, “Joao”);
 INSERT INTO clientes(id_cliente, nome) VALUE(2, “Ana”);
 INSERT INTO clientes(id_cliente, nome) VALUE(3 “Tiago”);
 INSERT INTO vendas(id_venda, id_cliente, produto) VALUE(1,2,”Laranja”)
DEFAULT VALUE
 CREATE TABLE teste(valor INT DEFAULT 10)
 INSERT INTO teste VALUES(20)
 INSERT INTO teste VALUES()

AUTO_INCREMENT
 CREATE TABLE clientes(id_cliente INT PRIMARY KEY AUTO_INCREMENT, nome
VARCHAR(50))
 INSERT INTO clientes(id_cliente, nome) VALUE(1, “Tiago”)
 INSERT INTO clientes(nome) VALUE(“Miguel”)

CREATE VIEW
 CREATE VIEW temporario AS SELECT * FROM socios WHERE nome LIKE ‘a%’
 SELECT * FROM temporario
 DROP VIEW temporario

Você também pode gostar