IFSP Campus Presidente Epitácio. BND Banco de Dados. Professora: Márcia Jani. 1.1 Apresentação: Márcia Jani

Documentos relacionados
SQL Consultas Básicas

Marcelo Henrique dos Santos

Banco de Dados. SQL Structured Query Language

SQL (Structured Query Language)

SQL (Structured Query Language)

SQL (Structured Query Language)

BCD29008 Banco de dados

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

Banco de Dados I Introdução SQL

Subconsulta na Cláusula FROM

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

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

Modelo Relacional - Manipulação

Rápida revisão do Modelo Relacional

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>

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

A linguagem SQL

SQL. Prof. Msc Denival A. dos Santos

SQL (Tópicos) Structured Query Language

Bancos (Bases) de Dados

Banco de Dados. Professora: Luciana Faria

Banco de dados. Conteúdo: DDL Prof. Patrícia Lucas

SQL. Prof. Roger Cristhian Gomes

SQL (Structured Query Language)

Subconsulta na Cláusula FROM

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

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

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

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

Introdução ao PostgreSQL

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

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

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

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

ANÁLISE E PROJETO DE BANCO DE DADOS

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

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

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

IMPLEMENTAÇÃO DE BANCO DE DADOS

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. SQL (Structured Query Language) Comando CREATE TABLE. SQL é uma linguagem de consulta que possibilita:

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

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

Comandos de Manipulação

INDEX. Serve para organizar os dados e agilizar a pesquisa/consulta dos dados armazenado nas tabelas.

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

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

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

A linguagem SQL

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

Manipulação de Dados com SQL

Revisão de Bancos de Dados

SQL Básica. Andre Noel

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

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

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

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

Subconsultas ou Consultas Aninhadas

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

Linguagem de Consulta Estruturada (SQL)

Introdução a Bancos de Dados

SQL (STRUCTUREDQUERY LANGUAGE)

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

Subconsultas ou Consultas Aninhadas

Bases de Dados. DDL Data Definition Language

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

Linguagem de Consulta Estruturada SQL- DML

MODELAGEM DE DADOS MODELO FÍSICO

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

SQL Linguagem de Definição de Dados

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

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

BANCO DE DADOS PARA NINJAS

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

Aula 06 Sistemas Embarcados LT38C

Aula 6 BD1 Modelo Relacional. Profa. Elaine Faria UFU

Modelagem Física e SQL

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

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

Visões ... Esquema Externo n. Esquema Externo 1. Esquema Lógico. Usuários finais/aplicações

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

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

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

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

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

Crie a seguinte estrutura: Banco de Dados: Carros e duas tabelas: proprietários e veículos, conforme está abaixo e cadastre os mesmos dados:

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

BANCO DE DADOS GERENCIAL 1 A U L A 2

SQL-99: Esquema de BD EMPRESA

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

Atualização e Inserção de Dados. SQL Avançado. Pedro F. Carvalho OCP Oracle g

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

LINGUAGEM SQL Linguagem usada em SGBD para: Definir estrutura de dados; Modificar dados em um banco de dados; Especificar restrições de segurança; Rea

Modelo Entidade-Relacionamento (E-R)

Sistemas de Banco de Dados I. Escola Alcides Maya DDL - Introdução

SQL (STRUCTUREDQUERY LANGUAGE)

mod._1_teoria_sistemas de bancos de dados.doc

Transcrição:

IFSP Campus Presidente Epitácio BND Banco de Dados Professora: Márcia Jani 1.1 Apresentação: Márcia Jani

padrão para o acesso a SGBDs relacionais base: álgebra relacional + cálculo relacional de tupla compreende: DDL (Data Definition Language ) DML (Data Manipulation Language ) Visões - Restrições de Integridade Especificação de Transações 1.2 Prof.ª Márcia Jani Cícero

