Manual SQL
Manual SQL
• 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 ?
Conjunto de informação estruturada e relacionada entre si, sobre um determinado tema ou domínio.
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 ?
• 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,……
O que é um Registo?
• Contém dados específicos, como informações sobre um determinado funcionário ou produto.
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
PK – Primary Key
SQL
CHAVE ESTRANGEIRA
FK – Foreigner Key
SQL
IDENTIFICA O NOME DOS CAMPOS DAS TABELAS CARROS E CLIENTES – EX2
SQL
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
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
3
1
PHPMYADMIN – INSTALAÇÃO DE UMA BASE DE DADOS JÁ CRIADA SQL
3º
PHPMYADMIN – INSTALAÇÃO DE UMA BASE DE DADOS JÁ CRIADA SQL
Resultado da query
SQL
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
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
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
EXEMPLO
1. Selecionar os campos First_Name para Nome e Last_Name para Apelido da tabela Employees
EXEMPO
Select concat(campo1,campo2)
CONSULTAS – FUNÇÃO CONCAT SQL
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 *
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 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 [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 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
• 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
AVG
SUM
MAX
FUNÇÃO DATEDIFF
CONSULTAS – QUERING MULTIPLE TABLES
MULTIPLAS TABELAS
CONSULTAS – QUERING MULTIPLE TABLES
MULTIPLAS TABELAS
CONSULTAS – QUERING MULTIPLE TABLES
MULTIPLAS TABELAS – INNER JOIN
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
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 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
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
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
D5_EX4 BD_TERCEIRA
Selecionar o nome dos produtos cujo preço de compra seja superior à média de preços de venda
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
Arredonda a média
para baixo
CONSULTAS – SUBQUERY
BD_TERCEIRA - metodo1
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.
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
É 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
Comando que permite criar Tipo de objeto a criar Eventuais a entrarem e/ou
objetos numa base de sairem do objeto
dados
Comando que permite criar Tipo de objeto a criar Eventuais a entrarem e/ou
objetos numa base de sairem do objeto
dados
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
É 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.
• Ó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.
É 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.
• Criar as tabelas
SHOW
• PERMITE MOSTRAR OS OBJETOS DESCRITOS
SHOW
• Show tables
ou
INDEXAÇÃO
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;
Operação a realizar
Colocar o campo
como o 1º da
tabela
Colocar o novo
campo depois de
um outro
ALTERAR TABELAS
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:
OU
RENAME
EXERCÍCIO
RENAME
DATABASE
CHAVES EXTRANGEIRAS
CHAVES EXTRANGEIRAS