0% acharam este documento útil (0 voto)
6 visualizações

Manual SQL

O documento aborda conceitos fundamentais de bancos de dados, incluindo SGBD, bases de dados relacionais, tabelas, campos, e chaves primárias e estrangeiras. Ele também detalha comandos SQL para consulta, gerenciamento e manipulação de dados em MySQL, como SELECT, JOIN, e INSERT. Além disso, discute a utilização do phpMyAdmin para administração de bancos de dados e a execução de consultas SQL.
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
6 visualizações

Manual SQL

O documento aborda conceitos fundamentais de bancos de dados, incluindo SGBD, bases de dados relacionais, tabelas, campos, e chaves primárias e estrangeiras. Ele também detalha comandos SQL para consulta, gerenciamento e manipulação de dados em MySQL, como SELECT, JOIN, e INSERT. Além disso, discute a utilização do phpMyAdmin para administração de bancos de dados e a execução de consultas SQL.
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 290

BASES DE DADOS – CONCEITOS GERAIS

• O que são SGBD;


• Base de dados relacionais
• Conceito de tabela, campo e registo
• Chave primária e chave estrangeira
MYSQL – QUERING DATA

• SELECT FROM
• ORDER BY
• WHERE
• SELECT DISTINCT
• OPERADORES
• IN
• OR
• AND
• NOT IN
• BETWEEN
• LIKE
• LIMIT
• IS NULL
• TABLE AND COLUMN ALIANSE
MYSQL – QUERING DATA

• JOIN
• INNER JOIN
• LEFT JOIN
• RIGHT JOIN
• SELF JOIN
• CROSS JOIN
• GROUP BY
• HAVING
• HAVING COUNT
• BUILT IN FUNCTIONS
• SUBQUERY
• DERIVED TABLES
• EXISTS
• EXCEPT
• INTERCEPT
MYSQL – MANAGING DATABASE

• SELECT A DATABASE
• CREATE DATABASE
• DROP DATABASE
MYSQL – MANAGING TABLES

• CREATE TABLES
• AUTO-INCREMENT
• REMANE TABLES
• ADD COLUMN
• DROP COLUMN
• DROP TABLES
• TEMPORARY TABLES
• GENERATED COLUMNS
MYSQL – CONSTRAINTS

• PRIMARY KEY
• FOREIGN KEY
• FOREIGN KEYS CHECKS
• UNIQUE CONSTRAINT
• NOT NULL CONSTRAINT
• DEFAULT CONSTRAINT
• CHECK CONSTRAINT
MYSQL – INSERT DATA

• INSERT INTO
• INSERT MULTIPLES ROWS
• INSERT INTO SELECT
• INSERT ON DUPLICATE KEY UPDATED
• INSERT IGNORE
• INSERT DATE/TIME
MYSQL – UPDATE DATA

• UPDATE
• UPDATE JOIN
MYSQL – DELETE DATA

• DELETE JOIN
• DELETE ON CASCATE
• TRUNCATE TABLE
MYSQL – PROGRAMMING

• STORED PROCEDURES
• TRIGGERS
• VARIABLES
• ESTRUTURA IF
• ESTRUTURA CASE
• CICLOS DE REPETIÇÃO
• CURSORES
SQL
O que é um Sistema de Gestão de Base de Dados ?

É um software (programa) responsável pela gestão de uma base de dados

O que é uma Base de Dados Relacional?

Conjunto de informação estruturada e relacionada entre si, sobre um determinado tema ou domínio.

Exemplos de Bases de Dados


Cartão de cidadão
Leitores de um biblioteca
N.º telemóveis de uma operadora
Matriculas automóveis
SQL
O que é uma Base de Dados relacional ?

Uma base de dados relacional tem, normalmente, várias tabelas relacionadas.

Numa base de dados bem concebida, cada tabela armazena dados sobre de um determinado assunto, como os
funcionários ou produtos. Uma tabela tem registos (linhas) e campos (colunas).

Os campos têm vários tipos de dados, como texto, números, datas e hiperligações.
SQL
O que é uma Tabela ?

• Local da Base de dados onde são guardadas as informações (registos)

• Aspeto semelhante a uma folha de calculo

• A principal diferença entre armazenar os dados numa folha de cálculo e armazená-los numa base de dados é a forma
como os dados estão organizados.

• Os dados são organizados em tabelas para que não ocorram redundâncias (é quando um dado/informação é
armazenada mais de uma vez desnecessariamente dentro de um Banco de Dados).

• Por exemplo, se armazenar informações sobre funcionários, cada funcionário apenas deverá ter de ser introduzido
uma vez numa tabela que esteja configurada para receber dados de funcionários. Os dados sobre produtos serão
armazenados numa tabela específica e os dados sobre sucursais serão armazenados noutra tabela. Este processo é
denominado normalização.
SQL
IDENTIFICA O NOME DAS TABELAS – EX1
SQL
IDENTIFICA O NOME DAS TABELAS– EX2
SQL
SQL
O que é um Campo?

• Contém dados sobre um aspeto do assunto da tabela, tal como o nome, o endereço de e-mail, número da fatura,
preço de um produto, morada,……

• Numa tabela os nomes dos campos estão associados às colunas da tabela

O que é um Registo?
• Contém dados específicos, como informações sobre um determinado funcionário ou produto.

• Numa tabela os registos estão associados às linhas de uma tabela

1 – Registo
2 – Campo
3 - registo
SQL
SQL

CHAVE PRIMÁRIA

É um campo onde não é possível existir 2 registos iguais. Pode existir mais
que uma chave primária por tabela

NO SQL OS CAMPOS CHAVE PRIMÁRIA ESTÃO IDENTIFICADOS COM

PK – Primary Key
SQL
CHAVE ESTRANGEIRA

É um campo que recebe ligação de uma outra tabela

NO SQL-SERVER OS CAMPOS CHAVE ESTRANGEIRA ESTÃO IDENTIFICADOS COM

FK – Foreigner Key
SQL
IDENTIFICA O NOME DOS CAMPOS DAS TABELAS CARROS E CLIENTES – EX2
SQL

RELAÇÕES ENTRE TABELAS

1:1 – um para um 1 registo da tabela A pode ser utilizado 1 x na tabela B


