SQL (Tópicos) Structured Query Language

Documentos relacionados
Comandos de Manipulação

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é;

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

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

EXEMPLOS DE COMANDOS NO SQL SERVER

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

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

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

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

SQL-99: Esquema de BD EMPRESA

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

IMPLEMENTAÇÃO DE BANCO DE DADOS

SQL (Structured Query Language)

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

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

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

Bases de Dados. DDL Data Definition Language

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

Revisão de Bancos de Dados

Banco de Dados. Prof. Antonio

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

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

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

Definida pelo American National Standard Institute (ANSI) em 1986

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

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

Linguagem de Consulta Estruturada SQL- DML

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

Linguagem SQL. Comandos Básicos

SQL Structured Query Language

Structured Query Language (SQL)

SISTEMAS DE BANCO DE DADOS. Prof. Adriano Pereira Maranhão

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

Bancos (Bases) de Dados

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

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

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

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

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

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

Linguagem SQL Sub-linguagem DDL

Linguagem de Consulta Estruturada SQL- DML

A U L A 1 0 C R I A N D O V I E W S V I E W S ( V I S Õ E S )

SQL (Structured Querie Language) Escola Secundária de Emídio Navarro 2001/2002 Estruturas, Tratamento e Organização de Dados

Linguagem de Consulta Estruturada (SQL)

Ordenação de tuplos order by

SQL. Prof. Roger Cristhian Gomes

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

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

SQL BÁSICO. Introdução. Prof. Suelane Garcia. Linguagem SQL (Structured Query Language)

SQL. Prof. Márcio Bueno.

A linguagem SQL

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

EXERCÍCIOS PRÁTICOS. Banco de Dados

Revisão + Visões + Sub-Consultas + JOINS

UNIVERSIDADE VEIGA DE ALMEIDA CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO CURSO SUPERIOR DE TECNOLOGIA EM PROCESSAMENTO DE DADOS BANCO DE DADOS

Bases de Dados 2005/2006. Aula 5

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

SQL DML. Frederico D. Bortoloti

PHP INTEGRAÇÃO COM MYSQL PARTE 1

ROTEIRO. A Linguagem SQL (I parte) CEFET.PHB - PI Prof. Jefferson Silva. As partes da linguagem SQL. A Linguagem de Definição de Dados (SQL-DDL)

SQL. Hélder Antero Amaral Nunes

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

Linguagem SQL (Parte II)

SQL S Q L. Introdução. Enfoques de SQL. SQL - Origem/Histórico. Usos de SQL. SQL - Vantagens. Banco de Dados. Fernando Fonseca Ana Carolina

SQL. Profa. Msc. Fernanda Lígia Rodrigues Lopes. Disciplina: Fundamentos de Banco de Dados

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

Linguagem de Consulta - SQL

Introdução à Engenharia da Computação. Banco de Dados Professor Machado

Álgebra Relacional e SQL

BANCO DE DADOS. info 3º ano. Prof. Diemesleno Souza Carvalho

Sumário. SQL - Criação de Tabelas. Structured Query Language. SQL Versões. André Restivo. October 18, 2010

SQL Linguagem de Definição de Dados. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

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

Linguagem SQL Comando SELECT Agrupamento de Resultados

Page 1. Prof. Constantino Jacob

Structured Query Language (SQL) Aula Prática

SQL PostgreSQL. I Criação de Tabelas. Disciplina: SCC0241 Bases de Dados Professor: Eduardo Hruschka Estagiária PAE: Dayse de Almeida

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

DML - SELECT Agrupando Dados

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

SQL - Structured Query Language. Karine Reis Ferreira

Linguagem de Consulta Estruturada (SQL)

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

António Rocha Nuno Melo e Castro

Banco de Dados I. Aula 12 - Prof. Bruno Moreno 04/10/2011

Fundamentos do Sistema Gerenciador de Banco de Dados

Modelo Relacional + SQL (DDL) Material elaborado pela Prof. Karin Becker

Banco de Dados - Senado

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

