Rápida revisão do Modelo Relacional

Documentos relacionados
SQL (Tópicos) Structured Query Language

Comandos de Manipulação

Introdução ao PostgreSQL

SQL Linguagem de Manipulação de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

ANÁLISE E PROJETO DE BANCO DE DADOS

BCD29008 Banco de dados

Aula de SQL Comandos DDL. André Luiz de Oliveira Eduardo Raul Hruschka

SQL CREATE DATABASE. MySQL, SQL Server, Access, Oracle, Sybase, DB2, e outras base de dados utilizam o SQL.

Linguagem SQL. ENG1518 Sistemas de Informação Gerenciais Prof. Marcos Villas

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE INTRODUÇÃO A SQL

Bancos (Bases) de Dados

IMPLEMENTAÇÃO DE BANCO DE DADOS

SQL TGD/JMB 1. Projecto de Bases de Dados. Linguagem SQL

SQL. Prof. Roger Cristhian Gomes

Álgebra Relacional e SQL

MySql. Introdução a MySQL. Andréa Garcia Trindade

UNIVERSIDADE FEDERAL DA GRANDE DOURADOS PRÓ-REITORIA DE GRADUAÇÃO PROGRAD FACULDADE DE CIÊNCIAS EXATAS E TECNOLOGIA CURSO DE SISTEMAS DE INFORMAÇÃO

Linguagem de pesquisa declarativa para banco de dados relacional; 1ª Versão - Desenvolvida pela IBM no laboratório de pesquisa de San José;

Básico da Linguagem SQL. Definição de Esquemas em SQL. SQL(Structured Query Language)

Conceitos básicos. Funcionario SIAPE Nome Lotacao Cargo Salario Admissao

Laboratório de Banco de Dados II Aula 04. Prof. Érick de Souza Carvalho

- SQL Linguagem de Manipulação de Dados

Álgebra Relacional. Conjunto de operações que usa uma ou duas relações como entrada e gera uma relação de saída. Operações básicas:

Banco de Dados I. Aula 16 - Prof. Bruno Moreno 04/11/2011

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

Sumário SELECT + FROM

Banco de Dados. Marcio de Carvalho Victorino Exercícios SQL

Utilizando o Postgres - comandos SQL para a manipulação de dados

SQL - Perguntas. André Restivo. Faculdade de Engenharia da Universidade do Porto. February 24, 2012

Álgebra Relacional e SQL operações de interesse

MODELAGEM DE DADOS - INTRODUÇÃO AO SQL: DML. Prof. Angelo Augusto Frozza, M.Sc.

Banco de Dados II. Aula Prof. Diemesleno Souza Carvalho

DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR

AULA 8. Ambientes Visuais 8.1. OBJETIVO DA AULA SQL (Structured Query Language)

TLBD II Instruções SQL

Ex.: INSERT INTO tmpautor (CDAUTOR, NMAUTOR) VALUES (1, Renato Araújo )

PCS3413. Engenharia de So-ware e Banco de Dados. Aula 17. Escola Politécnica da Universidade de São Paulo

saída durante o runtime Usando Functions de uma Única Linha para Personalizar Relatórios Mostrar as diferenças entre as functions SQL de uma única

Introdução ao Banco de Dados. Banco de Dados

BANCO DE DADOS. Para a criação de um banco de dados, através de scripts SQL, deve-se usar a seguinte sintaxe: CREATE DATABASE <nome_banco_de_dados>

Exercício Aula Passada. SQL Linguagem de Manipulação de Dados. Exercício Aula Passada. Exercício Aula Passada. Exercício Aula Passada

SQL Linguagem de Manipulação de Dados SQL DML SQL DML. Exemplo Modelo Relacional. Exemplo ME-R SQL DML CONTINUAÇÃO...

E-BOOK GUIA RÁPIDO DE SQL W W W. T R E I N A W E B.C O M. B R

SQL DML. SQL Linguagem de Manipulação de Dados SELECT SELECT SELECT SELECT

Introdução a Bancos de Dados

Ordenação de tuplos order by

Banco de Dados I. Prof. Diego Buchinger. Profa. Rebeca Schroeder Freitas Prof. Fabiano Baldo.

BANCO DE DADOS -INTRODUÇÃO AO SQL. Prof. Angelo Augusto Frozza, M.Sc.

SQL BÁSICO. Luiz Antônio Vivacqua Corrêa Meyer