1:oo –um para muitos 1 registo da tabela A pode ser utilizado n x na tabela B
00:00 –muitos para muitos
TIPOS DE DADOS SQL
TIPOS DE DADOS SQL
NUMERICOS
TIPOS DE DADOS SQL
STRING (CARACTERES)
TIPOS DE DADOS SQL
DATA/HORA
TIPOS DE DADOS SQL
ESPACIAIS
SQL
IDENTIFICA 4 REGISTOS DA TABELAS DE CLIENTES – EX3
SQL
SQL
XAMPP-EXECUTAR
SQL
XAMPP-EXECUTAR SERVIDOR WEB

SERVIDOR DE Base DADOS


SQL
XAMPP-EXECUTAR
SQL
XAMPP-EXECUTAR
Verde significa que está
funcionar

AMARELO – Está funcionar


mas com problemas

VERMELHO – Não funciona


SQL
PHPMYADMIN
É um aplicativo web livre e de código aberto desenvolvido em PHP para administração do MySQL através da
internet

A partir deste sistema é possível criar e remover bases de dados, criar, remover e alterar tabelas, inserir,
remover e editar campos, executar códigos SQL e manipular campos chaves
PHPMYADMIN – COMO ACEDER ? SQL

Depois de termos os servidores apache e mysql em funcionamento devemos:

-Abrir o browser (Google chrome, por exemplo)

-colocar o endereço :127.0.0.1


PHPMYADMIN – COMO ACEDER ? SQL
PHPMYADMIN – AMBIENTE DE TRABALHO SQL
3 Menus disponíveis

1
Informações
Bases de Dados sobre servidor
existentes no BD, servidor
servidor; Web e
phpmyadmiin
PHPMYADMIN – INSTALAÇÃO DE UMA BASE DE DADOS JÁ CRIADA SQL

1º - Criar a Base de Dados


PHPMYADMIN – INSTALAÇÃO DE UMA BASE DE DADOS JÁ CRIADA SQL

1º - Criar a Base de Dados


Coleção de caracteres

O atributo charset serve


para indicar o formato de
Nome da Base de Dados
codificação de caracteres
utilizado no documento.
ASCII, UTF-8, ANSI e ISO-
8859-1 são exemplos de
charsets..." Em resumo,
corrige problemas de
acentuação.
SQL
PHPMYADMIN – INSTALAÇÃO DE UMA BASE DE DADOS JÁ CRIADA
2
1º - Criar a Base de Dados

3
1
PHPMYADMIN – INSTALAÇÃO DE UMA BASE DE DADOS JÁ CRIADA SQL

2º - Importação de tabelas, campos e registos


PHPMYADMIN – INSTALAÇÃO DE UMA BASE DE DADOS JÁ CRIADA SQL

2º - Importação de tabelas, campos e registos


PHPMYADMIN – INSTALAÇÃO DE UMA BASE DE DADOS JÁ CRIADA SQL

2º - Importação de tabelas, campos e registos


PHPMYADMIN – INSTALAÇÃO DE UMA BASE DE DADOS JÁ CRIADA SQL

2º - Importação de tabelas, campos e registos


PHPMYADMIN – INSTALAÇÃO DE UMA BASE DE DADOS JÁ CRIADA SQL

2º - Importação de tabelas, campos e registos


PHPMYADMIN – INSTALAÇÃO DE UMA BASE DE DADOS JÁ CRIADA SQL

2º - Importação de tabelas, campos e registos

Nome dos campos que fazem parte da base de dados


Verificar se estamos a trabalhar na BD
SQL
pretendida
CONSULTAS
BD_PRIMEIRA
DIAGRAMA E/R
Repetir os mesmo passos para bd_segunda, bd_terceira e bd_videoclube
CONSULTAS SQL

Zona onde iremos escrever a nossa


consulta
COMENTÁRIOS SQL
Os comentários são colocados na zona de código mas a linha de código não é executada pelo servidor

#select nome from cliente


CONSULTAS SQL

Element Expression Role


SELECT <select list> Define os campos a serem mostrados
na consulta
FROM <table source> Define a tabela de origem dos dados
WHERE <search condition> Filtra registos mediante um critério

GROUP BY <group by list> Agrupa registos


HAVING <search condition> Filtra registos a entrarem em de cada
grupo
ORDER BY <order by list> Ordena os registos
TIC
M3 – BASES DE DADOS
CONSULTAS - ORDEM DE EXECUÇÃO

5: SELECT <select list>

1: FROM <table source>

2: WHERE <search condition>

3: GROUP BY <group by list>

4: HAVING <search condition>

6: ORDER BY <order by list>


CONSULTAS - SELECT SQL

SELECT NOME DOS CAMPOS A VISUALIZAR

FROM TABELA QUE CONTÉM OS REGISTOS A MOSTRAR


CONSULTAS - SELECT SQL
Encontrar o nome dos campos
CONSULTAS - SELECT SQL

Selecionar o campo first_name da tabela employee


CONSULTAS – SELECT SQL

Resultado da query
SQL

1º Executar as consultas no mysql

2ºGuardar consultas num ficheiro do bloco de notas com o vosso nome


SQL
SQL
SQL
SQL
SQL
SQL
SQL
SQL
BD_PRIMEIRA

Cria as consultas
1. Selecionar o Name da tabela Departments;
2. Selecionar o Last_Name da tabela Employees
3. Selecionar o Region_Name da tabela regions;
4. Selecionar a Start_Date da tabela Job_history;
5. Selecionar o City da tabela Locations.
CONSULTAS – SELECT COM MAIS QUE UM CAMPO SQL

SELECT campo1,campo2,campo3,...
FROM tabela

, PERMITE SEPARAR OS CAMPOS A SELECIONAR


CONSULTAS – SELECT COM MAIS QUE UM CAMPO SQL
BD_PRIMEIRA

 Cria as consultas
1. Selecionar o STREET_ADDRRESS, POSTAL_CODE,CITY da tabela Locations;
2. Selecionar o Job_Title, Min_Salary, Max_salary da tabela Jobs;
TIC
M3 – BASES DE DADOS
CONSULTAS – SELECT TODOS OS CAMPOS DE UMA TABELA
SELECT *
FROM EMPLOYEE

* PERMITE SELECIONAR DE UMA VEZ TODOS


