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



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

Comandos de Manipulação

A cláusula order by permite ordenar tuplos exemplo: listar por ordem alfabética os nomes dos clientes com empréstimo na agência de Perryridge

Ordenação de tuplos order by

Sistemas de Informação e Bases de Dados 2012/2013. Linguagem 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:

Capítulo 4: SQL! Database System Concepts! Silberschatz, Korth and Sudarshan (modificado)!

Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Renomeada para SQL (Structured Query Language)

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

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

Structured Query Language (SQL)

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

SQL. Prof. Márcio Bueno.

Bases de Dados. Junção de relações. Junção de relações

Banco de Dados. Prof. Antonio

Definida pelo American National Standard Institute (ANSI) em 1986

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

Capítulo 4 A Linguagem SQL. Murilo Silva de Camargo

Pedro F. Carvalho OCP Oracle g LINGUAGEM SQL. São José do Rio Preto

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

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

Introdução ao SQL Avançado

Prof.: Clayton Maciel Costa

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

SQL DML. Frederico D. Bortoloti

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

Linguagem de Consulta Estruturada SQL- DML

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

SQL UMA ABORDAGEM INTERESSANTE

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

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

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

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

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

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

Linguagem SQL. Comandos Básicos

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

SQL DDL. Frederico D. Bortoloti

Programação SQL. Introdução

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

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

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

Introdução ao SQL. Aécio Costa

SQL (Linguagem de Consulta Estruturada)

Linguagem de Consulta - SQL

Engenharia de Computação / Engenharia de Produção. Banco de Dados Prof. Maria das Graças da Silva Teixeira

Banco de Dados I. Linguagem de Consulta (parte I) DDL DML

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

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

Linguagem de Consulta - SQL

SQL (Structured Query Language)

Introdução às funções e procedimentos. SQL suporta funções e procedimentos úteis com tipos de dados específicos

Programação SQL. INTRODUÇÃO II parte

UNIVERSIDADE FEDERAL DE SANTA MARIA - UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN BANCO DE DADOS II

Tarefa Orientada 13 Agrupamento e sumário de dados

Linguagem SQL Sub-linguagem DDL

O que são Bancos de Dados?

Linguagem de Consulta Estruturada (SQL)

4.6. SQL - Structured Query Language

A linguagem SQL

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

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

SQL. Autor: Renata Viegas

Linguagem SQL Parte I

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

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

Linguagem SQL (Parte I)

SQL BANCO DE DADOS. Linguagem de consulta SQL. Linguagem de consulta SQL. Linguagem de Consulta Estruturada

SQL comando SELECT. SELECT [DISTINCT] <campos> FROM <tabela> [condição] [ ; ] Paulo Damico - MDK Informática Ltda.

SQL - Criação de Tabelas

1. Assinale as afirmações que são verdadeiras e as que são falsas, corrigindo-as:

Linguagem de Definição de Dados Estrutura básica Operações com conjuntos Funções de agregação Valores nulos Subconsultas embebidas Relações derivadas

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

António Rocha Nuno Melo e Castro

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

NOME SEXO CPF NASCIMENTO SALARIO

SQL. Introdução. Por que SQL? Setenças Select-From-Where

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

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

Banco de Dados. Maurício Edgar Stivanello

EXEMPLOS DE COMANDOS NO SQL SERVER

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

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

Escrito por Sex, 14 de Outubro de :12 - Última atualização Seg, 26 de Março de :33

EXERCÍCIOS PRÁTICOS. Banco de Dados

SQL Comandos para Relatórios e Formulários. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

ANÁLISE E PROJETO DE BANCO DE DADOS

Transcrição:

Bases de Dados Introdução à linguagem SQL História Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R Renomeada para SQL (Structured Query Language) Standards ISO e ANSI SQL-86, SQL-89, SQL-92, SQL:1999, SQL:2003 Sistemas comerciais: suportam a maior parte da SQL-92 algumas funcionalidades dos standards mais recentes algumas funcionalidades específicas e proprietárias DEI Bases de Dados 2006-07 2

Âmbito da linguagem SQL Definição de dados Manipulação de dados interactiva Restrições de integridade Definição de vistas Controlo de transacções Comandos embebidos em programação Autorização e segurança DEI Bases de Dados 2006-07 3 Definição de dados Permite especificar relações e as características de cada relação esquema da relação domínio de cada atributo restrições de integridade índices para a relação privilégios de acesso estrutura física de armazenamento no disco DEI Bases de Dados 2006-07 4

Tipos básicos de domínio Tipos de domínios suportados pela norma SQL char(n) string de tamanho fixo varchar(n) tamanho variável, máximo n integer smallint numeric(p,d) p dígitos, d casas decimais real double float(n) pelo menos n dígitos DEI Bases de Dados 2006-07 5 Definição do esquema Uma relação define-se com o comando create table r (A 1 D 1, A 2 D 2,..., A n D n, integrity-constraint 1,..., integrity-constraint k ) r é o nome da relação A i é o nome do atributo i do esquema D i é o domínio do atributo A i DEI Bases de Dados 2006-07 6