L Q S m e g a u g n Li A

PROGRAMA. 3.SQL Básico. 3.1 Criação de tabelas 3.2 Queries simples 3.3 Subqueries 3.4 Agregação. Prof. Dr. Marcos Tsuzuki

SQL-99: Esquema de BD EMPRESA

SQL DML. Frederico D. Bortoloti

FEAP - Faculdade de Estudos Avançados do Pará PROFª LENA VEIGA PROJETOS DE BANCO DE DADOS UNIDADE V- SQL

Revisão de Bancos de Dados

IF685 Gerenciamento de Dados e Informação - Prof. Robson Fidalgo 1

3) Palavra-chave distinct (select-from). Obter apenas os pibs distintos entre si.

Sistemas de Bases de Dados Relacionais Introdução ao SQL. Interrogações diversas sobre a Base de Dados Northwind - Parte II

Marcelo Henrique dos Santos

Banco de Dados. Prof. Antonio

ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL

Projeto de Banco de Dados

Linguagem de Consulta Estruturada SQL- DML

Agenda. Linguagem de Consulta SQL. 1. Introdução Histórico. 1. Introdução BD Relacionais

Linguagem de Consulta Estruturada SQL- DML

Bases de Dados. Álgebra Relacional II Junções, agregações, vistas. P. Serendero,

SQL. Prof. Msc Denival A. dos Santos

Sistemas de Informação e Bases de Dados 2012/2013. Linguagem SQL

SQL Linguagem de Definição de Dados

Sumário: 1) Trabalhando com Constraints: - NOT NULL - UNIQUE - PRIMARY KEY - FOREIGN KEY - DEFAULT

Escola Secundária de Albufeira. Comandos MySQL. (Páginas Web Dinâmicas: PHP e MySQL) Carlos Nunes

SQL. SQL (Structured Query Language) Comando CREATE TABLE. SQL é uma linguagem de consulta que possibilita:

SQL é uma linguagem de consulta que implementa as operações da álgebra relacional de forma bem amigável.

'%'! $!0" $ 8 ' %%! % '! $ $$% + ' %!%$/)!'4!+,"/)!)+,/)% *! +,"0''% * %$!*!$$ #!"%&%'%'%$! "94(# ' %'$%$$$%0%$%' *!% %%%'!**% > %% %%!31?

Roteiro. SQL Linguagem de Manipulação de Dados. Exercício Aula Passada. Exercício Aula Passada. Exercício Aula Passada. Exercício Aula Passada

SQL. SQL (Structured Query Language) Comando CREATE TABLE. SQL é uma linguagem de consulta que possibilita:

Preparação. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 10/12/2013

Banco de Dados. Professora: Luciana Faria

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet

Linguagem SQL. Comandos Básicos

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL

A U L A 3 S U B G R U P O S D M L E D Q L : I N S E R I N D O E P E S Q U I S A N D O D A D O S E M U M A T A B E L A

Exame de Recurso de Base de Dados Universidade do Algarve 03/Fev/2005, (duração: 2 horas)

Banco de Dados I Linguagem SQL Parte 2. Autor: Prof. Cláudio Baptista Adaptado por: Prof. Ricardo Antonello

Structured Query Language (SQL)

SQL (com MySQL) Apresentação OBJETIVOS. Programação

EXEMPLOS DE COMANDOS NO SQL SERVER

Objetos Persistentes. Objetos Persistentes: são objetos que requerem armazenamento persistente.

SQL. Prof. Márcio Bueno.

Projeto de Banco de Dados

Prof. Fabiano Taguchi

Bases de Dados 2005/2006. Aula 5

Avisos. SQL: Visões. Roteiro SELECT. Suporte de SQL para OLAP SQL DML CONTINUAÇÃO CONSULTAS AVANÇADAS. Cronograma das próximas aulas

Linguagem de Consulta - SQL

Consulta sobre múltiplas relações

Apresentação Modelo e SQL. André Luiz Montevecchi

mod._1_teoria_sistemas de bancos de dados.doc

Transcrição:

Rápida revisão do Modelo Relacional Conceito de relação Tuplas e atributos

Rápida revisão do Modelo Relacional Regras de integridade Entidade: Deve existir uma chave primária com valor único e não-nulo. Referencial (chave estrangeira): O valor da chave estrangeira deve existir no domínio de valores da chave primária referenciada. Pode conter valores nulos.