OS CAMPOS
SQL
BD_PRIMEIRA

 Cria as consultas
1. Selecionar todos os campos da tabela de Employees;
2. Selecionar todos os campos da tabela Locations;
3. Selecionar todos os campos da tabela do Countries.
4. Selecionar todos os campos da tabela Jobs
CONSULTAS – ALIAS SQL

ALIAS É O NOME ATRIBUIDO QUANDO, NA QUERY ALTERAMOS O NOME DO CAMPO.


O NOME É ALTERADO APENAS NO RESULTADO DA QUERY, O NOME ORIGINAL DO CAMPO MANTÉM-
SE INALTERADO NA BASE DE DADOS

NOME DO CAMPO AS ‘NOVO NOME’


‘ ->Plica é o caracter que se encontra na mesma tecla que o ponto de interrogação ?

EXEMPLO

SELECT NAME AS ‘NOME’


FROM CLIENTES
CONSULTAS – ALIAS SQL
BD_PRIMEIRA

1. Selecionar os campos First_Name para Nome e Last_Name para Apelido da tabela Employees

2. Selecionar todos os campos da tabela JOBS alterando o nome de todos os campos


CONSULTAS – FUNÇÃO CONCAT SQL

CONCAT – Permite juntar o conteúdo de 2 ou mais campos em


apenas um

Select concat(campo1,’ ‘,campo2)

‘ ‘ -> permite dar espaço entre o conteúdo dos


campos
CONSULTAS – FUNÇÃO CONCAT SQL

EXEMPO
Select concat(campo1,campo2)
CONSULTAS – FUNÇÃO CONCAT SQL

Select concat(FIRST_NAME,’ ‘,LAST_NAME)


FROM Employee
SQL
BD_PRIMEIRA

 Cria as consultas
1. Concatena Street_Address, Postal_code e City tabela locations atribuindo o nome de
Endereço
CALCULO ENTRE CAMPOS E OPERADORES SQL
• Calculos são escalares, retornam um numero por linha
• Utilizar expressões escalares na zona dos campos
SQL
BD_PRIMEIRA

 Cria a consulta
 Calcula com base no campo salary da tabela de employees:
 DESCONTO PARA A SS (32%) , alterando o nome para Segurança Social
 Desconto IRS (16%) alterando o nome para IRS
 Salario liquido = salary – ss -irs
CONSULTAS – DISTINCT SQL

Permite mostrar apenas registo diferentes, isto é, não mostra registos duplicados

select [FirstName]
from [Person].[Person]

select distinct [FirstName]


from [Person].[Person]
SQL
CONSULTAS – DISTINCT
Mostrar os diferentes paises dos customers BD_TERCEIRA

Mostrar as diferentes cidades existentes na tabela locations BD_PRIMEIRA

Mostrar os diferentes departamentos existentes na tabela de empregados BD_PRIMEIRA

Mostrar os diferentes jobs_id existentes da tabela de jobs_history BD_PRIMEIRA


CONSULTAS – ORDENAR SQL
ORDER BY – Permite ordenar registos (de forma ascendente ou descendente) de um ou mais
campos

• Writing ORDER BY using column names:


SELECT <select list>
FROM <table source>
ORDER BY <column1_name>, <column2_name>, <column3_name>,;

• Writing ORDER BY using column aliases:


SELECT <column> AS <alias>
FROM <table source>
ORDER BY <alias>;

• Specifying sort order in the ORDER BY clause:


SELECT <column> AS <alias>
FROM <table source>
ORDER BY <column_name|alias> ASC|DESC;
CONSULTAS – ORDENAR SQL
CONSULTAS – ORDENAR SQL
EX8

1. Selecionar todos os campos da tabela Customer ordenando o STATE por ordem


decrescente BD_TERCEIRA
2. Selecionar Postal-Code ,City atribuindo o nome de Cidade e State –Customer ordenando
os registos por Cidade ordem ascendente BD_TERCEIRA
3. Selecionar todos os campos –Employee, ordenando o Start-Date por ordem decrescente BD_primeira
4. Selecionar todos os campos –ORDER ordenando o date_order por ordem ascendente
BD_TERCEIRA
CONSULTAS – FILTRAR SQL

• A clausula WHERE UTILIZA condições para filtrar registos

• Deve ser expressa por uma condição lógica


• Apenas os registos que sejam verdade de acordo com a condição irão aperecer
• Valores falsos ou unknown são deixados fora
• Dados filtrados do lado do servidor
• Reduz o tráfego de dados e a utilização de memória do lado cliente
CONSULTAS – FILTRAR SQL
CONSULTAS – FILTRAR SQL
EXEMPLOS
CONSULTAS – FILTRAR SQL
EXEMPLOS

SELECT *
FROM [Person].[Person]
WHERE [FirstName] <>'John'

SELECT [PersonType],[FirstName],
[LastName]
FROM [Person].[Person]
WHERE MiddleName IS NULL
CONSULTAS – FILTRAR SQL
BD_TERCEIRA
EX9

1. Selecionar todos os campos da tabela Employee onde o first_name é Tom


2. Selecionar todos os campos da tabela Employee onde o first_name não é Tom
3. Selecionar First_Name e Last_Name contatenados atribuindo Nome Próprio ao campo
onde o JobTitle é Sales Rep, ordenado por nome ascendente.
CONSULTAS – FILTRAR SQL
FORMATAR DATA
NOME DO
CAMPO
CONSULTAS – FILTRAR SQL
BD_TERCEIRA
EX10

1. Selecionar todos os customers franceses


2. Selecionar todos os customers que não são dos USA
3. Selecionar todos os pagamentos realizados a partir de 01/01/2005

Formato data: DIA/MÊS/ANO


CONSULTAS – FILTRAR SQL
OPERADORES LÓGICOS
CONSULTAS – FILTRAR SQL
OPERADORES LÓGICOS
CONSULTAS – FILTRAR SQL
OPERADORES LÓGICOS
CONSULTAS – FILTRAR SQL
OPERADORES LÓGICOS EX11