Definição do esquema exemplos create table account (account_number char(10), branch_name char(15), balance numeric(12,2), primary key (account_number)) create table depositors (customer_name char(20), account_number char(10), primary key (customer_name, account_number)) DEI Bases de Dados 2006-07 7 Inserção de tuplos Criar uma nova conta com o número A-9732 na agência de Perryridge com saldo inicial 1200 insert into account values( A-9732, Perryridge,1200) DEI Bases de Dados 2006-07 8

Remoção de elementos Apagar todos os tuplos da relação delete from account Apagar toda uma relação drop table account drástico e irreversível deixa de ser possível inserir tuplos na relação DEI Bases de Dados 2006-07 9 Alteração de relações Remover atributos alter table r drop A Adicionar atributos alter table r add A D todos os tuplos ficam com null neste novo atributo DEI Bases de Dados 2006-07 10

Estrutura básica de perguntas em SQL Pergunta típica em SQL select A 1, A 2,..., A n from r 1, r 2,..., r m where P A i atributos r i relações P predicado de selecção DEI Bases de Dados 2006-07 11 Estrutura básica de perguntas em SQL Pergunta típica em SQL select A 1, A 2,..., A n from r 1, r 2,..., r m where P A 1, A 2, A n (σ P (r 1 x r 2 x... x r m ) ) DEI Bases de Dados 2006-07 12

Estrutura básica de perguntas em SQL notas Pergunta típica em SQL select A 1, A 2,..., A n from r 1, r 2,..., r m where P se where for omitida, P é true o resultado pode conter tuplos duplicados! o SGBD pode converter a expressão para uma forma mais eficiente DEI Bases de Dados 2006-07 13 A cláusula select Lista os atributos pretendidos no resultado (projecção) Exemplo: nomes de todas as agências com empréstimos em SQL select branch_name from loan em álgebra relacional branch_name (loan) DEI Bases de Dados 2006-07 14

A cláusula select duplicados SQL permite duplicados em relações e resultados distinct força a eliminação de duplicados Exemplo: nomes de todas as agências com empréstimos, sem nomes em duplicado select distinct branch_name from loan Para forçar a apresentação de duplicados select all branch_name from loan DEI Bases de Dados 2006-07 15 A cláusula select símbolo * Para obter todos os atributos select * from loan É possível usar também expressões aritméticas +,,, /, aplicadas a constantes ou atributos select loan_number, branch_name, amount 100 from loan DEI Bases de Dados 2006-07 16

A cláusula where Especifica as condições que o resultado deve verificar (selecção) Exemplo: números dos empréstimos da agência de Perryridge com quantias superiores a 1200 select loan_number from loan where branch_name= Perryridge and amount >1200 operadores possíveis: and, or, not DEI Bases de Dados 2006-07 17 A cláusula where operador between Para testes em intervalos existe o operador between Exemplo: Números dos empréstimos com quantias entre 90 000 e 100 000 (i.e. 90,000 e 100,000) select loan_number from loan where amount between 90000 and 100000 DEI Bases de Dados 2006-07 18

A cláusula from Indica as relações envolvidas na pergunta (produto) exemplo: produto cartesiano borrower x loan select from borrower, loan Exemplo: nome do cliente e número e quantia de todos os empréstimos da agência de Perryridge select customer_name, borrower.loan_number, amount from borrower, loan where borrower.loan_number = loan.loan_number and branch_name = Perryridge DEI Bases de Dados 2006-07 19 A cláusula from Exemplo: nome do cliente e número e quantia para todos os empréstimos do banco em álgebra relacional Πcustomer_name, loan_number, amount (borrower loan) em SQL select customer_name, borrower.loan_number, amount from borrower, loan where borrower.loan_number = loan.loan_number DEI Bases de Dados 2006-07 20

Renomeação em SQL Para renomear usa-se a cláusula as na forma nome_antigo as novo_nome Exemplo: nome do cliente e número e quantia para todos os empréstimos do banco com coluna loan_number renomeada para loan_id select customer_name, borrower.loan_number as loan_id, amount from borrower, loan where borrower.loan_number = loan.loan_number DEI Bases de Dados 2006-07 21 Variáveis Definidas na cláusula from com recurso à cláusula as exemplo: nome do cliente e número e quantia para todos os empréstimos do banco select customer_name, T.loan_number, S.amount from borrower as T, loan as S where T.loan_number = S.loan_number DEI Bases de Dados 2006-07 22

Variáveis outro exemplo Nomes de todas as agências com activo superior a uma das agências de Brooklyn select distinct T.branch_name from branch as T, branch as S where T.assets > S.assets and S.branch_city = Brooklyn DEI Bases de Dados 2006-07 23 Operações com strings Exemplos de strings: Perryridge, it s right Comparação de strings com padrões % aplica-se a qualquer substring _ aplica-se a qualquer character os padrões deviam ser case-sensitive Exemplos Perry%, %idge%,, % DEI Bases de Dados 2006-07 24