DDL (Data( Definition Language) Comandos para definição de esquemas: bancos de dados tabelas índices Criação/Remoção de um banco de dados Create / Drop database nome_bd exemplo: criação de um BD para um domínio hospitalar Create database Hospital 1.3 Prof.ª Márcia Jani Cícero

Criação de uma tabela Create table nome_tabela ( nome_atributo 1 tipo 1 [[NOT] NULL][UNIQUE] [{, nome_atributo n tipo n}] n [, primary key (nome(s( nome(s)_ )_atributo(s))])] [{, foreign key (nome_atributo( nome_atributo) references nome_tabela}] ) exemplo: criação da tabela Ambulatórios Create table Ambulatorios ( nroa int, andar numeric(3) NOT NULL, capacidade smallint, primary key (nroa( nroa) ) ) 1.4 Prof.ª Márcia Jani Cícero

Exemplos de Criação de tabelas CREATE TABLE departamento ( numerodepto int(10) unsigned NOT NULL auto_increment, nomedepto varchar(45) ) NOT NULL, matricula int(10) unsigned NOT NULL, datainicio datetime NOT NULL, PRIMARY KEY (numerodepto( numerodepto) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; A criação de tabelas deve respeitar a seguinte seqüencia: nome do campo, tipo, nulidade do campo. Deve-se definir também o campo que será a chave-primária e em seguida a chave-estrangeira. 1.5 Prof.ª Márcia Jani Cícero

criar as seguintes tabelas: Medicos: codm (int), nome (varchar(40)) (não nulo), idade (tinyint) (não nulo), especialidade (char(20)), RG (numeric(10)) (único( único), cidade (varchar(30)), nroa (int) Observação: : definição de chave estrangeira na tabela Medicos: foreign key (nroa( nroa) ) references Ambulatorios(nroa) Pacientes: : codp (int) (sem( sinal), nome (varchar(40)) (não nulo), idade (tinyint) (não nulo), cidade (char(30)), RG (numeric(10)) (único), problema (varchar(40)) (não nulo) 1.6 Prof.ª Márcia Jani Cícero

criar as seguintes tabelas: Consultas: : codm (int), codp (int), data (datetime), hora (datetime) Observação: codm e codp são chaves estrangeiras para as tabelas Medicos e Pacientes, respectivamente (definir!) Um campo unsigned é um campo sem sinal e tem um valor máximo positivo maior que um com sinal. Por ex., se para um campo com 2 bytes, se o campo for unsigned, ele pode valer de 0 a 65.535; se tiver sinal, poderá valer de -32.768 até 32.767. Portanto, se o valor máximo de seu campo for 40.000, você vai precisar de no mínimo 2 bytes, se defini-lo como unsigned; ou 3 bytes, caso contrário. 1.7 Prof.ª Márcia Jani Cícero

Alteração de uma tabela Alter table nome_tabela add [column] nome_atributo 1 tipo 1 [{, nome_atributo n tipo n }] drop column nome_atributo 1 [{, nome_atributo n }] exemplo: inclusão/exclusão do atributo temposerviço na tabela Medicos alter table Medicos add temposerviço smallint alter table Medicos drop column temposerviço observação: não podem ser removidos atributos que formam a chave primária de uma tabela ou que estão indexados 1.8 Prof.ª Márcia Jani Cícero

Remoção de uma tabela Drop table nome_tabela Criação de índices sobre atributos de uma tabela Create [unique] index nome_índice on [nome_tabela nome_visão] ] (nome_atributo( 1 [{, nome_atributo n }]) exemplo: criação de um índice para o atributo RG na tabela Pacientes Create unique index indpac_rg on Pacientes (RG( RG) 1.9 Prof.ª Márcia Jani Cícero

Remoção de indices Drop index nome_índice on nome_tabela exemplo: drop index indpac_rg on Pacientes observação: drop index Pacientes.indPac_RG (SQL Server) Criar os seguintes índices: Medicos: RG (unique) e nroa Pacientes: RG (unique) e problema 1.10 Prof.ª Márcia Jani Cícero

DML (Data( Manipulation Language) manipulação de conjuntos não-procedural (especifica-se o que fazer e não o como fazer) Atualização do BD Inclusão de tuplas insert into nome_tabela [(lista_atributos lista_atributos)] values (lista_valores) exemplo: inclusão do ambulatório 1 insert into Ambulatorios values (1,( 1, 30) 1.11 Prof.ª Márcia Jani Cícero

observação: valores nulos podem ser inseridos em atributos, desde que os mesmos não façam parte da chave primária da tabela ou violem alguma RI (integridade referencial) exemplo: inclusão do médico Carlos insert into Medicos (codm, nome, idade, especialidade, RG, cidade) ) values (4,( Carlos, 28, ortopedia, 1100011000, Joinville ); povoar as tabelas 1.12 Prof.ª Márcia Jani Cícero

Alteração de tuplas update nome_tabela set nome_atributo 1 = Valor [{, nome_atributo n = Valor}] [where condição] exemplo: o ambulatório 2 aumentou sua capacidade em 5 leitos update Ambulatorios set capacidade = capacidade + 5 where nroa = 2 1.13 Prof.ª Márcia Jani Cícero

Alterar: 1. a médica Maria reside agora em Itajaí 2. a consulta do médico 1 com o paciente 4 passou para às 12:00 horas do dia 15 de Maio de 2003 3. a paciente Ana fez aniversário e seu problema agora é tendinite 4. a consulta do médico 3 com o paciente 4 passou para uma hora e meia depois (somar 1:30 ) 1.14 Prof.ª Márcia Jani Cícero

Exclusão de tuplas 1. delete from nome_tabela [where condição] 2. exemplo: o ambulatório 5 foi desativado 1. delete from Ambulatorios where nroa = 5 3. excluir: 1. consultas após as 19 horas 2. pacientes com câncer e cuja idade seja inferior a 10 anos 3. médicos que residem em Biguaçu ou Palhoça 1.15 Prof.ª Márcia Jani Cícero

Linguagem de Consulta (Query( Language) estrutura básica: select lista_atributos from lista_tabelas [where condição] tradução para a álgebra relacional: select a1, a2,,..., an from r1, r2,,..., rn π a1,a2,..., an (σ( c ( r1 X r2 X... X rn) ) ) where c 1.16 Prof.ª Márcia Jani Cícero

Exemplos: buscar os todos os dados de todos os médicos no BD select codm, nome, idade, especialidade, RG, cidade, nroa from Medicos OU select * from Medicos buscar o nome dos médicos ortopedistas select nome from Medicos where especialidade = ortopedia operadores lógicos: and, or e not operadores de comparação: >, > =, <, < =, =, < >,!= 1.17 Prof.ª Márcia Jani Cícero

Comando SELECT cláusula DISTINCT elimina duplicatas no resultado da consulta (tabela( coleção) exemplo: quais são as especialidades dos médicos? select distinct especialidade from Medicos consultar (testar com e sem a cláusula distinct distinct ): a) quais são as datas das consultas marcadas para horários antes das 13hs? b) de quais cidades vêm os pacientes? c) em quais andares existem ambulatórios? 1.18 Prof.ª Márcia Jani Cícero

Comando SELECT Retorno de valores calculados uso de operações aritméticas em uma consulta (+, -, *, / ) exemplo: quantos grupos de 5 leitos podem ser formados nos ambulatórios? select nroa, capacidade / 5 from Ambulatorios observação: uma coluna pode ser renomeada no resultado de uma consulta da seguinte forma: nome_atributo as novo_nome exemplo: select nroa, capacidade / 5 as grupos5 from Ambulatorios assemelha-se a ρ(nome_atributo)( )(nome_relação)) na álgebra relacional (vantagem da SQL: : permite renomear um subconjunto de atributos) 1.19 Prof.ª Márcia Jani Cícero

Funções de agregação aplicam-se sobre uma coleção de tuplas, tendo como parâmetro um nome de atributo da tabela (exceção: função Count(*)) não podem ser combinados com nomes de atributos no resultado da consulta (são informações calculadas a partir de um conjunto de valores e não tem relação com uma tupla particular de uma tabela) úteis na determinação de algumas informações derivadas dos dados das tabelas: totais, médias aritméticas, somas, valor máximo e valor mínimo observação: criar a tabela Funcionarios: codf (int), nome (varchar(40)) (não nulo), idade (tinyint) (não nulo), RG (numeric(10)) (único), salário (numeric(8,2)), departamento (varchar(30)); e povoá-la com as seguintes tuplas: 1.20 Prof.ª Márcia Jani Cícero

Funções de agregação existem 5 funções de agregação: Count, Sum, Avg, Max e Min. com exceção da função Count, todas as demais funções exigem domínios numéricos para o atributo utilizado como parâmetro Count: contador de ocorrências Count(*): retorna o total de tuplas de uma tabela Count(nome_atributo nome_atributo): retorna o total de tuplas que possuem valor no atributo especificado em nome_atributo 1.21 Prof.ª Márcia Jani Cícero

Funções de agregação exemplos: total de médicos ortopedistas select count (*) as TotalOrtopedistas from Medicos where especialidade = ortopedia ortopedia quantos médicos ortopedistas atendem em ambulatórios? select count (nroa( nroa) ) (não conta nulos!) from Medicos where especialidade = ortopedia ortopedia Sum: somador de valores de atributos exemplo: capacidade total dos ambulatórios do 1o andar select sum (capacidade( capacidade) ) from Ambulatorios where andar = 1 1.22 Prof.ª Márcia Jani Cícero

Funções de agregação exemplos: exemplos: Avg: média aritmética de valores de atributos exemplo: média de idade dos pacientes de Fpolis exemplo: média de idade dos pacientes de Fpolis select avg (idade) from Pacientes where cidade = Fpolis Max / Min: maior / menor valores de um atributo exemplo: maior e menor salários pagos aos funcionários select max (salario), min (salario( salario) ) from Funcionarios 1.23 Prof.ª Márcia Jani Cícero

Funções de agregação Exercício: qual a média salarial dos empregados do departamento pessoal? qual o horário mais tarde das consultas do dia 13 de Maio de 2003? qual é a capacidade do ambulatário que possui menor capacidade? quantos pacientes de Fpolis são maiores de 21 anos? quanto se gasta com pagamento de funcionários e qual o número de funcionários? qual é a média de idade dos médicos e o total de ambulatórios atendidos por eles? 1.24 Prof.ª Márcia Jani Cícero

Cláusula WHERE Cláusula [NOT] LIKE definição de padrões de busca padrões possíveis: LIKE s% o valor inicia com o string s LIKE %s o valor termina o string s LIKE %s% o valor possui o string s na sua cadeia de caracteres em qualquer posição convenções utilizadas: % : substitui um string de zero ou mais caracteres _ : substitui um único caractere [a-f] : qualquer caractere dentro do intervalo [^a-f] : qualquer caractere que não estiver dentro do intervalo 1.25 Prof.ª Márcia Jani Cícero

Exemplos buscar o nome e o RG dos funcionários que iniciam com a letra "M" select nome, RG from Funcionarios where nome like M% buscar o nome dos funcionários cujo RG termina com 20000 ou 30000 select nome, RG from Funcionarios where RG like '%[2-3]0000' consultar: nomes e RGs dos médicos com inicial de A a M nomes dos pacientes cujo RG inicia com 2 e termina com 20000 nomes de funcionários que não recebem salários na faixa dos R$ 1000.00 (salários entre 1000.00 e 1999.99) Cláusula IS [NOT] NULL testa valores nulos de atributos exemplo: buscar os códigos e nomes de médicos que não dão atendimento em ambulatórios select codm, nome from Medicos where nroa is null 1.26 Prof.ª Márcia Jani Cícero

Cláusula [NOT] BETWEEN valor1 AND valor2 busca de atributos cujos valores encontram-se em um intervalo desejado válido para atributos com domínios ordinais exemplo: buscar os dados das consultas marcadas entre 14hs e18hs. select from Consultas where hora between 14:00 and 18:00 consultar: número dos ambulatórios com capacidade entre 30 e 50 leitos nome, RG e problema dos pacientes cuja inicial do nome está entre L e Z 1.27 Prof.ª Márcia Jani Cícero

Cláusula UNION permite a união de 2 tabelas (compatíveis) exemplo: buscar o nome de todas as cidades cadastradas no BD select cidade from Medicos union select cidade from Pacientes consultar: nome, RG e idade dos médicos, pacientes e funcionários do hospital que sejam maiores de 30 anos 1.28 Prof.ª Márcia Jani Cícero

Pesquisa em Múltiplas tabelas Para realizarmos a união de tabela, basta acrescentarmos após a clausula FROM do comando SELECT as tabelas que queremos unir. Devemos colocar na claúsula WHERE a condição de união das tabelas, ou seja, as chaves primárias e estrangeiras. Sintaxe: Select [tabela1.]coluna [,tabela2.]coluna,...] from tabela1,tabela2,... where tabela1.chave_primaria = tabela2.chave_estrangeira 1.29 Prof.ª Márcia Jani Cícero

Produto Cartesiano Ocorrerá o produto cartesiano sempre que: A condição de união entre as tabelas for omitida(não houver claúsula WHERE). A condição de união entre as tabelas for inválida (Claúsula WHERE incorreta). Todas as linhas da primeira tabela estiverem unidas a todas as linhas da segunda tabela. 1.30 Prof.ª Márcia Jani Cícero

Veja o que acontece quando ocorre o produto cartesiano: Select cd.codigo_cd, cd.nome_cd, gravadora.nome_gravadora from cd,gravadora Como existem 04 linhas em Gravadora e 7 em CD, chega-se a um total de 28 linhas(7x4) na nossa busca. Como se nota existe uma linha de CD para cada GRAVADORA 1.31 Prof.ª Márcia Jani Cícero

1.32 Prof.ª Márcia Jani Cícero

Consultas envolvendo relacionamentos entre tabelas na cláusula From pode-se especificar uma lista de tabelas produto cartesiano implícito exemplo: buscar o nome dos médicos com consulta marcada para o dia 15 de Maio de 2003 select nome from Médicos, Consultas where data = 05/15/03 and Médicos.codm = Consultas.codm variáveis de tupla podem ser associadas a cada tabela declarada na cláusula From equivale a r novo_nome_relação(nome_relação nome_relação) ) na álgebra relacional select f1.nome from Funcionários f1, Funcionários f2 where f2.nome = Marcelo and f1.salário > f2.salário consultar: nomes dos pacientes com consulta marcada para horários após às 14 hs. nomes dos médicos que dão atendimento em ambulatórios com capacidade inferior a 50 leitos nome e idade dos médicos que têm consulta com a paciente Ana nomes, RGs e idade dos pacientes que têm consultas marcadas com ortopedistas sempre para dias anteriores ao dia 16 1.33 Prof.ª Márcia Jani Cícero

Join é a ligação que fazemos entre duas tabelas na pesquisa de dados, necessariamente deve existir em um join a chave primaria fazendo relação com uma chave estrangeira, esta é a condição e ligação. 1.34 Prof.ª Márcia Jani Cícero

União Regular (inner join ou equi-join) Denomina-se união regular as uniões que tem a claúsula WHERE unindo a chave primária e chave estrangeira. Select cd.codigo_cd, cd.nome_cd, gravadora.nome_gravadora from cd,gravadora where cd.codigo_gravadora = gravadora.codigo_gravadora Quando a chave primária e a chave estrangeira tem o mesmo nome em ambas as tabelas Select cd.codigo_cd, cd.nome_cd, gravadora.nome_gravadora from cd natural join gravadora ou Select cd.codigo_cd, cd.nome_cd, gravadora.nome_gravadora from cd join gravadora using(codigo_gravadora); ou Select cd.codigo_cd, cd.nome_cd, gravadora.nome_gravadora from cd join gravadora on cd.codigo_gravadora = gravadora.codigo_gravadora; 1.35 Prof.ª Márcia Jani Cícero

Existem apenas 07 linhas( o maior n.º de linhas entre as duas tabelas relacionadas 1.36 Prof.ª Márcia Jani Cícero

Inner Join Junção de 2 tabelas através da satisfação de um ou mais predicados entre atributos de cada uma das tabelas (junção tradicional da álgebra) sintaxe: select lista_atributos from nome_tabela1 [inner] join nome_tabela2 on nome_tabela1.nome_atributo1 predicado nome_tabela2.nome_atributo2 [{and/or nome_tabela1.nome_atributo n predicado nome_tabela2.nome_atributo n}] n exemplo: buscar o nome dos médicos com consulta marcada para o dia 13 de maio de 2003 select nome from Médicos inner join Consultas on Médicos.codm = Consultas.codm where data = 05/13/02 observação: o SQL padrão define uma cláusula de junção natural (natual join). Consultar, utilizando inner join: a) nome e RG dos médicos que também são funcionários do hospital b) número e andar dos ambulatórios utilizados por médicos ortopedistas c) nome e RG dos pacientes que têm consultas marcadas entre os dias 14 e 16 de Maio de 2003 d) nome e cidade dos pacientes que têm consultas marcadas com médicos ortopedistas 1.37 Prof.ª Márcia Jani Cícero