1. Selecionar todos os customers dos USA com credito superior a 120000 BD_TERCEIRA
2. Selecionar todos os customers dos USA ou de France BD_TERCEIRA
3. Selecionar todos os Employees que tenham iniciado funções no primeiro semestre do ano
de 1987 , ordenados por data ascendente. BD_PRIMEIRA
CONSULTAS – FILTRAR SQL
BETWEEN Permite colocar valores dentro de um intervalo
CONSULTAS – FILTRAR SQL
BETWEEN

SELECT [WorkOrderID]
FROM [Production].[WorkOrder]
WHERE [WorkOrderID] BETWEEN 10 AND 19

select PurchaseOrderID, SubTotal, OrderDate


from [Purchasing].[PurchaseOrderHeader]
where pf.OrderDate between '2005/01/01' and '2006/12/31'
CONSULTAS – FILTRAR SQL
BETWEEN EX12
BD_TERCEIRA

1. Da tabela ORDERS selecionar as vendas do mês de janeiro de 2003


2. Selecionar todos os customers cujo custumer number esteja entre o n.º 400 e o 435
CONSULTAS – FILTRAR SQL
LIKE – Permite pequisar registos mediante uma sequência de caracteres ( É o operador que deve ser usado
quando pesquisamos dados do tipo string)
CONSULTAS – FILTRAR SQL
CONSULTAS – FILTRAR SQL
LIKE
CONSULTAS – FILTRAR SQL
LIKE

SELECT [Name]
FROM [Production].[Product]
WHERE NAME LIKE 'Bike%'
CONSULTAS – FILTRAR SQL
LIKE

SELECT FirstName,LastName
FROM [Person].[Person]
WHERE FirstName like'_im'

SELECT FirstName,LastName
FROM [Person].[Person]
WHERE LastName like'_tewar_'
CONSULTAS – FILTRAR SQL
LIKE EX12
BD_TERCEIRA

1. Selecionar todos os customersName que sejam sociedades (ltd) da tabela Customer


2. Selecionar todos os employees cuja extension esteja na gama X4000
3. Selecionar todos os automóveis (productname) marca Ford da tabela Product
CONSULTAS – FILTRAR SQL
LISTA DE VALORES
CONSULTAS – FILTRAR SQL
LISTA DE VALORES
CONSULTAS – FILTRAR SQL
LISTA DE VALORES EX13
BD_TERCEIRA

1. Selecionar todos os customers que sejam de USA,Poland e France, ordenando os países por
ordem descendente
2. Selecionar os escritórios de NYC e Boston da tabela Office
CONSULTAS – FILTRAR SQL
VALORES NULOS
CONSULTAS – FILTRAR SQL
VALORES NULOS

SELECT *
FROM [Person].[Person]
WHERE [Title] IS NULL
CONSULTAS – FILTRAR SQL
EX14
NULL
BD_TERCEIRA

1. Selecionar ORDERS que tenham comentários (null)


2. Selecionar ORDERS que não tenham comentários (null)
CONSULTAS – FILTRAR SQL
FUNÇÃO IFNULL – Função que permite alterar o valor NULL por um definido pelo utilizador
CONSULTAS – LIMIT SQL
LIMIT – Clausula que permite limitar o número de regitos apresentar

IRÃO SER MOSTRADOS OS 10º PRIMEIROS REGISTOS


QUE SATISFAÇAM A CONSULTA

IRÃO SER MOSTRADOS OS 4º E 5º REGISTO


RESPETIVAMENTE, UMA VEZ QUE OS 3º PRIMEIROS
SERÃO IGNORADOS
CONSULTAS – LIMIT SQL
SQLSERVER
CONSULTAS – LIMIT SQL
BD_TERCEIRA EX15

1. Selecionar os 3 primeiros da tabela de Product registos onde o ProductScale seja 1:700


2. Selecionar os registos 29, 30 e 31 da tabela Product ordenados productscale de forma
descendente
CONSULTAS – LIMIT SQL
SQLSERVER
CONSULTAS – GROUPING AND AGGREGATING DATA SQL
FUNÇÕES DE AGREGAÇÃO

• Funções de Agregação
• Funções Built-In agregadas
• Usar DISTINCT com Aggregate
Functions
• Utilizar Aggregate Functions com o
NULL
CONSULTAS – GROUPING AND AGGREGATING DATA SQL
FUNÇÕES DE AGREGAÇÃO

• Aggregate functions:
• Retorna um valor escalar (sem nome na coluna)
• Ignora os NULLs com a excepção do COUNT(*)
• Podem ser utilizados com
• SELECT, HAVING, and ORDER BY clauses
• Frequentemente usado com GROUP BY clause
CONSULTAS – GROUPING AND AGGREGATING DATA SQL
FUNÇÕES DE AGREGAÇÃO

Common Statistical Other

• SUM • STDEV • CHECKSUM_AGG


• MIN • STDEVP • GROUPING
• MAX • VAR • GROUPING_ID
• AVG • VARP
• COUNT
CONSULTAS – GROUPING AND AGGREGATING DATA
FUNÇÕES DE AGREGAÇÃO
SQL
COUNT

Conta o número de registos


COUNT(<column>) ignores NULL
Select COUNT(nome do campo) COUNT(*) counts all rows
From nome tabela

AVG

Calcula a media dos resgistos

Select AVG(nome do campo)


From nome tabela

SUM

Calcula o TOTAL dos resgistos

Select SUM(nome do campo)


From nome tabela
CONSULTAS – GROUPING AND AGGREGATING DATA
FUNÇÕES DE AGREGAÇÃO
SQL
MIN

Calcula o valor mais baixo dos resgistos

Select MIN(nome do campo)


From nome tabela

MAX

Calcula o valor mais alto dos resgistos

Select MAX(nome do campo)


From nome tabela
CONSULTAS – GROUPING AND AGGREGATING DATA SQL
FUNÇÕES DE AGREGAÇÃO
CONSULTAS – GROUPING AND AGGREGATING DATA SQL
FUNÇÕES FORMAT
Permite formatar um número com n casas decimais. A função format devolve o número formatado
Como uma string
CONSULTAS – GROUPING AND AGGREGATING DATA SQL
EX16
BD_SEGUNDA

1. Calcular capacidade TOTAL, MEDIA, MÁXIMO , MINIMO E NUMERO DE salas

Formata a Média com 2 casas decimais