Operações com strings operador like Exemplo: nomes de todos os clientes cuja rua possui a sequência Main select customer_name from customer where customer_street like %Main% e se a sequência dada contiver % ou _? ab\%cd% aplicável a todas as strings com ab%cd ab\\cd% aplicável a todas as strings com ab\cd DEI Bases de Dados 2006-07 25 Operações com strings outros operadores not like também é um operador Conversão com upper() e lower() Muitas outras funções concatenação, inserção, procura, substituição, inversão, etc. dependentes da implementação DEI Bases de Dados 2006-07 26

Ordenação de tuplos A cláusula order by permite ordenar tuplos exemplo: listar por ordem alfabética os nomes dos clientes com empréstimo na agência de Perryridge select distinct customer_name from borrower, loan where borrower.loan_number = loan.loan_number and branch_name = Perryridge order by customer_name DEI Bases de Dados 2006-07 27 Ordenação de tuplos asc e desc Por omissão, a ordenação é ascendente asc e desc permitem especificar a ordem Exemplo: empréstimos por ordem descendente de quantia, e depois ascendente por número select * from loan order by amount desc, loan_number asc DEI Bases de Dados 2006-07 28

Operações em conjuntos Existem 3 operações com correspondência directa com a álgebra relacional union (U) intersect ( ) except ( ) Automaticamente eliminam duplicados as versões union all, intersect all, except all não eliminam DEI Bases de Dados 2006-07 29 Operações em conjuntos exemplos Nomes dos clientes com conta ou empréstimo (select customer_name from depositor) union (select customer_name from borrower) Nomes dos clientes com conta e empréstimo (select customer_name from depositor) intersect (select customer_name from borrower) DEI Bases de Dados 2006-07 30

Operações em conjuntos exemplos Nomes dos clientes com conta mas sem empréstimo (select customer_name from depositor) except (select customer_name from borrower) DEI Bases de Dados 2006-07 31 Operações em conjuntos duplicados Se um tuplo ocorre m vezes em r n vezes em s então ocorre m + n vezes em (r union all s) ocorre min(m,n) vezes em (r intersect all s) ocorre max(0, m n) vezes em (r except all s) DEI Bases de Dados 2006-07 32

Funções de agregação Operam no conjunto de valores de uma coluna avg, min, max, sum, count Exemplo: saldo médio das contas da agência de Perryridge select avg(balance) from account where branch_name = Perryridge DEI Bases de Dados 2006-07 33 Funções de agregação mais exemplos Número de tuplos na relação customer select count (*) from customer Número de titulares com contas no banco select count (distinct customer_name) from depositor DEI Bases de Dados 2006-07 34

Funções de agregação group by Saldo médio das contas de cada agência select branch_name, avg (balance) from account group by branch_name os atributos do select que não sejam agregados têm que ser agrupados! DEI Bases de Dados 2006-07 35 Funções de agregação group by (outro exemplo) Número de titulares em cada agência select branch_name, count (distinct customer_name) from depositor, account where depositor.account_number = account.account_number group by branch_name DEI Bases de Dados 2006-07 36

Funções de agregação having saldo médio das contas de cada agência, mas só agências com saldo médio superior a 1200 select branch_name, avg (balance) from account group by branch_name having avg (balance) > 1200 predicados de having são aplicados depois do agrupamento predicados de where são aplicados antes do agrupamento DEI Bases de Dados 2006-07 37 Funções de agregação having com where Saldo médio dos clientes que vivem em Harrison e têm pelo menos 3 contas select depositor.customer_name, avg (balance) from depositor, account, customer where depositor.account_number = account.account_number and depositor.customer_name = customer.customer_name and customer_city = Harrison group by depositor.customer_name having count (distinct depositor.account_number) >= 3 DEI Bases de Dados 2006-07 38

Valores null Verificar a existência de valores null com is null select loan_number from loan where amount is null O predicado is not null também é possível DEI Bases de Dados 2006-07 39 Valores null efeito em operações O resultado de uma expressão aritmética (+,, *, /) com null é null exemplo: 5 + null = null Em comparações, o resultado é unknown exemplos 5 < null null <> null null = null DEI Bases de Dados 2006-07 40

Valores null cláusula where Expressões booleanas que envolvem null and true false unknown unknown unknown false unknown or true false unknown unknown true unknown unknown not true false unknown false true unknown Na cláusula where é possível testar o resultado com is unknown ou is not unknown Se false ou unknown, o tuplo não é incluído DEI Bases de Dados 2006-07 41 Valores null funções de agregação Funções de agregação ignoram null select sum (amount) from loan ignora quantias null resultado é null se só houver nulls Excepção: count(*) conta os tuplos mesmo que sejam null DEI Bases de Dados 2006-07 42