Rápida revisão do Modelo Relacional Álgebra relacional Seleção Obs.: alguns autores usam o termo restrição. Retorna uma relação contendo tuplas a partir de uma condição.

Rápida revisão do Modelo Relacional Álgebra relacional Projeção Retorna uma relação contendo sub-tuplas a partir da remoção dos atributos da relação original. Ou simplesmente: retorna as colunas selecionadas da relação original.

Rápida revisão do Modelo Relacional Álgebra relacional Produto Retorna uma relação contendo todas as combinações possíveis de tuplas. Também conhecido como produto cartesiano.

Rápida revisão do Modelo Relacional Álgebra relacional Intersecção Retorna uma relação contendo todas as tuplas em comum de duas relações.

Rápida revisão do Modelo Relacional Álgebra relacional União Retorna uma relação contendo todas as tuplas que aparecem em duas relações.

Rápida revisão do Modelo Relacional Álgebra relacional Diferença Retorna uma relação contendo todas as tuplas que aparecem na primeira relação e que não estão presentes na segunda relação.

Rápida revisão do Modelo Relacional Álgebra relacional Junção natural Retorna uma relação contendo todas as possíveis tuplas a partir de uma combinação de duas tuplas (uma de cada relação). Cada tupla que participa da combinação possui um valor em comum. Obs.: as operações de produto e intersecção são casos especiais de junção.

Rápida revisão de SQL Data Definition Language (DDL) CREATE ALTER DROP Comando Descrição Cria uma nova tabela no banco de dados. Modifica a estrutura de um objeto no banco de dados (ex.: tabela, atributos, etc.). Remove uma tabela do banco de dados.

Rápida revisão de SQL Data Manipulation Language (DML) SELECT INSERT UPDATE DELETE Comando Descrição Seleciona registros de uma ou mais tabelas. Insere um registro na tabela. Atualiza um ou mais registros na tabela. Remove um ou mais registros na tabela. http://slides.jarley.com/bd/bd-06-introducao-sqlparte-i.pdf

Preparando o ambiente para o tutorial Certifique-se que o MySQL Server 5.7 esteja instalado em sua máquina. Entre no MySQL Workbench e escolha a instância do MYSQL instalado. Através do MySQL Workbench, vamos carregar as tabelas do tutorial. Navegue no menu File -> Open SQL Script. Escolha o arquivo aula.sql, na pasta descompactada em sua máquina. Observe o script carregado na área de trabalho.

Preparando o ambiente para o tutorial

Preparando o ambiente para o tutorial Execute o script carregado, clicando no ícone com um raio. Observe se não ocorreu nenhum erro de execução. Do lado direito, clique com o botão em cima do esquema sys e escolha a opção Refresh All. Observe se o novo esquema aula e sua tabelas foram criadas corretamente.

Explorando os dados Expanda o esquema aula, clique com o botão direito na tabela customers e escolha a opção Select Rows Limit 1000. Observe o resultado e repita o procedimento para a tabela orders.

Explorando os dados Modifique a consulta na aba customers para obter todos os clientes com salário maior que 5000: SELECT * FROM CUSTOMERS WHERE SALARY > 5000; Para executar a consulta, basta clicar no ícone com um raio. Obs. 1: Se o script possui mais de uma linha, todas serão executadas. Obs. 2: Para executar apenas uma linha do script, selecione a linha e clique no botão de execução.

Explorando os dados

Explorando os dados Execute algumas consultas para relembrar o uso do SELECT: SELECT * FROM CUSTOMERS WHERE SALARY = 2000; SELECT * FROM CUSTOMERS WHERE SALARY!= 2000; SELECT * FROM CUSTOMERS WHERE SALARY <> 2000; SELECT * FROM CUSTOMERS WHERE SALARY >= 6500; SELECT * FROM CUSTOMERS WHERE AGE >= 25 AND SALARY >= 6500;

Explorando os dados Execute algumas consultas para relembrar o uso do SELECT: SELECT * FROM CUSTOMERS WHERE AGE >= 25 OR SALARY >= 6500; SELECT * FROM CUSTOMERS WHERE AGE IS NOT NULL; SELECT * FROM CUSTOMERS WHERE NAME LIKE 'Ma%'; SELECT * FROM CUSTOMERS WHERE AGE IN ( 25, 27 ); SELECT * FROM CUSTOMERS WHERE AGE BETWEEN 25 AND 27;