CONSULTAS – GROUPING AND AGGREGATING DATA SQL
CONSULTAS – GROUPING AND AGGREGATING DATA SQL
• GROUP BY creates groups for output rows, according
to a unique combination of values specified in the
GROUP BY clause
SELECT <select_list>
FROM <table_source>
WHERE <search_condition>
GROUP BY <group_by_list>;

• GROUP BY calculates a summary value for aggregate


functions in subsequent phases
SELECT [CustomerID], COUNT(*)
FROM [Sales].[SalesOrderHeader]
GROUP BY [CustomerID]
CONSULTAS – GROUPING AND AGGREGATING DATA SQL
Selecionar a média do preço de compra agrupados pelo productscale da tabela products
CONSULTAS – GROUPING AND AGGREGATING DATA SQL
EX17
BD_TERCEIRA

1. Selecionar a média, total, o máximo e o minimo do preço de compra de todos os MotorCycles


agrupados pelo productscale da tabela products
2. Selecionar o total de clientes da tabela Customers agrupados por paises
CONSULTAS – GROUPING AND AGGREGATING DATA SQL
HAVING – Permite colocar uma condição aos grupos
CONSULTAS – GROUPING AND AGGREGATING DATA SQL

SELECT SalesOrderID, SUM(LineTotal) AS SubTotal


FROM Sales.SalesOrderDetail
GROUP BY SalesOrderID
HAVING SUM(LineTotal) > 100000.00
ORDER BY SalesOrderID ;

SELECT soh.CustomerID, COUNT(*) AS 'N.º PEDIDOS'


FROM sales.SalesOrderHeader soh
GROUP BY soh.CustomerID
HAVING COUNT(*) > 10;
CONSULTAS – GROUPING AND AGGREGATING DATA SQL
EX18
1. Selecionar a média do preço de compra agrupados pelo productscale onde a media de preço é
superior a 50 da tabela products
CONSULTAS – TIMESTAMPDIFF
FUNÇÃO TIMESTAMPDIFF vs DATEFIFF
CONSULTAS – TIMESTAMPDIFF
FUNÇÃO TIMESTAMPDIFF – Permite calcuar a diferença entre duas datas

Dados de saida campo

A função NOW() retorna o dia e hora corrente no formato: yyyy-mm-dd hh:mm:ss.

A função CURDATE() retorna o dia corrente no formato: yyyy-mm-dd

A função CURTIME() retorna a hora corrente no formato: hh:mm:ss


CONSULTAS – TIMESTAMPDIFF
FUNÇÃO TIMESTAMPDIFF

FUNÇÃO DATEDIFF
CONSULTAS – QUERING MULTIPLE TABLES
MULTIPLAS TABELAS
CONSULTAS – QUERING MULTIPLE TABLES
MULTIPLAS TABELAS
CONSULTAS – QUERING MULTIPLE TABLES
MULTIPLAS TABELAS – INNER JOIN

SELECT pp.FirstName,pp.LastName, PEA.EmailAddress


FROM [Person].[Person] PP
JOIN [Person].[EmailAddress] PEA
ON PP.BusinessEntityID=PEA.BusinessEntityID

SELECT SSAH.SalesOrderNumber,
DATE_FORMAT(SSAH.OrderDate,'dd-MM-yy') as 'DATA FATURA',SSOD.UnitPrice
FROM [Sales].[SalesOrderHeader] SSAH
JOIN [Sales].[SalesOrderDetail] SSOD
ON SSAH.SalesOrderID=SSOD.SalesOrderID
CONSULTAS – QUERING MULTIPLE TABLES
MULTIPLAS TABELAS
Selecionar o first_name, last_name (employee) e o nome do departamento que pertencem

Quando utilizamos mais que uma tabela na query é boa prática alterar o nome das tabelas para
facilitar o nome dos campos
CONSULTAS – QUERING MULTIPLE TABLES
MULTIPLAS TABELAS
CONSULTAS – QUERING MULTIPLE TABLES
MULTIPLAS TABELAS
CONSULTAS – QUERING MULTIPLE TABLES
D5_EX1 BD_PRIMEIRA

Selecionar (First_name, last_name) como nome prorprio, birth_date ,idade (individual), address,
postal_code e city (customer)

D5_EX3 BD_TERCEIRA

Selecionar ordernumber,orderdate(order), priceeach, quantity, (qt*preco)(order details),


customername(costumers)

Selecionar ordernumber,orderdate(order), priceeach, quantity, (qt*preco)(order details),


customername(costumers) de clientes dos USA e FRANCE

Selecionar o customername e o total dos seus pagamentos


CONSULTAS – QUERING MULTIPLE TABLES
Selecionar o numero de vendas por cada funcionário, agrupados pelo nome do funcionário

Selecionar ordernumber,orderdate(order), priceeach, quantity, (qt*preco)(order details),


customername, city(costumers) , o nome do funcionário que efetuou a venda(employee)
CONSULTAS – QUERING MULTIPLE TABLES
CONSULTAS – QUERING MULTIPLE TABLES

USING - PERMITE LIGAR 2 CAMPOS COM O MESMO NOME MAS DE TABELAS DIFERENTES

SELECT ... FROM film INNER JOIN film_actor USING (film_id) WHERE ...

SELECT ... FROM film as f


INNER JOIN film_actor as fc
ON f.film_id=fc.film_id
WHERE ...
CONSULTAS – QUERING MULTIPLE TABLES
USING
CONSULTAS – QUERING MULTIPLE TABLES
MULTIPLAS TABELAS – LEFT/RIGHT JOIN

• Retorna todas as linhas da primeira tabela e só as que


têm correspondência da segunda:
FROM t1 LEFT JOIN t2
ON t1.col = t2.col

• Retorna todas as linhas da segunda tabela e só as que


têm correspondência da primeira:
FROM t1 RIGHT JOIN t2 ON
t1.col = t2.col

• Retorna apenas linhas da primeira tabela que não têm


correspondência na segunda
FROM t1 LEFT JOIN t2 ON
t1.col = t2.col
WHERE t2.col IS NULL
CONSULTAS – QUERING MULTIPLE TABLES
MULTIPLAS TABELAS – LEFT/RIGHT JOIN