Apelidos em tabelas É possível atribuir apelidos às tabelas para diminuir as consultas no select Select a.codigo_cd, a.nome_cd, b.nome_gravadora from cd a,gravadora b where a.codigo_gravadora = b.codigo_gravadora 1.38 Prof.ª Márcia Jani Cícero

União de mais de duas tabelas Saber o nome das músicas, a faixa e o nome do CD em que está a música. Verificar somente os CDs com código 1 ou 2. Select a.nome_cd, b.numero_faixa, c.nome_musica from cd a,faixa b, musica c where a.codigo_cd in(1,2) and a.codigo_cd = b.codigo_cd and b.codigo_musica = c.codigo_musica; Ou Select a.nome_cd, b.numero_faixa, c.nome_musica from cd a natural join faixa b natural join musica c where a.codigo_cd in(1,2); 1.39 Prof.ª Márcia Jani Cícero

1.40 Prof.ª Márcia Jani Cícero

Outer Join sintaxe: select lista_atributos from nome_tabela1 left right full join nome_tabela2 on nome_tabela1.nome_atributo1 predicado nome_tabela2.nome_atributo2 [{and/or nome_tabela1.nome_atributo n predicado nome_tabela2.nome_atributo n}] n consultar: os dados de todos os pacientes e, para aqueles pacientes com consultas marcadas, exibir os dados das suas consultas os números de todos os ambulatórios e, para aqueles ambulatórios onde médicos dão atendimento, exibir também os seus códigos e nomes os nomes e RGs de todos os médicos e os dados de todos as ambulatórios, mostrando os relacionamentos entre médicos e ambulatórios que eles atendem, quando existirem 1.41 Prof.ª Márcia Jani Cícero