SQL92 DDL( RIS, ACTUALIZAÇÕES E VISTAS) DML (QUERIES, SUBQUERIES,JUNÇÕES, E OPERAÇÕES SOBRE CONJUNTOS)

Marcelo Henrique dos Santos

BANCO DE DADOS Parte 4

Introdução a SQL. Prof. Anderson Cavalcanti UFRN-CT-DCA

CREATE TABLE AUTOR ( cod_autor int not null primary key, nome_autor varchar (60) )

Pontifícia Universidade Católica do Rio Grande do Sul FACULDADE DE INFORMÁTICA PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO.

Banco de Dados I SQL DDL. Frederico D. Bortoloti freddb@ltc.ufes.br

Transcrição:

SQL (Tópicos) Structured Query Language ISI Introdução aos Sistemas de Informação SQL (Tópicos) 1

SQL: componentes SQL / DDL (Data Definition Language) Permite definir os Esquemas de Relação Permite definir os atributos dos Esquemas de Relação Permite definir restrições (chaves primárias, estrangeiras, etc.) SQL / DML (Data Manipulation Language) Permite aceder à informação armazenada na base de dados Permite inserir, eliminar e alterar a informação presenta na base de dados SQL (Tópicos) 2

Comandos Principais Definição de Dados CREATE Criar estruturas de dados (tabelas, vistas,índices) ALTER Alterar estruturas de dados DROP Remover estruturas de dados SQL / DDL Interrogação SELECT Manipulação de Dados INSERT Inserir novos registos UPDATE Alterar registos existentes DELETE Apagar registos SQL / DML SQL (Tópicos) 3

Comandos Principais Controlo de Transações COMMIT SAVEPOINT ROLLBACK Segurança GRANT Usado para atribuir direitos de acesso DENY Usado para negar direitos de acesso REVOKE Usado para anular ordem direitos de acesso SQL (Tópicos) 4

Comando CREATE A sintaxe do geral do CREATE, para este caso: CREATE TABLE <nome tabela> ( {<nome coluna> <tipo> [DEFAULT <valor função NULL>] [<restrição de coluna>] }+ [restrição de tabela] ) <restrição de coluna> restrição a aplicar a uma coluna <restrição de tabela> aplica-se a mais de uma coluna SQL (Tópicos) 5