SELECT HRJ.JobCandidateID,
HRE.BusinessEntityID,HRJ.Resume
FROM [HumanResources].[JobCandidate] HRJ
LEFT JOIN [HumanResources].[Employee] HRE
ON HRJ.BusinessEntityID=HRE.BusinessEntityID
WHERE HRE.BusinessEntityID IS NULL

SELECT SST.Name, SSP.BusinessEntityID


FROM [Sales].[SalesTerritory] SST
RIGHT JOIN [Sales].[SalesPerson] SSP
ON SST.TerritoryID=SSP.TerritoryID
WHERE SST.Name IS NULL
CONSULTAS – QUERING MULTIPLE TABLES
D5_EX4 BD_TERCEIRA
Selecionar o numero, primeiro e ultimo nome de todos os empregados que não tenham realizado
qualquer venda

Selecionar o nome de todos os customers que ainda não realizaram compras

Selecionar o nome de todos os customers que ainda não pagaram as suas compras
CONSULTAS – QUERING MULTIPLE TABLES
MULTIPLAS TABELAS – SELF JOIN
• Porque usar self joins?
• Comparar uns registos a outros da mesma tabela

• Create two instances of same table in FROM


clause
• At least one alias required
• Example: Return all employees and
the name of the employee’s manager
SELECT e.empid, e.lastname,
e.title, e.mgrid, m.lastname
FROM HR.Employees AS e
JOIN HR.Employees AS m
ON e.mgrid=m.empid ;
CONSULTAS – QUERING MULTIPLE TABLES
MULTIPLAS TABELAS – SELF JOIN

Número das faturas onde os produtos foram vendidos


CONSULTAS – QUERING MULTIPLE TABLES
MULTIPLAS TABELAS – SELF JOIN

Selecionar o first_name, o last_name e o jobtitle (employes) da pessoa que está responsável para cada
empregado first_name, o last_name e o jobtitle (employes)
CONSULTAS – SUBQUERIES

• Subqueries são queries encaixadas : queries dentro de


queries
• Os resultados de uma query são passados para uma
outra query
• Subqueries can be self-contained or correlated
• Self-contained subqueries não têm dependencia de outra query
• Correlated subqueries dependem dos valores de outra consulta

• Subqueries podem ser escalares, multi-valor ou tabelas


de valor
CONSULTAS – SUBQUERIES

• Subconsulta Escalar devolve apenas um valor à


consulta principal
• Pode ser usada em qualquer parte da consulta
principal: SELECT, WHERE, …..
SELECT ss.SalesOrderID, ss.ProductID, ss.UnitPrice,
ss.OrderQty
FROM [Sales].[SalesOrderDetail] as ss
WHERE ss.SalesOrderID =
(SELECT MAX(y.SalesOrderID) AS lastorder
FROM Sales.SalesOrderHeader as y) ;

• Se a subconsulta devolver um resultado vazio, será


convertido em nulo
CONSULTAS – SUBQUERIES

D5_EX4 BD_TERCEIRA

Selecionar o nome dos produtos cujo preço de compra seja superior à média de preços de venda

Selecionar o nome customers cujo amount (payment) seja superior à media

BD_PRIMEIRA
Selecionar a cidade (Customers), first_name e last_name (individual) cuja idade seja inferior
média das idades
CONSULTAS – SUBQUERIES

D5_EX4 BD_TERCEIRA
Selecionar o customers que mais pagou
CONSULTAS – SUBQUERIES
OPERADRES IN E NOT IN

Estes operadores são utilizados sempre que a subquery retorne mais que um valor

Selecionar todos os funcionários que trabalhem nos USA


CONSULTAS – SUBQUERIES
OPERADORES IN E NOT IN
CONSULTAS – SUBQUERIES
OPERADORES IN E NOT IN
SELECT Name
FROM Purchasing.Vendor
WHERE CreditRating = 1
AND BusinessEntityID IN
(SELECT BusinessEntityID
FROM Purchasing.ProductVendor Encontra o nome de todos os
WHERE MinOrderQty >= 20 fornecedores cuja classificação de
AND AverageLeadTime < 16); crédito é boa, de quem a Adventure
Works Cycles faz pedidos de pelo
menos 20 itens e cujo tempo médio de
SELECT DISTINCT Name entrega é inferior a 16 dias.
FROM Purchasing.Vendor v
INNER JOIN Purchasing.ProductVendor p
ON v.BusinessEntityID =
p.BusinessEntityID
WHERE CreditRating = 1
AND MinOrderQty >= 20
AND AverageLeadTime < 16;
CONSULTAS – SUBQUERIES
OPERADORES IN E NOT IN
SELECT Name
FROM Production.Product
WHERE ProductSubcategoryID NOT IN
(SELECT ProductSubcategoryID
FROM Production.ProductSubcategory
WHERE Name = 'Mountain Bikes'
OR Name = 'Road Bikes'
OR Name = 'Touring Bikes');

A consulta a seguir encontra os nomes dos produtos que não são


bicicletas acabadas.
CONSULTAS – SUBQUERIES
OPERADORES IN E NOT IN

SELECT Name Encontra os produtos com preços mais altos


FROM Production.Product do que os produtos com preços mais baixos
WHERE ListPrice > da subcategoria 14
(SELECT MIN (ListPrice)
FROM Production.Product
GROUP BY ProductSubcategoryID
HAVING ProductSubcategoryID = 14);

Como as subconsultas introduzidas com operadores de comparação não


modificados devem retornar um único valor, não podem incluir cláusulas
GROUP BY ou, a HAVING a menos que à partida saibamos que a própria
cláusula GROUP BY ou HAVING retorna apenas um único valor
CONSULTAS – SUBQUERIES
OPERADORES IN E NOT IN

Selecionar vendas onde o valor total sejam superiores a 60000

A outer query é a responsável


por mostrar os registos da tabela
orders

A subquery encontra a lista de n.º


de venda cujos valores são
superiores a 60000
CONSULTAS – SUBQUERIES

Selecionar os customers que não tenham comprado


CONSULTAS – SUBQUERY
EXISTS
Operador booleano que retorna verdadeiro ou falso.

É normalmente usado para testar a existência de resultados devolvidos pela subquery.


CONSULTAS – SUBQUERY
EXISTS

Para cada linha na tabela de clientes, a consulta


verifica o customerNumber na tabela de pedidos.