Left Join União externa à esquerda A união pela esquerda incluirá linhas da primeira tabela na expressão de união. O left join irá fazer a junção das duas tabelas dando preferência aos registros da tabela CD (é que está na cláusula from por isso está na esquerda). Assim, todos os registros da tabela CD serão mostrados, independente de haver correspondência na tabela GRAVADORA. Quando não houver correspondência na tabela GRAVADORA, será mostrado o valor NULL ou nulo. Sintaxe: tabela 01 left join tabela 02 Exemplo: Select a.codigo_cd,a.nome_cd,b.codigo_gravadora,b.nome_gravadora from cd a left join gravadora b; 1.42 Prof.ª Márcia Jani Cícero

Left Join 1.43 Prof.ª Márcia Jani Cícero

Right Join União externa à direita A união pela direita, ou seja, as linhas da segunda tabela serão incluídas na busca, mesmo sem haver coluna correspondente na primeira tabela. Sintaxe: tabela 01 right join tabela 02 Exemplo: Select a.codigo_cd,a.nome_cd,b.codigo_gravadora,b.nome_gravadora from cd a right join gravadora b; 1.44 Prof.ª Márcia Jani Cícero

Right Join 1.45 Prof.ª Márcia Jani Cícero

Full Outer Join União externa total Realiza a união, independente de a coluna estar à direita ou à esquerda. tabela 01 full outer join tabela 02 Exemplo: Select a.codigo_cd,a.nome_cd,b.codigo_gravadora,b.nome_gravadora from cd a full outer join gravadora b; 1.46 Prof.ª Márcia Jani Cícero

Self Join União de tabela com ela mesma (Auto Relacionamento) Coloca-se duas vezes o nome da tabela, mas com apelidos diferentes. Select a.codigo_cd, a.nome_cd, a.cd_indicado, b.nome_cd from cd a, cd b where a.cd_indicado = b.codigo_cd 1.47 Prof.ª Márcia Jani Cícero

Self Join 1.48 Prof.ª Márcia Jani Cícero