Sintaxe das restrições: [CONSTRAINT nome_restrição] [{PRIMARY KEY UNIQUE]} ( coluna, )] [FOREIGN KEY ( coluna, ) {REFERENCES tabela [( coluna, )] [CHECK ( condição )] [ON DELETE {NO ACTION CASCADE SET DEFAULT SET NULL}] [ON UPDATE {NO ACTION CASCADE SET DEFAULT SET NULL}}] SQL (Tópicos) 6

INSERT, UPDATE e DELETE INSERT (insere linhas numa tabela) INSERT INTO <nome da tabela> [(coluna1, coluna2,...)] VALUES (valor1, valor2,...) <comando SELECT> UPDATE (actualiza linhas de uma tabela) UPDATE <nome da tabela> SET coluna = valor expressão, coluna = valor expressão,... [WHERE <condição>] DELETE (remove linhas de uma tabela) DELETE FROM <nome da tabela> [WHERE <condição>] SQL (Tópicos) 7

Comando SELECT A sintaxe geral de uma interrogação SQL é a seguinte: SELECT [DISTINCT] <colunas> * FROM <tabelas> [WHERE <condição>] DISTINCT indica que se quer remover os duplicados no resultado final O símbolo * é utilizado quando se pretendem seleccionar todos os atributos das tabelas especificadas na cláusula FROM SQL (Tópicos) 8

Junção Interna e Externa INNER JOIN = JOIN OUTER JOIN LEFT OUTER JOIN RIGHT OUTER JOIN FULL OUTER JOIN SQL (Tópicos) 9

INNER JOIN Ex: Seja Material(codigoMaterial,nome) Fornecedor(codigoFornecedor, nome) Fornece(codigoFornecedor, codigomaterial) Qual o nome do fornecedor e os nomes dos materiais por ele fornecido? SELECT Fornecedor.nome,Material.nome FROM Fornecedor INNER JOIN Fornece ON (Fornecedor.codigoFornecedor = Fornece. codigofornecedor) INNER JOIN Material ON (Fornece.codigoMaterial=Material.codigoMaterial) SQL (Tópicos) 10

OUTER JOIN Ex: Quais os códigos de todos os fornecedores e todos os produtos, por eles fornecidos ou não. SELECT Material.*, Fornece.codFornecedor FROM Material FULL OUTER JOIN Fornece ON (Fornece.codigoMaterial=Material.codigoMaterial) SQL (Tópicos) 11

Funções de Agregação Existem um conjunto de funções que efectuam operações sobre conjunto de linhas COUNT conta o número de linhas SUM efectua o somatório de valores AVG encontra a média de valores MAX determina o maior valor MIN determina o menor valor Ex.: SELECT COUNT(codEmpregado) FROM Empregado SQL (Tópicos) 12

Group By A cláusula GROUP BY tem a forma: GROUP BY <lista colunas> Onde <lista de colunas> é uma lista de colunas separadas por vírgula, sobre as quais será feito o agrupamento Ex: SELECT codigo, MAX(ordenado) FROM DEPARTAMENTO GROUP BY codigo SQL (Tópicos) 13

Having A cláusula WHERE é verificada para cada linha da tabela, ficando essa linha no resultado final se verificar a condição Por vezes, apenas se querem obter resultados sobre grupos quando estes verificam uma determinada condição; Com a cláusula WHERE não se consegue isso!!! A cláusula HAVING é verificada para o conjunto de linhas; só os grupos que verificarem a condição são considerados SQL (Tópicos) 14

Having (exemplo) Quais os códigos dos departamentos e o maior dos salários, onde a média seja maior que 1000? SELECT coddepartamento, MAX(Ordenado) FROM FUNCIONARIO GROUP BY coddepartamento HAVING AVG(ordenado)>1000 Uma diferença entre as cláusulas HAVING e WHERE: A cláusula HAVING deve sempre conter funções de agregação A cláusula WHERE nunca contém funções de agregação SQL (Tópicos) 15

ORDER BY Por vezes deseja-se que o resultado de uma interrogação venha ordenado por um determinado critério Essa ordenação é feita utilizando a cláusula ORDER BY A cláusula ORDER BY tem a forma: ORDER BY <coluna número da coluna [ASC DESC] > SQL (Tópicos) 16

ORDER BY Ex: Qual o nome e o departamento dos funcionários existentes, ordenados alfabeticamente? SELECT nome, coddepartamento FROM FUNCIONARIO ORDER BY nome ASC SQL (Tópicos) 17

GROUP BY, HAVING e ORDER BY A sintaxe do SELECT, com a inclusão das cláusulas GROUP BY, HAVING e ORDER BY: SELECT [DISTINCT] <colunas> * FROM <lista tabelas> [WHERE <condição>] [GROUP BY <lista colunas> ] [HAVING <condição>] [ORDER BY <coluna número da Coluna [ASC DESC] > ] SQL (Tópicos) 18

GROUP BY, HAVING e ORDER BY Ex: Quais os códigos dos departamentos e o maior dos salários, onde a média seja maior que 1000, ordenados por ordem decrescente de salários? SELECT coddepartamento, MAX(Ordenado) FROM FUNCIONARIO GROUP BY coddepartamento HAVING AVG(ordenado)>1000 ORDER BY 2 DESC SQL (Tópicos) 19

Sub-Interrogações e Predicados Consideremos: CATEGORIA( codcat, nome, salariobase ) DEPARTAMENTO( coddep, nome, localizacao ) EMPREGADO( codemp, nome, salarioefectivo, codcat, coddep ) SQL (Tópicos) 20

Sub-Interrogação Ex: Qual o nome dos empregados que trabalham no mesmo departamento que o(s) empregado(s) com nome João Maria'? SELECT nome FROM EMPREGADO as EP1 INNER JOIN EMPREGADO as EP2 ON(EP1.codDep=EP2.codDep) WHERE EP1.nome<>EP2.nome AND EP1.nome= João Maria Existe no entanto outra solução possível: Separar a interrogação em duas partes!!! SQL (Tópicos) 21

Utilizando o predicado IN SELECT DISTINCT E1.nome FROM EMPREGADO AS E1 WHERE E1.nome <> João Maria' AND E1.codDep IN ( SELECT DISTINCT E2.codDep FROM EMPREGADO AS E2 WHERE E2.nome = João Maria') Foi utilizada uma sub interrogação (SELECT interior) para responder à questão. Atenção: o resultado da sub-interrogação pode corresponder a mais do que um código de departamento. Foi utilizado o predicado IN SQL (Tópicos) 22