Se o customerNumber, que aparece na tabela de


clientes, existir na tabela de pedidos, a subconsulta
retorna a primeira linha correspondente.

Como resultado, o operador EXISTS retorna


verdadeiro.

Caso contrário, a subconsulta não retorna nenhuma


linha e o operador EXISTS retorna falso
CONSULTAS – SUBQUERY
FROM SUBQUERY
Quando usamos uma subconsulta no FROM, o conjunto de resultados retornado de uma subconsulta são usados
como uma tabela temporária a que chamamos de tabela derivada
CONSULTAS – SUBQUERY
FROM SUBQUERY
Quando usamos uma subconsulta no FROM, o conjunto de resultados retornado de uma subconsulta são usados
como uma tabela temporária a que chamamos de tabela derivada

Arredonda a média
para baixo
CONSULTAS – SUBQUERY
BD_TERCEIRA - metodo1

Obtém os cinco produtos mais vendidos 2003


CONSULTAS – SUBQUERY
BD_TERCEIRA – metodo2 (Tabela derivada)
Obtém os cinco produtos mais vendidos 2003
CONSULTAS – SUBQUERY
CONSULTAS – SUBQUERY
CASE

A expressão CASE do MySQL é uma estrutura de decisão que permite adicionar a lógica if-else a uma
consulta.

De um modo geral, podemos usar a expressão CASE em qualquer parte da query que permita uma
expressão válida, por exemplo, SELECT, WHERE e ORDER BY.
CASE

Quando os valores testados são texto, os valores são colocados dentro de plicas
CASE
BD_Primeira
CASE

Case utilizado no order by, neste exemplo, caso o stade seja nulo, então a ordenação deverá ser
feita por country
CASE
VIEWS – O QUE SÃO?
A View é uma tabela que não Contem dados ou informação, apenas contém resultados de queries.
VIEWS – O QUE SÃO?
A View é uma tabela que não Contem dados ou informação, apenas contém resultados de queries.

CREATE VIEW view_name AS


SELECT *
SELECT column1, column2.....
FROM view_name
FROM table_name
WHERE condition;
VIEWS – CRIAR
NOME DA VIEW

SELECT * FROM MOTAS


VIEWS – EXERCÍCIOS
CRIAR UMA VIEW QUE GUARDE O TOTAL POR FATURA

CRIAR UMA QUERY DA VIEW CRIADA QUE MOSTRE APENAS AS FATURAS SUPERIORES A 60000
VIEWS – EXERCÍCIOS
CRIAR UMA VIEW QUE GUARDE AS MAIORES VENDAS (VENDAS SUPERIORES A 60000) A PARTIR DA
VIEW ANTERIOR
Nome da view
Arredonda o valor de um campo
numerico

Arredondamento às centésimas

Nome da view que irá servir de fonte de


dados
VIEWS – WITH CHECK OPTION
ESTA OPÇÃO PERMITE QUE A VIEW ESTEJA SEMPRE ATUALIZADA
VIEWS – ELIMINAR
STORED PROCEDURES

É um conjunto de comandos, ao qual é atribuído um nome, ficando armazenado na Base de dados , podendo ser
chamado a qualquer momento tanto pelo SGBD para ser executado, por utras palavras permite automatizar
tarefas.

DELIMITER
Quando utilizamos o ; em queries sql, o servidor entende que queremos executar duas instruções em separado
STORED PROCEDURES
DELIMITER
Para que o bloco seja interpretado pelo servidor como apenas um, devemos utilizar o delimiter para que o servidor
execute todo o bloco como sendo apenas um

O servidor irá executar todo o bloco como sendo apenas um


STORED PROCEDURES
CRIAR

Comando que permite criar Tipo de objeto a criar Eventuais a entrarem e/ou
objetos numa base de sairem do objeto
dados

Nome do objeto a criar

CREATE PROCEDURE IF NOT EXITS sp_name(parameter_list)


BEGIN
statements;
END;
STORED PROCEDURES
CRIAR

Comando que permite criar Tipo de objeto a criar Eventuais a entrarem e/ou
objetos numa base de sairem do objeto
dados

Nome do objeto a criar


CRIAR UMA BASE DE DADOS
Nome da base de
dados

Comando que permite Nome do objeto a criar, neste


criar caso criamos uma base de
dados
Resultado

OU

exp
CRIAR UMA BASE DE DADOS
exp

Vai verificar se o objeto que está ser criado existe, caso não existe ele será criado
CRIAR UMA BASE DE DADOS
USE – Permite utilizar uma base de dados.
Exemplo: Criar uma base de dados e de seguida partir para a criação de tabelas, tudo num único
script
APAGRAR UMA BASE DE DADOS
DROP – Permite um objeto
CRIAR UMA TABELA
CREATE TABLE– Permite criar uma tabela

Nome da tabela
CRIAR UMA TABELA
CREATE TABLE– Permite criar uma tabela

NOME DO CAMPO

TIPO DE DADOS

PROPRIEDADES
CRIAR UMA TABELA
CREATE TABLE– Permite criar uma tabela

Numeração automática
Tipo de dados

Necessário
criar mais
campos

Nome do campo
Não aceita que o
campo fique nulo
CRIAR UMA TABELA
CREATE TABLE– Permite criar uma tabela Como os dados são do tipo CHAR (caracteres)
precisamos de indicar quantos caracteres pode
Tipo de dados
o campo guardar

Necessário
criar mais
campos

Nome do campo
Não aceita que o
campo fique nulo
CRIAR UMA TABELA
CREATE TABLE– Permite criar uma tabela Como os dados são do tipo CHAR (caracteres)
precisamos de indicar quantos caracteres pode
Tipo de dados o campo guardar

Necessário
criar mais
campos

Nome do campo
Aceita valor nulo
CRIAR UMA TABELA
CREATE TABLE– Permite criar uma tabela Nome do(s) campo(s) que serão chave(s)
primária

Como não irá ser


definido mais
nenhum campo ,
não é colada a
Indicamos a(s) chave primaria(s) vírgula
CRIAR UMA TABELA
Stored Engines - tipos de tabelas do MySQL ou os mecanismos de armazenamento (storage engines)

O MyISAM extende os recursos do antigo ISAM.