Explorando os dados Execute algumas consultas para relembrar o uso do SELECT: SELECT AGE FROM CUSTOMERS WHERE EXISTS (SELECT AGE FROM CUSTOMERS WHERE SALARY > 6500); SELECT * FROM CUSTOMERS WHERE AGE > ALL (SELECT AGE FROM CUSTOMERS WHERE SALARY > 6500); SELECT * FROM CUSTOMERS WHERE AGE > ANY (SELECT AGE FROM CUSTOMERS WHERE SALARY > 6500);

Explorando os dados Execute algumas consultas para relembrar o uso do SELECT: SELECT COUNT(*) FROM CUSTOMERS; SELECT CURRENT_TIMESTAMP; SELECT ID, NAME, SALARY FROM CUSTOMERS WHERE NAME = 'Maria'; SELECT ID, NAME, SALARY FROM CUSTOMERS WHERE SALARY LIKE '200%'; SELECT TOP 3 * FROM CUSTOMERS; SELECT * FROM CUSTOMERS LIMIT 3;

Operações de agregação Cláusula ORDER BY Ordena os registros em ordem crescente ou decrescente, baseado em uma ou mais colunas. No caso de mais uma coluna, a ordem define o processo de ordenação. Em alguns SGBDs, o default é a ordem ascendente. Exemplo: SELECT * FROM CUSTOMERS ORDER BY NAME, SALARY;

Operações de agregação Cláusula ORDER BY

Operações de agregação Cláusula ORDER BY Ordenando na ordem decrescente SELECT * FROM CUSTOMERS ORDER BY NAME DESC;

Operações de agregação Cláusula GROUP BY Agrupa dados idênticos, de acordo com as colunas selecionadas. Podem ser usadas com funções de agregação (ex.: SUM, AVG, MAX, MIX, etc.) Exemplo: SELECT NAME, SUM(SALARY) FROM CUSTOMERS GROUP BY NAME;

Operações de agregação Cláusula GROUP BY Pode ser usada em conjunto com a cláusula ORDER BY Exemplo: SELECT NAME, SUM(SALARY) FROM CUSTOMERS GROUP BY NAME ORDER BY SALARY DESC;

Operações de agregação Cláusula HAVING Especifica condições de filtro em um agrupamento previamente existente. A cláusula WHERE aplica condições em colunas selecionadas. A cláusula HAVING aplica condições em grupos criados pelo GROUP BY. Exemplo: SELECT ID, NAME, AGE, SALARY FROM CUSTOMERS GROUP BY NAME HAVING SALARY >= 2000;

Operações de agregação Cláusula HAVING

Operações de agregação Cláusula DISTINCT Elimina todos os registros duplicados, retornando apenas uma tupla para cada conjunto em duplicidade. Exemplo: SELECT DISTINCT SALARY FROM CUSTOMERS ORDER BY SALARY;

Operações de Junção Chaves estrangeiras Através das chaves estrangeiras será possível combinar duas ou mais tabelas em uma única relação. Observe a tabela Orders. Veja que o atributo CUSTOMER_ID possui o mesmo domínio que o atributo ID de Customers. Vamos alterar a tabela Orders para definir a chave estrangeira: ALTER TABLE ORDERS ADD FOREIGN KEY (Customer_ID) REFERENCES CUSTOMERS (ID);

Operações de Junção Chaves estrangeiras Observe a tabela Orders

Operações de Junção Chaves estrangeiras Observando as tabelas, é possível executar a consulta abaixo? DELETE FROM CUSTOMERS WHERE ID = 3;

Operações de Junção Combina registros de duas ou mais tabelas através de atributos com valores iguais. Para manter a integridade referencial, recomenda-se usar sempre as chaves (primária e estrangeira) das tabelas que participam da junção. Podemos combinar duas tabelas usando apenas a cláusula WHERE: SELECT ID, NAME, AGE, AMOUNT FROM CUSTOMERS, ORDERS WHERE CUSTOMERS.ID = ORDERS.CUSTOMER_ID;

Operações de Junção

Operações de Junção INNER JOIN LEFT JOIN RIGHT JOIN FULL JOIN SELF JOIN CARTESIAN JOIN

Operações de Junção INNER JOIN Cria uma nova tabela combinando os valores das colunas, de acordo com o predicado da cláusula. A consulta compara cada linha da Tabela1 com cada linha da Tabela2 para encontrar todos os pares que atendem ao predicado. Exemplo: SELECT ID, NAME, AMOUNT, DATE FROM CUSTOMERS INNER JOIN ORDERS ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;

