A Linguagem SQL. Introdução a Banco de Dados DCC 011



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

GBC043 - Sistemas de Banco de Dados SQL/DML no PostgreSQL. Ilmério Reis da Silva ilmerio@facom.ufu.br UFU/FACOM/BCC

BANCO DE DADOS II SQL Básico. COTEMIG Gerson Borges

A Linguagem SQL. Introdução a Banco de Dados DCC 011

DCC011 Introdução a Banco de Dados SQL gerenciar tabelas e dados

GES013 - Sistema de Banco de Dados SQL/DML no PostgreSQL Parte 1 Introdução e Consultas Basicas

Comandos de Manipulação

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

Oscar Luiz Monteiro de Farias 1. Bancos de Dados. Mestrado em Engenharia de Computação área de concentração Geomática

GBC043 Sistemas de Banco de Dados. Modelo Relacional (R) Ilmério Reis da Silva UFU/FACOM

SQL DCC011. SQL gerenciar tabelas e dados. Programa. Introdução. Introdução

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

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

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

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

BANCO DE DADOS II Conceitos Básicos. COTEMIG Gerson Borges

Banco de Dados SQL. João Eduardo Ferreira Osvaldo Kotaro Takai

GBC043 - Sistemas de Banco de Dados SQL DDL e Implementação no PostgreSQL

GES013 - Sistema de Banco de Dados SQL/DML no PostgreSQL Parte 3 Tabelas de Junção e Funções de Agregaçã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:

DCC011 Introdução a Banco de Dados

Structured Query Language (SQL) Ambiente Simplificado de um SGBD

Aplicações - SQL. Banco de Dados: Teoria e Prática. André Santanchè e Luiz Celso Gomes Jr Instituto de Computação UNICAMP Agosto de 2013

SQL DDL. Frederico D. Bortoloti

Linguagem SQL. Comandos Básicos

Linguagem SQL (Parte II)

DCC011 Introdução a Banco de Dados

Structured Query Language (SQL) Aula Prática

Modelo de Dados Relacional Restrições de um Banco de Dados Relacional

SQL. Prof. Márcio Bueno.

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

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

Linguagem de Consulta - SQL

Programação com acesso a BD. Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br

DCC011 Introdução a Banco de Dados

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

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 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet

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

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

SQL Structured Query Language

SQL. Autor: Renata Viegas

Banco de Dados. Prof. Antonio

Roteiro 9 - SQL Básico: chave estrangeira, operadores de comparação e operadores booleanos

SQL Básica. Andre Noel

LINGUAGEM SQL. SQL Server 2008 Comandos iniciais

A linguagem SQL

Introdução ao SQL. Aécio Costa

4.6. SQL - Structured Query Language

SQL-99: Esquema de BD EMPRESA

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

SQL. Banco de Dados I. Componentes de SQL

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

Banco de dados 1. Linguagem SQL DDL e DML. Professor: Victor Hugo L. Lopes

Banco de Dados. Módulo 7 - Modelo Relacional. Definição do Esquema Relacional em SQL. modulo07.prz 1 10/09/01

BASES DE DADOS I LTSI/2. Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2010/2011

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


Linguagem de Consulta Estruturada (SQL)

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 - Criação de Tabelas

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

Comandos DDL. id_modulo = id_m odulo

PHP INTEGRAÇÃO COM MYSQL PARTE 1

EXEMPLOS DE COMANDOS NO SQL SERVER

GES013 - Sistema de Banco de Dados SQL DDL e Implementação no PostgreSQL

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

SQL - Banco de Dados. Disciplina: Banco de Dados. Professor: José Antônio. José Antônio - CEFET-RN 23/09/2015

SQL. Definição do Esquema da Base de Dados. Cristina C. Vieira Departamento de Engenharia Eletrónica e Informática

Programação SQL. Introdução

SQL: Definição de tabelas, Modificações à Base de Dados

Banco de Dados. Maurício Edgar Stivanello

SQL SQL BANCO DE DADOS 2. Componentes do SQL (1) Componentes do SQL (2) DDL Criação de banco de dados. Padrões de SQL

Linguagem SQL Sub-linguagem DDL

SQL (Structured Query Language)