É otimizado para compressão, velocidade e as tabelas neste formato são portáveis entre várias
plataformas e diferentes sistemas operativos.

Este tipo é apropriado para BD com intensa leitura de dados e pouca ou nenhuma escrita.

Ponto fraco, não ter suporte para TRANSATIONS e chaves estrangeiras.


CRIAR UMA TABELA
Stored Engines - tipos de tabelas do MySQL ou os mecanismos de armazenamento (storage engines)

InnoDB é o atual mecanismo padrão do mysql

• Ótima performance
• As tabelas neste mecanismo podem chegar a 64 Terabytes.
• Portável entre diferentes plataformas.
• Também faz verificações e repações em tabelas ao ser iniciado.
Resumindo, o InnoDB tem suporte a:
• transações SQL e XA
• tablespaces
• chaves estrangeiras
• indíces FULLTEXT
• operações espaciais
• colunas virtuais
CRIAR UMA TABELA
Stored Engines - tipos de tabelas do MySQL ou os mecanismos de armazenamento (storage engines)

MEMORY -já foi conhecido como HEAP, cria tabelas com propósitos específicos, cujo
conteúdo fica armazenado na memória.

• Uma vez que os dados ficam muito vulneráveis a problemas de hardware, como
oscilações na rede elétrica, é seguro usar este mecanismo apenas para tabelas
temporárias, com restrições de escrita (que não podem ser alteradas) e com dados
emprestados de outras tabelas.

A principal vantagem deste mecanismo é a agilidade com que se pode manipular os
dados.
CRIAR UMA TABELA
Stored Engines - tipos de tabelas do MySQL ou os mecanismos de armazenamento (storage engines)

CSV - O mecanismo de armazenamento CSV (Comma Separated Values — valores separados por
vírgulas)armazena os dados em arquivos de texto, separando os registros com vírgulas.

Este é o mecanismo usado em listas de contatos do cartão SIM do telemovél


CRIAR UMA TABELA
Stored Engines - tipos de tabelas do MySQL ou os mecanismos de armazenamento (storage engines)

ARCHIVE- É otimizado para inserção ágil e rápida de grande quantidade de dados em


arquivos comprimidos e não indexados, para poupar espaço.

Os registros são comprimidos ou descomprimidos sob pedido, à medida em que são


inseridos ou requisitados.
CRIAR UMA TABELA
Stored Engines - tipos de tabelas do MySQL ou os mecanismos de armazenamento (storage engines)

O ponto e virgula indica que terminou a


criação da tabela

Forma como a Tabela irá aemazenar


os dados
EXEMPLO
EXEMPLO 2
CRIAR UMA TABELA
CAMPO ENUM

É um objeto string cujo valor é escolhido de uma lista de valores definidos no momento da criação do
campo.
CRIAR UMA TABELA
SET VALUES

Tem uma função parecida ao ENUM com a diferença de que dados ENUM apenas pode ser selecionada uma
opção, com o SET é possível escolher várias opções.

Muito usado para campos que guardam preferências, hobbies,….


CRIAR UMA TABELA
SET VALUES
TIPOS DE DADOS
TIPOS DE DADOS
TIPOS DE DADOS
TIPOS DE DADOS
EXERCICIO
• Criar BD_quarta

• Criar as tabelas
SHOW
• PERMITE MOSTRAR OS OBJETOS DESCRITOS
SHOW

• Show tables

ou
INDEXAÇÃO

• Indexar campos permite otimizar consultas

Por exemplo, uma consulta do tipo “selecionar todos os livros do autor C.J. Date” .
Se este autor for apenas uma ínfima parte do total de registros de livros, é ineficiente para
o SGBD ter de ler cada registro da tabela para verificar se o autor é o indicado;

O ideal seria o sistema localizar esses registros diretamente.

Para isso, criamos estruturas especiais nas tabelas, chamadas de Índices.


INDEXAÇÃO
INDEXAÇÃO
Criar um índice numa tabela já criada
INDEXAÇÃO
EXEMPLO
INDEXAÇÃO - EXERCÍCIO
Cria 2 índices na tabela pessoa nos campos localidade e data_registo
SHOW INDEX
EXERCÍCIO
EXERCÍCIO
ALTERAR TABELAS

• ADICIONAR campos à tabela

Operação a realizar

Nome da tabela Nome do campo

Colocar o campo
como o 1º da
tabela

Colocar o novo
campo depois de
um outro
ALTERAR TABELAS

• ADICIONAR campos à tabela pessoa BD_QUARTA

• ADICIONAR campos à artista , Base de Dados Music


ALTERAR TABELAS
• CHANGE COLUMNS

PERMITE ALTERAR O NOME DOS CAMPOS


Nome da tabela

Nome do campo a mudar Novo nome do campo


ALTERAR TABELAS
• MODIFY COLUMNS

PERMITE ALTERAR PROPRIEDADES DOS CAMPOS


ALTERAR TABELAS

• REMOVER campos à tabela


ALTERAR TABELAS
EXERCÍCIO
ALTERAR CHAVES PRIMÁRIAS
EXERCÍCIO

O MYSQL NÃO PERMITE ACRESCENTAR (ATRAVÉS DO ALTER) MAIS CHAVES PRIMÁRIAS, SE A IDEIA FOR
TROCAR A CHAVE PRIMÁRIA ENTÃO:

1º REMOVER A CHAVE DA TABELA


2º ADICIONAR A CHAVE PRETENDIDA
ALTERAR CHAVES PRIMÁRIAS
EXERCÍCIO

Irá gerar erro, porque para


definimos múltiplas chaves
primárias devemos
ALTERAR CHAVES PRIMÁRIAS
EXERCÍCIO
Imaginemos que só queremos o campo name como primary key
RENAME
TABLES
Permite renomear objetos

OU
RENAME
EXERCÍCIO
RENAME
DATABASE
CHAVES EXTRANGEIRAS
CHAVES EXTRANGEIRAS

É usado para prevenir ações que destruam a ligação entre tabelas.

Campo da tabela que serve de chave estrangeira

Tabela e campo com a qual será efetuada a ligação


CHAVES EXTRANGEIRAS
Exemplo
CHAVES EXTRANGEIRAS
EXERCÍCIO
STORED PROCEDURES
EXERCÍCIO

Você também pode gostar