Operações de Junção INNER JOIN

Operações de Junção LEFT JOIN Retorna todas as linhas da tabela à esquerda da junção, mesmo se não existir uma ou mais linhas na tabela à direita que atenda ao predicado. Se a tabela à direita não possuir linhas combinando, os seus atributos na tabela resultante serão preenchidos com NULL. Exemplo: SELECT ID, NAME, AMOUNT, DATE FROM CUSTOMERS LEFT JOIN ORDERS ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;

Operações de Junção LEFT JOIN

Operações de Junção RIGHT JOIN Retorna todas as linhas da tabela à direita da junção, mesmo se não existir uma ou mais linhas na tabela à esquerda que atenda ao predicado. Se a tabela à esquerda não possuir linhas combinando, os seus atributos na tabela resultante serão preenchidos com NULL. Exemplo: SELECT ID, NAME, AMOUNT, DATE FROM CUSTOMERS RIGHT JOIN ORDERS ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;

Operações de Junção RIGHT JOIN

Operações de Junção FULL JOIN Retorna a combinação dos resultados das junções à esquerda e à direita. A tabela resultante contém os registros de ambas as tabelas. Os atributos das linhas que não possuem combinação são preenchidos com NULL. ATENÇÃO: O MySQL não suporta o FULL JOIN! Como resolver? Usando a cláusula UNION ALL. União das junções à esquerda e à direita.

Operações de Junção FULL JOIN Exemplo do UNION ALL: SELECT ID, NAME, AMOUNT, DATE FROM CUSTOMERS LEFT JOIN ORDERS ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID UNION ALL SELECT ID, NAME, AMOUNT, DATE FROM CUSTOMERS RIGHT JOIN ORDERS ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;

Operações de Junção FULL JOIN

Operações de Junção SELF JOIN Retorna a combinação de uma tabela com ela mesma. Usamos a cláusula WHERE para fazer o SELF JOIN no MySQL. Exemplo: SELECT a.id, b.name, a.salary FROM CUSTOMERS a, CUSTOMERS b WHERE a.salary < b.salary;

Operações de Junção SELF JOIN

Operações de Junção CARTESIAN JOIN Também chamado de CROSS JOIN. Retorna o produto cartesiano de todos os registros das duas tabelas. É uma operação muito pesada para grandes bases de dados! Exemplo: SELECT ID, NAME, AMOUNT, DATE FROM CUSTOMERS, ORDERS;

Operações de Junção CARTESIAN JOIN

Operação de União Cláusula UNION Usado para combinar os resultados de dois ou mais comandos SELECT. Não retorna registros duplicados. Alguns cuidados no uso do UNION: O número de colunas selecionadas em cada SELECT deverá ser o mesmo; Deverá ter o mesmo número de expressões das colunas (AVG, SUM, etc.) Deverá ter o mesmo tipo nas tuplas retornadas; A ordem de seleção das colunas deverá ser a mesma em cada SELECT.

Operação de União Cláusula UNION Exemplo: SELECT ID, NAME, AMOUNT, DATE FROM CUSTOMERS LEFT JOIN ORDERS ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID UNION SELECT ID, NAME, AMOUNT, DATE FROM CUSTOMERS RIGHT JOIN ORDERS ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;

Operação de União Cláusula UNION

Consultas internas O SQL permite vários níveis de aninhamento de consultas. As consultas internas podem ser combinadas com as cláusulas SELECT, INSERT, UPDATE e DELETE, através de um operador lógico ou relacional.

Consultas internas Algumas regras de uso: As consultas internas são encapsuladas entre parênteses e são executadas a partir do seu nível mais interno. A consulta interna deverá ter apenas uma coluna selecionada na cláusula SELECT; A cláusula ORDER BY não é permitida em uma consulta interna; Se a consulta interna retornar mais de um registro, o resultado deverá ser tratado por cláusulas que recebem conjuntos de linhas (ex.: operador IN).

Consultas internas Exemplo: SELECT * FROM CUSTOMERS WHERE ID IN (SELECT ID FROM CUSTOMERS WHERE SALARY > 4500) ;

Consultas internas

Tutorial avançado de SQL com MySQL Ver Parte II do livro Learning MySQL. Fazer todos os exemplos e exercícios dos capítulos 4 a 9.