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

Documentos relacionados
IMPLEMENTAÇÃO DE BANCO DE DADOS

Rápida revisão do Modelo Relacional

ANÁLISE E PROJETO DE BANCO DE DADOS

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

SQL (Tópicos) Structured Query Language

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

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

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

Comandos de Manipulação

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

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

Projeto de Banco de Dados

Introdução ao PostgreSQL

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

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

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

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

Revisão de Bancos de Dados

Bases de Dados 2005/2006. Aula 5

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

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

Linguagem de Consulta Estruturada SQL- DML

Ordenação de tuplos order by

BCD29008 Banco de dados

Revisão Banco de Dados

COMPETÊNCIAS ESPECÍFICAS Compreender e utilizar a linguagem SQL, na construção e manutenção de uma base de dados.

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

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

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

Álgebra Relacional e SQL

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

Sumário SELECT + FROM

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

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

- SQL Linguagem de Manipulação de Dados

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

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

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

Projeto de Banco de Dados

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

SQL. Prof. Roger Cristhian Gomes

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

Sintaxe do comando SELECT

PROGRAMA. Aquisição dos conceitos teóricos mais importantes sobre bases de dados contextualizados à luz de exemplos da sua aplicação no mundo real.

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

SQL Básica DML. Prof. Marcos A. Schreiner. 22 de outubro de Curso de Licenciatura em Computação

Banco de Dados. Prof. Antonio

Licenciatura em Informática

BANCO DE DADOS. Araújo Lima. Set / Araújo

SQL. Prof. Márcio Bueno.

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

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

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

Structured Query Language (SQL) SQL é uma linguagem normalizada (ANSI) para consultas e actualizações de bases de dados relacionais.

Bancos (Bases) de Dados

Page 1. Prof. Constantino Jacob

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

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

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

Banco de Dados I 5 Linguagens de Consulta

Utilizando o Postgres - comandos SQL para a manipulação 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>

SQL Básico Comandos. Inserção de linhas UPDATE Atualização de linhas Apagamento de linhas. Roberto Harkovsky

- Um "query block" permite a implementação das operações de selecção, projecção e junção da álgebra relacional.

António Rocha Nuno Melo e Castro

Fundamentos de SQL. Curso: Técnico em Redes de Computadores Disciplina: Tecnologias e Linguagem de Banco de dados Professor: Rodrigo da Rocha

Definida pelo American National Standard Institute (ANSI) em 1986

SQL DML. Frederico D. Bortoloti

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

Structured Query Language (SQL)

Linguagem de Consulta Estruturada SQL- DML

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

STRUCTURED QUERY LANGUAGE (SQL)

As Instruções DML. As Instruções de manipulação de dados(dml) em SQL são representados por: Modificam o estado do banco de dados:

Sumário Introdução Breve História da Linguagem SQL l 0.3 Características da Linguagem SQL A Composição deste Livro 3

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

Banco de Dados. Prof. Dr. Joel da Silva SQL - Introdução

Exercícios de Lógica Exercícios de Fixação 08

S Q L 31/03/2010. SQL - Structured Query Language Linguagem de Consulta Estruturada

Banco de Dados. Diego Silveira Costa Nascimento. 20 de março de Instituto Federal do Rio Grande do Norte

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

Curso de Banco de Dados. Prof. Rone Ilídio

DML - SELECT Agrupando Dados

Consulta sobre múltiplas relações

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

S Q L 15/01/2013. Enfoques de SQL. Enfoques de SQL SQL. Usos de SQL. SQL - Origem/Histórico. Gerenciamento de Dados e Informação

Á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:

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

Banco de Dados I Introdução SQL

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

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

Linguagem de Consulta - SQL

Banco de dados. Aula 22 O Comando SELECT. 1 Wedson Quintanilha da Silva -

Banco de Dados Notas de Aula Consultas em SQL Prof. Dr. Daniel A. Furtado

TLBD II Instruções SQL

SQL S Q L. Introdução. Enfoques de SQL. SQL - Origem/Histórico. Usos de SQL. SQL - Vantagens. Gerenciamento de Dados e Informação

ALTERANDO O NOME DA TABELA ALTER TABLE DEPTO RENAME TO TAB_DEPARTAMENTO

Transcrição:

Linguagem SQL ENG1518 Sistemas de Informação Gerenciais Prof. Marcos Villas villas@puc-rio.br

SQL Linguagem padrão de acesso tabelas em um banco de dados relacional Permite definir e manipular dados DML Linguagem de Manipulação de Dados SELECT, INSERT, UPDATE, DELETE DDL Linguagem de Definição de Dados CREATE TABLE, ALTER TABLE, CREATE INDEX,...

SQL Básico

Select Forma Básica: SELECT nome das colunas desejadas FROM lista de tabelas WHERE condições

Select Exemplo: SELECT placa, modelo, ano FROM carro WHERE marca = 'Saipa' AND ano > 2015 Carro (placa, marca, modelo, ano, valor)

Select Exemplo: SELECT * FROM carro WHERE marca = 'Saipa' AND ano > 2015 Carro (placa, marca, modelo, ano, valor)