Exemplo Clínica. Exemplo Clínica. Exemplo Clínica. Exemplo Clínica. (

GBC043 - Sistemas de Banco de Dados Funções e Gatilhos no PostgreSQL

Processamento e Otimização de Consultas

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

Rápida revisão do Modelo Relacional

SQL (Structured Query Language)

SQL DML. Frederico D. Bortoloti

BANCO DE DADOS BANCO DE DADOS. Prof. Patrícia Lucas 3º Trimestre

Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Standards ISO e ANSI SQL-86, SQL-89, SQL-92, SQL:1999, SQL:2003

SQL (Structured Query Language)

SQL - Structured Query Language, ou Linguagem de Consulta Estruturada ou SQL

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

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

AULA 6 INTEGRIDADOS DOS DADOS - CRIANDO RESTRIÇÕES

BANCO DE DADOS Parte 4

Projeto e Implementação

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

GES013 - Sistema de Banco de Dados SQL/DML no PostgreSQL Parte 2 Consultas Aninhaas

Bases de Dados. Parte V: A Linguagem SQL

SQL (Linguagem de Consulta Estruturada)

Uma expressão básica em SQL consiste em três cláusulas: select, from e where.

Linguagem de Consulta Estruturada SQL- DML

Transcrição:

A Linguagem SQL Introdução Originalmente proposta para o System R desenvolvido nos laboratórios da IBM na década de 70 SEQUEL (Structured English QUEry Language) Objeto de um esforço de padronização coordenado pelo ANSI/ISO: SQL1 (SQL-86) SQL2 (SQL-92) SQL3 (SQL-99) 1

Introdução SQL = LDD + LMD + LCD Principais comandos: LDD: CREATE SCHEMA / TABLE / VIEW DROP SCHEMA / TABLE / VIEW ALTER TABLE LMD: SELECT, INSERT, UPDATE, DELETE LCD: GRANT, REVOKE Do ponto de vista de consulta, SQL é uma linguagem relacionalmente completa, ou seja, possui o mesmo poder de expressão da álgebra e do cálculo relacional Definição de Dados em SQL Comando CREATE SCHEMA CREATE SCHEMA COMPANY AUTORIZATION JS; Comando CREATE TABLE CREATE TABLE <nome da tabela> (<definições de colunas> <definição da chave primária> <definições de chaves alternativas> <definições de chaves estrangeiras>); CREATE TABLE <esquema>.<nome da tabela> 2

Definição de Dados em SQL Exemplo de um comando CREATE TABLE CREATE TABLE EMPLOYEE (FNAME VARCHAR(15) NOT NULL, MINIT CHAR, LNAME VARCHAR(15) NOT NULL, SSN CHAR(9) NOT NULL, SUPERSSN CHAR(9), DNO INT NOT NULL, PRIMARY KEY (SSN), FOREIGN KEY (SUPERSSN) REFERENCES EMPLOYEE (SSN) ON DELETE SET NULL, FOREIGN KEY (DNO) REFERENCES DEPARTMENT (DNUMBER)); Definição de Dados em SQL Comando CREATE DOMAIN CREATE DOMAIN TIPO_SSN AS CHAR(9); CREATE TABLE EMPLOYEE (... SSN TIPO_SSN NOT NULL,...); Especificação de restrições sobre atributos DNUMBER INT NOT NULL CHECK (DNUMBER > 0 AND DNUMBER < 21) Alternativamente: CREATE DOMAIN D_NUMBER AS INTEGER CHECK (D_NUMBER > 0 AND D_NUMBER < 21); CREATE TABLE DEPARTMENT (DNAME VARCHAR(15) NOT NULL, DNUMBER D_NUMBER NOT NULL,...); 3

Definição de Dados em SQL Opções de remoção (cláusula ON DELETE): CASCADE (propagação) SET NULL (substituição por nulos) SET DEFAULT (substituição por um valor default) Opção default: bloqueio (RESTRICT) As mesmas opções se aplicam à cláusula ON UPDATE Entretanto esta cláusula NÃO deve ser utilizada para se evitar que as chaves primárias sejam modificadas Definição de Dados em SQL Restrição de Integridade Referencial FOREIGN KEY (SUPERSSN) REFERENCES EMPLOYEE(SSN) ON DELETE SET NULL FOREIGN KEY (DNO) REFERENCES DEPARTMENT(DNUMBER) FOREIGN KEY (MGRSSN) REFERENCES EMPLOYEE(SSN) FOREIGN KEY (DNUMBER) REFERENCES DEPARTMENT(DNUMBER) ON DELETE CASCADE FOREIGN KEY (DNUM) REFERENCES DEPARTMENT(DNUMBER) FOREIGN KEY (ESSN) REFERENCES EMPLOYEE(SSN) FOREIGN KEY (PNO) REFERENCES PROJECT(PNUMBER) FOREIGN KEY (ESSN) REFERENCES EMPLOYEE(SSN) ON DELETE CASCADE 4

Definição de Dados em SQL Restrição de Integridade Referencial Definição de Dados em em SQL Restrição de Integridade Referencial CREATE TABLE EMPLOYEE ( SSN CHAR(9) NOT NULL, SUPERSSN CHAR(9), DNO INT NOT NULL DEFAULT 1, PRIMARY KEY (SSN), FOREIGN KEY (SUPERSSN) REFERENCES EMPLOYEE (SSN) ON DELETE SET NULL, FOREIGN KEY (DNO) REFERENCES DEPARTMENT (DNUMBER) ON DELETE SET DEFAULT ON UPDATE CASCADE); 5

Definição de Dados em em SQL Restrição de Integridade Referencial CREATE TABLE EMPLOYEE (, DNO INT NOT NULL DEFAULT 1, CONSTRAINT EMPPK PRIMARY KEY (SSN), CONSTRAINT EMPSUPERFK FOREIGN KEY (SUPERSSN) REFERENCES EMPLOYEE (SSN) ON DELETE SET NULL, CONSTRAINT EMPDEPTFK FOREIGN KEY (DNO) REFERENCES DEPARTMENT (DNUMBER) ON DELETE SET DEFAULT ON UPDATE CASCADE); Definição de Dados em SQL Comandos para Modificação de Esquema Comandos DROP SCHEMA e DROP TABLE DROP SCHEMA COMPANY CASCADE; DROP TABLE DEPENDENT CASCADE; Comando ALTER TABLE ALTER TABLE COMPANY.EMPLOYEE ADD JOB VARCHAR(12); ALTER TABLE COMPANY.EMPLOYEE DROP ADDRESS CASCADE; 6

Consultas Básicas em SQL Formato básico do comando SELECT: SELECT <lista de atributos> FROM <lista de tabelas> WHERE <condição>; Exemplo: SELECT BDATE, ADDRESS FROM EMPLOYEE WHERE FNAME= John AND MINIT= B AND LNAME= Smith ; Consultas Básicas em SQL SELECT FNAME, LNAME, ADDRESS FROM EMPLOYEE, DEPARTMENT WHERE DNAME= Research AND DNO=DNUMBER; condição de seleção condição de junção SELECT PNUMBER, DNUM, LNAME, ADDRESS, BDATE FROM PROJECT, DEPARTMENT, EMPLOYEE WHERE PLOCATION= Stafford AND DNUM=DNUMBER AND MGRSSN=SSN; 7

Consultas Básicas em SQL Atributos ambíguos e pseudônimos (alias) SELECT DNAME, DLOCATION FROM DEPARTMENT, DEPT_LOCATIONS WHERE DEPARTMENT.DNUMBER = DEPT_LOCATIONS.DNUMBER; SELECT E.FNAME, E.LNAME, S.FNAME, S.LNAME FROM EMPLOYEE AS E, EMPLOYEE AS S WHERE E.SUPERSSN=S.SSN; Consultas Básicas em SQL Consultas sem a cláusula WHERE SELECT SSN, LNAME, SALARY FROM EMPLOYEE; SELECT LNAME, DNAME FROM EMPLOYEE, DEPARTMENT WHERE DNO=DNUMBER; Atenção: A ausência da cláusula WHERE torna a consulta acima um produto cartesiano das tabelas EMPLOYEE e DEPARTMENT. 8

Consultas Básicas em SQL Manipulando tabelas como conjuntos SELECT SALARY FROM EMPLOYEE; Não elimina linhas (tuplas) duplicatas SELECT DISTINCT SALARY FROM EMPLOYEE; (SELECT PNUMBER FROM PROJECT, DEPARTMENT, EMPLOYEE WHERE DNUM=DNUMBER AND MGRSSN=SSN AND LNAME= Smith ) UNION (SELECT PNUMBER FROM PROJECT, WORKS_ON, EMPLOYEE WHERE PNUMBER=PNO AND ESSN=SSN AND LNAME= Smith ); Consultas Complexas em SQL Consultas aninhadas SELECT FNAME, LNAME, ADDRESS FROM EMPLOYEE WHERE DNO IN (SELECT DNUMBER FROM DEPARTMENT WHERE DNAME= Research ); é equivalente à consulta SELECT FNAME, LNAME, ADDRESS FROM EMPLOYEE, DEPARTMENT WHERE DNO=DNUMBER AND DNAME= Research ; 9

Consultas Complexas em SQL Comparação de conjuntos SELECT DISTINCT PNUMBER FROM PROJECT WHERE PNUMBER IN (SELECT PNUMBER FROM PROJECT, DEPARTMENT, EMPLOYEE WHERE DNUM =DNUMEBR AND MGRSSN=SSN AND LNAME= Smith ) OR PNUMBER IN (SELECT PNO FROM WORKS_ON, EMPLOYEE WHERE ESSN=SSN AND LNAME= Smith ); Consultas Complexas em SQL Comparação de conjuntos SELECT DISTINCT ESSN FROM WORKS_ON WHERE (PNO, HOURS) IN (SELECT PNO, HOURS FROM WORKS_ON WHERE ESSN= 123456789 ); SELECT LNAME, FNAME FROM EMPLOYEE WHERE SALARY > ALL (SELECT SALARY FROM EMPLOYEE WHERE DNO=5); 10

Consultas Complexas em SQL Uso da função EXISTS SELECT E.FNAME, E.LNAME FROM EMPLOYEE AS E WHERE EXISTS (SELECT * FROM DEPENDENT WHERE E.SSN=ESSN AND E.SEX=SEX AND E.FNAME=DEPENDENT_NAME); SELECT FNAME, LNAME FROM EMPLOYEE WHERE NOT EXISTS (SELECT * FROM DEPENDENT WHERE SSN=ESSN); Consultas Complexas em SQL Uso do operador CONTAINS SELECT FNAME, LNAME FROM EMPLOYEE WHERE ((SELECT PNO FROM WORKS_ON WHERE SSN=ESSN) CONTAINS (SELECT PNUMBER FROM PROJECT WHERE DNUM=5)); Esta consulta SQL corresponde a uma operação de divisão na álgebra relacional 11

Facilidades Adicionais Uso do operador JOIN SELECT FNAME, LNAME, ADDRESS FROM (EMPLOYEE JOIN DEPARTMENT ON DNO=DNUMBER) WHERE DNAME= Research ; SELECT DNAME, DLOCATION FROM (DEPARTMENT NATURAL JOIN DEPT_LOCATIONS); SELECT FNAME, LNAME, DEPENDENT_NAME FROM (EMPLOYEE LEFT OUTER JOIN DEPENDENT ON SSN=ESSN); Facilidades Adicionais Funções de agregação SELECT SUM(SALARY), MAX(SALARY), MIN(SALARY), AVG(SALARY) FROM EMPLOYEE; SELECT SUM(SALARY), MAX(SALARY), MIN(SALARY), AVG(SALARY) FROM EMPLOYEE, DEPARTMENT WHERE DNO=DNUMBER AND DNAME= Research ; SELECT COUNT(*) FROM EMPLOYEE, DEPARTMENT WHERE DNO=DNUMBER AND DNAME= Research ; 12

Facilidades Adicionais Agrupamento SELECT DNO, COUNT(*), AVG(SALARY) FROM EMPLOYEE GROUP BY DNO; Facilidades Adicionais Agrupamento com a cláusula HAVING SELECT PNUMBER, PNAME, COUNT(*) FROM PROJECT, WORKS_ON WHERE PNUMBER=PNO GROUP BY PNUMBER, PNAME HAVING COUNT(*) > 2; 13

3 3 3 3 14

Atualizações em SQL Comando INSERT INSERT INTO EMPLOYEE VALUES ( Richard, K, Marini, 653258653, 1962-12-30, 98 Oak Forest, Katy, TX,37000, 987654321,4); INSERT INTO EMPLOYEE(FNAME, LNAME, SSN, DNO) VALUES ( Richard, Marini, 653258653,4); INSERT INTO EMPLOYEE(FNAME, LNAME, SSN, DNO) SELECT * FROM INPUT; Atualizações em SQL Comando DELETE DELETE FROM EMPLOYEE WHERE LNAME= Brown ; DELETE FROM EMPLOYEE WHERE DNO IN (SELECT DNUMBER FROM DEPARTMENT WHERE DNAME= Research ); DELETE FROM EMPLOYEE; 15

Atualizações em SQL Comando UPDATE UPDATE PROJECT SET PLOCATION= Bellaire, DNUM=5 WHERE PNUMBER=10; UPDATE EMPLOYEE SET SALARY=SALARY*1.1 WHERE DNO IN (SELECT DNUMBER FROM DEPARTMENT WHERE DNAME= Research ); Visões em SQL Uma visão em SQL é uma tabela derivada de tabelas base (definidas no esquema) de um banco de dados ou de visões previamente definidas Comando CREATE VIEW CREATE VIEW <nome da visão> [(<atributos>)] AS <comando SELECT>; Visões simplificam a interface com o usuário e constituem um mecanismo eficiente de seguraça 16

Visões em SQL Exemplos: WORKS_ON1(FNAME, LNAME, PNAME, HOURS) CREATE VIEW WORKS_ON1 AS SELECT FNAME, LNAME, PNAME, HOURS FROM EMPLOYEE, PROJECT, WORKS_ON WHERE SSN=ESSN AND PNO=PNUMBER; DEPT_INFO (DEPT_NAME, NO_OF_EMPS, TOTAL_SAL) CREATE VIEW DEPT_INFO (DEPT_NAME, NO_OF_EMPS, TOTAL_SAL) AS SELECT DNAME, COUNT(*), SUM(SALARY) FROM DEPARTMENT, EMPLOYEE WHERE DNUMBER=DNO GROUP BY DNAME; Visões em SQL Visões podem ser consultadas como qualquer outra tabela SELECT LNAME, HOURS FROM WORKS_ON1 WHERE PNAME= ProductX ; Visões sempre refletem o estado do banco de dados não são materializadas quando definidas 17

Implementação de Visões Processamento de uma consulta sobre uma visão depende da estratégia adotada para sua implementação Materizalização da visão (view materialization) A consulta é executada diretamente sobre a visão materializada Modificação da consulta (query modification) A consulta é modificada de acordo com a definição da visão e então executada sobre o banco de dados Implementação de Visões Estratégia de modificação da consulta SELECT LNAME, HOURS FROM WORKS_ON1 WHERE PNAME= ProductX ; SELECT LNAME, HOURS FROM EMPLOYEE, PROJECT, WORKS_ON WHERE SSN=ESSN AND PNO=PNUMBER AND PNAME= ProductX ; 18

Atualização de Visões Em geral, visões não podem ser atualizadas Por exemplo, seja a seguinte operação de atualização sobre a visão WORKS_ON1: UPDATE WORKS_ON1 SET PNAME= ProductY WHERE LNAME= Smith AND FNAME= John AND PNAME= ProductX ; Como propagar esta atualização para as tabelas base? Atualização de Visões Opções para atualização de WORKS_ON1 Opção 1: UPDATE WORKS_ON SET PNO=(SELECT PNUMBER FROM PROJECT WHERE PNAME= ProductY ) WHERE ESSN=(SELECT SSN FROM EMPLOYEE WHERE LNAME= Smith AND FNAME= John ) AND PNO=(SELECT PNUMBER FROM PROJECT WHERE PNAME= ProductX ); Opção 2 (menos elaborada): UPDATE PROJECT SET PNAME= ProductY WHERE PNAME= ProductX ; 19

Atualização de Visões Visões definidas sobre uma única tabela são atualizáveis se seus atributos incluem a chave primária (ou uma das chave alternativas) da tabela base Visões definidas sobre múltiplas relações através de junções em geral não são atualizáveis Visões definidas usando-se agrupamento e funções de agregação não são atualizáveis Restrições de Integridade Gerais Comando CREATE ASSERTION CREATE ASSERTION SALARY-CONSTRAINT CHECK (NOT EXISTS(SELECT * FROM EMPLOYEE E, EMPLOYEE M, DEPARTMENT D WHERE E.SALARY>M.SALARY AND E.DNO=D.DNUMBER AND D.MGRSSN=M.SSN)); Cláusula CHECK CREATE DOMAIN D_NUMBER AS INTEGER CHECK (D_NUMBER > 0 AND D_NUMBER < 21); 20