Utilizando a comparação = Ex: Qual o código e nome dos empregados que trabalham no mesmo departamento que o empregado com código 4? SELECT E1.codEmp, E1.nome FROM EMPREGADO AS E1 WHERE E1.codEmp <> 4 AND E1.codDep = ( SELECT E2.codDep FROM EMPREGADO AS E2 WHERE E2.codEmp = 4 ) Atenção : o resultado da sub-interrogação corresponde apenas a 1 código SQL (Tópicos) 23

Utilizando o predicado ALL Ex: Quais os empregados cujo salário base é superior ou igual a todos os salários base dos empregados do departamento 2? SELECT E1.codEmp, E1.nome FROM EMPREGADO AS E1 INNER JOIN CATEGORIA AS C1 ON (E1.codCat = C1.codCat) WHERE C1.salarioBase > = ALL ( SELECT C2.salarioBase FROM EMPREGADO AS E2, CATEGORIA AS C2 WHERE E2.codCat = C2.codCat AND E2.codDep = 2 ) SQL (Tópicos) 24

Utilizando o predicado ANY Ex: Quais os empregados cujo salário base é superior a algum dos salários base dos empregados do departamento 2? SELECT E1.codEmp, E1.nome FROM EMPREGADO AS E1 INNER JOIN CATEGORIA AS C1 ON (E1.codCat = C1.codCat) WHERE C1.salarioBase > ANY ( SELECT C2.salarioBase FROM EMPREGADO AS E2, CATEGORIA AS C2 WHERE E2.codCat = C2.codCat AND E2.codDep = 2 ) SQL (Tópicos) 25

Utilizando o predicado EXISTS Ex: Código e nome dos departamentos que têm empregados (i.e. onde existe pelo menos um empregado)? SELECT D1.codDep, D1.nome FROM DEPARTAMENTO AS D1 WHERE EXISTS ( SELECT * FROM EMPREGADO AS E1 WHERE E1.codDep =D1.codDep) Atenção: sub-interrogação correlacionada!!! A condição é verdadeira se o resultado da sub-interrogação for não vazio!!!! SQL (Tópicos) 26

Utilizando o predicado EXISTS Ex: Código e nome dos departamentos que não têm empregados (i.e. onde não existe qualquer empregado)? SELECT D1.codDep, D1.nome FROM DEPARTAMENTO AS D1 WHERE NOT EXISTS ( SELECT * FROM EMPREGADO AS E1 WHERE E1.codDep =D1.codDep) A condição é verdadeira se o resultado da sub-interrogação for vazio!!!! Atenção: sub-interrogação correlacionada!!! SQL (Tópicos) 27

A Divisão utilizando o EXISTS Ex: Quais os departamentos que têm empregados de todas as categorias? Outra forma de colocar a questão: Quais os departamentos para os quais não existe nenhuma categoria da qual não existem empregados nesse departamento. É o mesmo que dizer que: Se existir uma categoria da qual determinado departamento não tem empregados, então não queremos esse departamento. SQL (Tópicos) 28

A divisão Ex: Quais os departamentos que têm empregados de todas as categorias? SELECT D1.codDep, D1.nome FROM DEPARTAMENTO AS D1 WHERE NOT EXISTS (SELECT * FROM CATEGORIA AS C1 WHERE NOT EXISTS ( SELECT * FROM EMPREGADO AS E1 WHERE E1.codDep =D1.codDep AND E1.codCat = C1.codCat )) SQL (Tópicos) 29