Select SELECT [ distinct ] [ * / expr 1, expr 2,... ] onde as expressões expr i (i = 1, 2, ) podem ser: coluna tabela.coluna expressão (, +, -, *, / ) função literal

Select Exemplo: SELECT COUNT(*) FROM carro WHERE marca = 'Saipa' AND ano > 2015 Carro (placa, marca, modelo, ano, valor)

Select Exemplos: SELECT marca FROM carro SELECT DISTINCT (marca) FROM carro Carro (placa, marca, modelo, ano, valor)

From A cláusula FROM tem a seguinte forma: FROM tabela1 ( alias 1 ) [, tabela2 ( alias 2 ),... ] alias designa o sinônimo da tabela correspondente. se mais de uma tabela é especificada, será feito o produto cartesiano das mesmas. um alias só pode ser usado uma vez.

Select Exemplo: SELECT c.placa, c.modelo, c.marca FROM carro c WHERE c.valor > 10000 Carro (placa, marca, modelo, ano, valor)

Where Define uma condição de pesquisa através dos operadores lógicos AND, OR e NOT. WHERE [ NOT] predicado 1 { AND OR } [ NOT] predicado 2... Cada predicado especifica uma condição que pode ser verdadeira ou valsa Ordem de avaliação dos predicados: condições entre parênteses not and or

Predicado Predicado básico: xpressão 1 oper { expressão 2 / subselect } oper pode ser: =, >, <, >=, <=, <> BETWEEN V 1 AND V 2 IN (V 1, V 2, V 3 )

Select Exemplo: SELECT MAX(valor) FROM carro WHERE marca = 'Saipa' AND ano IN (2013, 2015, 2017) AND valor BETWEEN 5000 AND 7000 Carro (placa, marca, modelo, ano, valor)

Exercícios Funcionário (matrícula, nome, UFnascimento, CV) Projeto (código, título, CNPJcliente) Trabalha (@matrícula, @código, datainício) Gerencia (@matrícula, @código, datainício) a) Matrícula dos funcionários nascidos no Acre b) CNPJs dos clientes que têm projeto (sem repetições) c) Todas as colunas de Trabalha onde o código de projeto é 123

Junção Retorna colunas procedentes de várias tabelas em um único SELECT. Especificado na cláusula FROM do SELECT.

Ilustrando Junção SELECT * FROM tab1, tab2 WHERE tab1.col x = tab2.col y (a) (b) (c) (d) tab1 150 200 250 350 col x (e) (f) (g) (h) (i) (j) tab2 110 120 140 150 350 450 (a+h) (d+i) resultado 150 150 350 350 col y

Exercícios Funcionário (matrícula, nome, UFnascimento, CV) Projeto (código, título, CNPJcliente) Trabalha (@matrícula, @código, datainício) Gerencia (@matrícula, @código, datainício) a) Matrícula e nome dos funcionários que trabalham no projeto de código 123 b) Código e título dos projetos onde trabalham funcionários nascidos no Acre

Like Procura por um certo padrão (pattern) de caracteres. O padrão é caracterizado por: ocorrência de caracteres alfanuméricos. caracteres especiais % ou _. O caractere porcento substitui de 0 a muitos caracteres alfanuméricos O caractere underscore substitui um número exato de caracteres alfanuméricos

Order by Ordena logicamente as linhas da tabela resultado. A ordenação pode ser obtida por um sort interno ou pelo uso de um índice adequado. A performance do sort interno depende do número de linhas, da quantidade e do tamanho das colunas referenciadas no ORDER BY.

Exercícios Funcionário (matrícula, nome, UFnascimento, CV) Projeto (código, título, CNPJcliente) Trabalha (@matrícula, @código, datainício) Gerencia (@matrícula, @código, datainício) a) Nomes de funcionário que tenham o texto mestrado em seu CV; os nomes devem ser apresentados em ordem crescente.

União Gera uma tabela resultado combinando duas outras tabelas resultado. Cada comando select é processado separadamente, produzindo uma tabela resultado; No final elas serão combinadas em uma única tabela resultado.

Ilustrando União tab1 resultado tab2 select * from tab1 UNION [ ALL ] select * from tab2

Interseção select * from tab1 INTERSECT select * from tab2 tab1 tab2

Diferença Relacional select * from tab1 EXCEPT select * from tab2 tab1 tab2

Exercícios Funcionário (matrícula, nome, UFnascimento, CV) Projeto (código, título, CNPJcliente) Trabalha (@matrícula, @código, datainício) Gerencia (@matrícula, @código, datainício) a) Matrícula dos funcionários que trabalham e gerenciam projetos.

Funções de cálculo COUNT (*) - conta total de tuplas MAX(x) - valor máximo de uma coluna MIN (x) - valor mínimo de uma coluna AVG (x) - valor médio de uma coluna SUM (x) - somatório dos valores de uma coluna

Group By & Having GROUP BY aglutina logicamente várias linhas em grupos baseado no valor de uma ou mais colunas especificadas HAVING impõe condições às linhas agrupadas só há Having se houver Group By é análogo às condições impostas às tuplas das tabelas na cláusula From especificadas na cláusula Where

Group by / Having tabela1 110 10 100 abc 110 120 120 130 20 null xyz 120 2000 1500 100 200 200 ijk ijk spdf col1 col2 col3 col4 select col1, min(col2), avg(col3), max(col4) from tabela1 group by col1 110 10 100 xyz 120 120 150 ijk 130 1500 200 spdf

Exercícios Funcionário (matrícula, nome, UFnascimento, CV) Projeto (código, título, CNPJcliente) Trabalha (@matrícula, @código, datainício) Gerencia (@matrícula, @código, datainício) a) Quantidade de projetos por cliente b) Quantidade de funcionários que trabalham por projeto, apenas para os projetos com mais de 10 funcionários

Insert Adiciona uma ou várias linhas a uma tabela do banco de dados. Cada comando atualiza uma única tabela.

Update Atualiza uma ou várias linhas de uma tabela do banco de dados. Cada comando atualiza uma única tabela.

Delete Exclui uma ou várias linhas/tuplas de uma tabela do banco de dados. Cada comando atualiza uma única tabela.

SQL Avançado

Padrão ANSI atual: SQL:2016 Padrões anteriores: SQL-86 SQL-89 SQL-92... SQL A cada novo padrão foram adicionadas novas funcionalidades a linguagem, tais como: triggers stored procedures queries recursivas

JOINS Formalizados no SQL-92 Inner Join Outer Join LEFT OUTER JOIN RIGHT OUTER JOIN FULL OUTER JOIN Cross Join Natural Join Column name Join

Inner Join O inner join de duas ou mais tabelas pode ser explicitado da seguinte forma: from tabela1 INNER JOIN tabela2 Utilizando o INNER JOIN, devemos colocar os predicados de join em uma cláusula ON select nome_empregado, nome_departamento from empregado a inner join departamento b on a. cod_dept = b. cod_dept where...

Inner Join O INNER JOIN de duas tabelas traz somente as linhas que possuem correspondentes nas duas tabelas: select nome_empregado, nome_dependente from empregado a, dependente b where a. matricula = b. matricula select nome_empregado, nome_dependente from empregado a inner join dependente b on a. matricula = b. matricula

Inner Join Utilizando a esta sintaxe, separamos os predicados locais dos predicados de join: predicados locais: predicados de join: cláusula Where cláusula ON A sintaxe fica mais complexa em joins com mais de duas tabelas: select a. nome, a. matricula, b. cargo, c. nome_dept from empregado a inner join cargo b inner join departamento c on a. cod_cargo = b. cod_cargo on a. cod_dept = c. cod_dept

Outer Join A cláusula FROM tem a seguinte forma: FROM tabela1 [ LEFT / RIGHT / FULL ] OUTER JOIN tabela2 Utilizando o OUTER JOIN, devemos colocar os predicados de join em uma cláusula ON.

Ilustrando OUTER JOIN SELECT * FROM tab1 LEFT OUTER JOIN tab2 ON tab1.col x = tab2.col y ORDER BY tab1.col x (a) (b) (c) (d) tab1 150 200 250 350 tab2 (e) (f) (g) (h) (i) (j) 110 120 140 150 350 450 col x col y (a+h) (b) (c) (d+i) 150 150 200 350 350 250 150 350

Left Outer Join O Left Outer Join traz linhas da tabela especificada à esquerda, mesmo que não existam linhas correspondentes na tabela da direita. Quando não há correspondência, as colunas procedentes da tabela da direita são preenchidas com nulos. select matricula, nome, nome_dependente from empregado a left outer join dependente b on a. matricula = b. matricula where...

Right Outer Join O Right Outer Join traz linhas da tabela especificada à direita, mesmo que não existam linhas correspondentes na tabela da esquerda. Quando não há correspondência, as colunas procedentes da tabela da esquerda são preenchidas com nulos. b select matricula, nome, nome_departamento from empregado a right outer join departamento on a. cod_dept = b. cod_dept where...

Full Outer Join O Full Outer Join traz linhas de qualquer uma das duas tabelas, mesmo quando elas não possuem correspondentes na outra tabela. As colunas sem correspondência são preenchidas com nulos. select matricula, nome, nome_departamento from empregado a full outer join departamento b on a. cod_dept = b. cod_dept where...

Subqueries Comandos select na cláusula select ou having de outro comando sql. Podem ser: correlacionados: o query interno faz referência à coluna(s) do query externo ( outer ). não correlacionados: não há referências entre os queries interno e externo

Subqueries correlacionados select matricula, nome from empregado t1 where exists ( select * from dependentes t2 where t2. matricula = t1. matricula ) select matricula, nome from empregado t1 where not exists ( select * from dependentes t2 where t2. matricula = t1. matricula )

Subqueries não correlacionados select matricula, nome, salario from empregado where salario > ( select avg ( salario ) from empregado ) order by 3 desc select cod_dept, nome_dept from departamento where cod_dept in ( select cod_dept from empregado group by cod_dept having count (*) < 5 )