0% acharam este documento útil (0 voto)
6 visualizações26 páginas

Fundamentos do SQL em Gestão de Dados

O documento fornece uma visão geral do SQL e seus componentes principais. Ele discute os tipos de dados SQL, incluindo numéricos, caractere, data, hora e outros. Também aborda recursos de definição de dados SQL, como CREATE TABLE e restrições. Vários exemplos de instruções CREATE TABLE são apresentados para definir relações em um esquema de empresa de exemplo com entidades como funcionários, departamentos, projetos e mais.

Traduzido por

ScribdTranslations
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
6 visualizações26 páginas

Fundamentos do SQL em Gestão de Dados

O documento fornece uma visão geral do SQL e seus componentes principais. Ele discute os tipos de dados SQL, incluindo numéricos, caractere, data, hora e outros. Também aborda recursos de definição de dados SQL, como CREATE TABLE e restrições. Vários exemplos de instruções CREATE TABLE são apresentados para definir relações em um esquema de empresa de exemplo com entidades como funcionários, departamentos, projetos e mais.

Traduzido por

ScribdTranslations
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Sistema de Gestão de Banco de Dados

Módulo–III
SQL

• Definição de dados SQL e tipos de dados


• Especificação de restrições em SQL
• Consultas básicas de recuperação em SQL
• Instruções de inserção, atualização e exclusão em SQL
• Funções de agregação em SQL
• Cláusulas GROUP BY e HAVING.

Visão Geral

A linguagem IBM SEQUEL (Linguagem de Consulta Estruturada em Inglês) foi desenvolvida como parte do System R
projeto no Laboratório de Pesquisa da IBM em San Jose. Renomeado como SQL (Structured Query)
Language)
• SQL padrão ANSI e ISO:
• SQL-86 ou SQL1
• SQL-89
• SQL-92 ou SQL2
• SQL: 1999 (o nome da linguagem tornou-se compatível com Y2K) ou SQL3
• SQL: 2003
SQL é uma linguagem de banco de dados abrangente, possui instruções para a definição de dados, atualização
e consulta. Possui recursos para definir visões no banco de dados, para especificar segurança e
autorização, para definir restrições de integridade e para especificar controles de transação.
Sistemas comerciais oferecem a maioria, se não todos, os recursos do SQL2, além de conjuntos de recursos variados de versões posteriores

padrões e recursos proprietários especiais.

Definição de Dados, Restrições e Alterações de Esquema no SQL2


• tabela para relação
• linha para tupla
• ‘coluna’ para atributo

Conceitos de Esquema e Catálogo em SQL2

Os conceitos de esquema de banco de dados relacional foram incorporados ao SQL2 para agrupar
tabelas juntas e outras construções que pertencem à mesma aplicação de banco de dados. Um esquema é
identificado por um nome de esquema e inclui um identificador de autorização. Identificador de autorização
indica o usuário ou conta que possui o esquema. Também inclui os descritores para cada
elemento no esquema.

Dra. Aparna K, Prof. Assoc., Dept. de MCA, BMSIT&M Page 1


Sistema de Gerenciamento de Banco de Dados

Conceitos de Esquema e Catálogo no SQL2

Elementos de esquema incluem tabelas, restrições, visões, domínios e outras construções (como
autorizações que descrevem o esquema. Elementos do esquema podem ser definidos no momento
da criação do esquema ou depois.
• CRIAR ESQUEMA
• Especifica um novo esquema de banco de dados dando-lhe um nome. Exemplo:
• criar esquema de autorização da empresa KUMAR;
• Todos os usuários não estão autorizados a criar esquemas e seus elementos.
• Os privilégios para criar o esquema, tabelas e outras construções podem ser explicitamente concedidos a
os usuários relevantes pelo DBA.
• SQL2 usa o conceito de catálogo.
• O catálogo é uma coleção nomeada de esquemas em um ambiente SQL.
• Um catálogo contém um esquema especial chamado INFORMATION_SCHEMA, que fornece
informações sobre todos os esquemas no catálogo e todos os descritores de elementos de todos os
esquema no catálogo para usuários autorizados.
• Restrições de integridade podem ser definidas para as relações e entre as relações do mesmo
esquema.
• Os esquemas dentro do mesmo catálogo também podem compartilhar certos elementos, como domínio
definições.

CRIAR TABELA Comando em SQL

• O comando CREATE TABLE é usado para especificar uma nova relação base, dando seu nome, e
especificando cada um de seus atributos e restrições.
• Os atributos são especificados primeiro dando seu nome, seus tipos de dados e restrições para
os atributos como NOT NULL, CHECKS etc. especificados em cada atributo.
• As restrições de chave, integridade de entidade e integridade referencial podem ser especificadas dentro do
CRIE A TABELA comando após a declaração dos atributos, ou pode ser adicionado posteriormente usando o
comando ALTER.
• Uma relação SQL é definida usando o comando criar tabela:
CRIAR TABELA R(A1 D1, A2 D2 ..., Um Dn,
(restrição-de-integridade_1),
...,
(restrição de integridade_k))
• R é o nome da relação
• Cada Ai é um nome de atributo no esquema da relação R
• Di é o tipo de dados dos valores no domínio do atributo Ai

Dra. Aparna K, Prof. Associada, Dept. de MCA, BMSIT&M Page 2


Sistema de Gerenciamento de Banco de Dados

Relações no Esquema da Empresa

CRIAR TABELA EMPREGADO


(FNAME VARCHAR (15) NOT NULL, MINIT CHAR,
LNAME VARCHAR (15) NÃO NULO,
SSN CHAR (9), BDATE DATE,
ADDRESS VARCHAR2 (30), SEX CHAR,
SUPERSSN CHAR (9),
DNO INTNOT NULL,
CHAVE PRIMÁRIA(SSN),
CHAVE ESTRANGEIRA(SUPERSSN) REFERENCIA EMPREGADO (SSN)
CHAVE ESTRANGEIRA(DNO) REFERENCIA DEPARTAMENTO (DNUMERO));

CRIAR TABELA DEPARTAMENTO


(DNAME VARCHAR2 (15) NÃO NULO,
DNUMBER INT NÃO NULO,
MGRSSN CARACT (9) NÃO NULO,
MGRSTARTDATE DATE,
CHAVE PRIMÁRIA(DNUMBER),

Dra. Aparna K, Professora Associada, Departamento de MCA, BMSIT&M Page 3


Sistema de Gerenciamento de Banco de Dados

UNIQUE(DNAME),
FOREIGN KEY(MGRSSN) REFERENCES EMPLOYEE (SSN));

CRIE A TABELA LOCALIZAÇÕES


(DNUMBER INT NOT NULL,
DLOCATION VARCHAR2 (15) NOT NULL,
MGRSTARTDATE DATE,
CHAVE PRIMÁRIA(DNUMBER, DLOCATION),
CHAVE ESTRANGEIRA(DNUMBER) REFERENCIAS DEPARTAMENTO);

CRIAR TABELAPROJETO
(PNAME VARCHAR2 (15) NOT NULL,
PNUMBER INTNOT NULL,
PLOCALIZAÇÃO VARCHAR2 (15) NÃO NULO,
DNUM INTNAONULL,
CHAVE PRIMÁRIA(PNUMBER),
ÚNICO(PNAME)
CHAVE ESTRANGEIRA(DNUM) REFERENCES DEPARTAMENTO (DNUMBER));

CRIE TABLEWORKS_ON
(ESSN CARACTERE (9) NULO NÃO,
PNO INTNOT NULL,
HORAS DECIMAL (3,1) NÃO NULO,
DNO INTNÃO NULO,
CHAVE PRIMÁRIA(ESSN, PNO),
CHAVE ESTRANGEIRA(ESSN) REFERENCIA EMPREGADO (SSN),
CHAVE ESTRANGEIRA(PNO) REFERENCIA PROJETO (PNUMERO));

CRIE A TABELA DEPENDENTE


(ESSN CARACTERE (9) NÃO NULO,
DEPENDENT_NAME VARCHAR2 (15)NOT NULL, SEX CHAR, BDATE DATE,
ADDRESS VARCHAR2 (30),
RELATIONSHIP VARCHAR2 (8),
CHAVE PRIMÁRIA(ESSN, NOME_DEPENDENTE),
CHAVE ESTRANGEIRA(ESSN) REFERENCIA EMPREGADO (SSN));

• O nome do esquema pode ser explicitamente anexado ao nome da relação separado por ponto.
• CRIE A TABELA EMPRESA. EMPREGADO…….
• A tabela EMPLOYEE torna-se parte do esquema COMPANY

Dra. Aparna K, Prof. Associada, Dept. de MCA, BMSIT&M Page 4


Sistema de Gerenciamento de Banco de Dados

Tipos de dados e domínios de atributos em SQL


oNumérico
oPersonagem
bit-string
oBoolean
oDate
oTime
oTimestamp
oInterval

• Numérico: número inteiro de vários tamanhos e números flutuantes de várias precisões


oINTEGER ou INT: Inteiro (um subconjunto finito dos inteiros que depende da máquina)
sem nenhuma parte decimal.
oSMALLINT: Inteiro pequeno (um subconjunto dependente da máquina do tipo de domínio inteiro)
sem nenhuma parte decimal.
oREAL, precisão DOUBLE: Ponto flutuante e ponto flutuante de dupla precisão
números, com precisão dependente da máquina.
oFLOAT (n): Número de ponto flutuante, com precisão especificada pelo usuário de pelo menos ndigits.
oNUMERIC(i, j) ou DECIMAL(I, j) ou DEC(I, j): Número de ponto fixo, com especificação do usuário
precisão total deias número de dígitos, com j dígitos à direita do ponto decimal.

• Character:consists of sequence of character either of fixed length or varying length, default


o comprimento da string de caracteres é 1
oCHAR(n) ou CHARACTER(n): Cadeia de caracteres de comprimento fixo, com comprimento especificado pelo usuário

n.
oVARCHAR(n) ou CHAR VARYING(n) ou CHARACTER VARYING(N): Comprimento variável
cadeias de caracteres, com comprimento máximo n especificado pelo usuário.
Para strings de comprimento fixo (CARACTERE), uma string mais curta é preenchida com espaços em branco.

que são ignorados no momento da comparação (ordem lexicográfica)


OBJECTO CARACTERE GRANDE (CLOB) para grandes valores de texto (documentos)

• Bit-string: consiste em uma sequência de bits, de comprimento fixo ou variável, comprimento padrão
A cadeia de bits é 1. BLOB também está disponível para especificar colunas que têm grandes valores binários, como
como imagens.

• Boolean: tem três valores VERDADEIRO, FALSO ou DESCONHECIDO (para nulo)

• Data: Tem dez posições, na forma AAAA-MM-DD, os componentes são ANO, MÊS, DIA

Dra. Aparna K, Prof. Associada, Dept. de MCA, BMSIT&M Page 5


Sistema de Gestão de Banco de Dados

• Tempo: tem pelo menos oito posições, no formato HH:MM:SS, os componentes são HORA,
MINUTE, SECOND
Apenas data e hora válidas são permitidas, operadores de comparação podem ser usados.
oTIME(i): Composto por hora: minuto: segundo mais i dígitos adicionais especificando frações
de um segundo formato é hh:mm:ss ii...i

• TIMESTAMP: Um carimbo de data/hora inclui os campos DATA e HORA, além de um mínimo de seis
posições para frações decimais de segundos e um qualificador OPCIONAL COM FUSO HORÁRIO.
oTEMPO COM FUSO HORÁRIO: este tipo de dado inclui seis posições adicionais para
especificando o deslocamento em relação ao fuso horário universal padrão, que está em
intervalo de 13:00 a 12:59 em unidades de HORAS:MINUTOS
Se a cláusula TIMESTAMP WITH TIME ZONE não estiver incluída, o padrão é o fuso horário local para o SQL.

sessão.

• INTERVALO: O tipo de dado intervalo especifica um intervalo - um valor relativo que pode ser usado para
incrementar ou decrementar um valor absoluto de uma data, hora ou carimbo de data/hora.
Os intervalos são qualificados como intervalos de ANO/MÊS ou DIA/HORA.
Pode ser positivo ou negativo quando adicionado ou subtraído de um valor absoluto.
o resultado é um valor absoluto.

Domínios em SQL

• Um domínio pode ser declarado e o domínio pode ser usado com vários atributos.
• CRIAR DOMÍNIO ENO_TYPE COMO CHAR(9)
• ENO_TYPE pode ser usado no lugar de CHAR(9) com SSN, ESSN, MGRSSN.
• O tipo de dado do domínio pode ser alterado, o que será refletido para os numerosos atributos em
o esquema e melhora a legibilidade do esquema.

Especificando restrições básicas em SQL


• Restrições de atributos
• Valores padrão dos atributos
• Restrições principais
• Restrições de integridade referencial

Especificando restrições de atributo e valores padrão de atributo


• Uma restrição NOT NULL pode ser especificada em um atributo se nulo não puder ser permitido para isso.
atributo.

Dra. Aparna K, Prof. Associada, Dept. de MCA, BMSIT&M Page 6


Sistema de Gerenciamento de Banco de Dados

• Uma cláusula ADEFAULT é usada para declarar um valor padrão para um atributo na ausência de um valor real.
valor.
Sempre que um valor explícito não for fornecido para o atributo, o valor padrão será
anexado.
• Uma cláusula CHECK é usada para restringir os valores de domínio de um atributo.

CRIAR TABELA FUNCIONÁRIO


(
ENO VARCHAR2 (6) CHECK (ENO LIKE 'E%')
ENAME VARCHAR2 (10) VERIFICAR (ENAME = MAIÚSCULA (ENAME)),
ENDEREÇO VARCHAR2 (10) NÃO NULO,
ESTADO VARCHAR2 (10) VERIFICAR (ESTADO EM ('KARNATAKA', 'KERALA'))
EMP_TYPE CHAR (1) DEFAULT ‘F’
);

Especificando restrições de chave


• Restrições podem ser especificadas em uma tabela, incluindo chaves e integridade referencial.
• A cláusula PRIMARY KEY especifica a única (ou composta) restrição de chave primária.
….DNUM INT CHAVE PRIMÁRIA….
….CHAVE PRIMÁRIA(ESSN, PNUM)….
• AUNIQUEclause é usada para especificar chaves alternativas.
….DNAME CHAR(9) NÃO NULO ÚNICO….

CRIA TABELA EMPREGADO


( SSN CARACTER(9),
FNAME VARCHAR2(15) NÃO NULO,
LNAME VARCHAR2(15) NÃO NULO,
BDATE DATE,
ADDRESS VARCHAR2(30),
CHAVE PRIMÁRIA (SSN)
);

Especificando restrições de integridade referencial


• Uma cláusula FOREIGN KEY pode ser especificada para a restrição de chave estrangeira para implementar o
relação entre as relações, ou seja, integridade referencial.
• A integridade referencial pode ser violada quando tuplas são inseridas, deletadas ou o valor da chave estrangeira
está atualizado.

Dra. Aparna K, Prof. Associada, Departamento de MCA, BMSIT&M Page 7


Sistema de Gerenciamento de Banco de Dados

• Podemos especificar CASCADE, SET NULL ou SET DEFAULT nas restrições de integridade referencial.
(chaves estrangeiras).

• Uma opção deve ser qualificada com ON DELETE ou ON UPDATE.


• Opções possíveis para ações acionadas por referência:
ON DELETE SET DEFAULT
ON DELETE SET NULL
ON DELETE CASCADE
O ATUALIZAR CASCADE
O ATUALIZAR DEFINIR PADRÃO
O ATUALIZAR DEFINIR NULO

CRIE A TABELA FUNCIONÁRIO


( FNAME VARCHAR2(15)NOT NULL,
LNAME VARCHAR2(15) NÃO NULO,
SSN CHAR (9), ENO CHAR (5)
BDATE DATE, ADDRESS VARCHAR2(30),
SUPERSSN CHAR (9),
DNO INT NÃO NULO
CHAVE PRIMÁRIA(SSN),
CHAVE ESTRANGEIRA (SUPERSSN) REFERENCIA EMPREGADO (SSN) AO DELETAR DEFINIR PADRÃO AO ATUALIZAR
CASCADE,
CHAVE ESTRANGEIRA(DNO)REFERENCIAS DEPARTAMENTO (DNUMBER)AO DELETAR CASCATA AO ATUALIZAR
CASCADE);

Nomeando as restrições

• Um nome de restrição é usado para identificar uma restrição particular caso a restrição precise ser
cancelado ou modificado posteriormente.

• Dar nomes às restrições é opcional.


• O nome da restrição deve ser único dentro de um esquema.

CRIE A TABELA EMPREGADO


(ENO VARCHAR2(10) CONSTRAINT PK_EMPLOYEE PRIMARY KEY,
ENAME VARCHAR2(30),
ADDRESS VARCHAR2(100) NOT NULL,
STATE VARCHAR2(10), DT_OF_JOINING DATE,
RESTRIÇÃO CHK_ENO VERIFICA (ENO LIKE 'E%')
CONSTRAINT CHK_ENAME CHECK (ENAME=UPPER(ENAME)),

Dra. Aparna K, Prof. Assoc., Dept. de MCA, BMSIT&M Page 8


Sistema de Gerenciamento de Banco de Dados

CONSTRAINT CHK_STATE CHECK (STATE IN ('KARNATAKA','KERALA'))


CONSTRAINT FK_DNO_DEPT CHAVE ESTRANGEIRA (DNO) REFERENCES DEPARTAMENTO);

Instruções de Alteração de Esquema em SQL

Comandos de exclusão

• O comando DROP é usado para remover um elemento e sua definição.


• REMOVER ESQUEMA: Para remover esquema
• EXCLUIR TABELA: Para excluir tabela
• A relação (ou esquema) não pode mais ser utilizada em consultas, atualizações ou quaisquer outros comandos
uma vez que sua descrição não existe mais
• Existem duas opções de comportamento DROP: CASCADE e RESTRICT
• A opção ACASCADE é usada para remover o esquema e todas as suas tabelas, visões e todos os outros elementos.

Exemplos:
• CANCELAR ESQUEMA EMPRESA CASCATE;
oSchema e todos os seus elementos foram excluídos.
• EXCLUIR TABELA EMPREGADO CASCATA;
oTable e todos os seus elementos foram excluídos.
• Se a opção RESTRICT for usada em vez de CASCADE
Um esquema é excluído somente se não tiver elementos, caso contrário, um erro será exibido.
Uma tabela é excluída somente se não for referenciada em nenhuma restrição por outra tabela.

comando ALTER
• A definição de uma tabela base pode ser alterada usando o comando ALTER TABLE.
• As várias opções possíveis incluem
adicionando uma coluna
removendo uma coluna
mudando a definição da coluna
adicionando e removendo as restrições da tabela
• O comando ALTER TABLE é utilizado para adicionar um atributo a uma das relações base.
• O novo atributo terá NULLs em todas as tuplas da relação logo após o comando ser
executado; portanto, a restrição NOT NULL não é permitida para tal atributo

Exemplo:
• ALTER TABLE EMPREGADO ADICIONAR CARGO CHAR(12);
• Os usuários do banco de dados devem inserir um valor para o novo atributo CARGO para cada tupla de EMPREGADO.
• Isso pode ser feito usando o comando UPDATE ou pela cláusula DEFAULT.

Dra. Aparna K, Prof. Associada, Dept. de MCA, BMSIT&M Page 9


Sistema de Gerenciamento de Banco de Dados

• O comando ALTER TABLE também é usado para remover um atributo de uma das relações base.
• Para excluir uma coluna, deve-se escolher uma opção CASCADE ou RESTRICT para o comportamento de exclusão.
• ALTER TABLE EMPREGADO REMOVER CARGO;
• Se CASCADE, todas as relações e visões que referenciam a coluna são eliminadas automaticamente.
do esquema junto com a coluna.
• O comando ALTER TABLE também é usado para modificar um atributo de uma das relações base.
• ALTER TABLE EMPLOYEE ALTER MGRSSN DROP DEFAULT;
• ALTER TABLE EMPLOYEE ALTER MGRSSN SET DEFAULT 999;

Adicionar ou remover restrições


• ALTER TABLE EMPREGADO DROP CONSTRAINT FK_SUPERSSN CASCADE;

Estrutura de Consultas Básicas em SQL (O SELECT_FROM_WHERE)

• A forma básica da instrução SQL SELECT é chamada de bloco SELECT-FROM-WHERE


oSELECT <lista de atributos>
oFROM <lista de tabelas>
ONDE <condição>
• <attribute list> é uma lista de nomes de atributos cujos valores devem ser recuperados pela consulta
• <table list> é uma lista dos nomes das relações necessárias para processar a consulta
• <condition> é uma expressão condicional (Boolean) que identifica as tuplas a serem recuperadas
pela consulta

Query 0: Retrieve the birthdate and address of the employee whose name is ‘John B. Smith’.
SELECIONAR DATA_NASCIMENTO, ENDEREÇO

DE EMPREGADO
ONDE FNAME='John' E MINIT='B.'
E LNAME='Smith';
Π BDATE, ADDRESS (σFNAME=’John’ EMINIT=’B’ ELNAME=’Smith’Funcionário

• Semelhante a um par de operações de álgebra relacional PROJETA-SELECT


A cláusula SELECT especifica os atributos de projeção
A cláusula WHERE especifica a condição de seleção
• No entanto, o resultado da consulta pode conter tuplas duplicadas

Query 1: Retrieve the name and address of all employees who work for the ‘ Research’
departamento.

Dra. Aparna K, Prof. Assoc., Dept. de MCA, BMSIT&M Page 10


Sistema de Gerenciamento de Banco de Dados

SELECIONAR NOME, SOBRENOME, ENDEREÇO


DE EMPREGADO, DEPARTAMENTO
ONDE DNAME='Pesquisa' E DNUMBER=DNO

• Semelhante a uma sequência de operações de álgebra relacional SELECT-PROJECT-JOIN


• (DNAME='Pesquisa') é uma condição de seleção (corresponde a uma operação SELECT em
álgebra relacional
• Recuperar FNAME, LNAME, ENDEREÇO é uma operação de projeto
• (DNUMBER=DNO) é uma condição de junção (corresponde a uma operação JOIN na álgebra relacional)

Consulta 2: Para cada projeto localizado em 'Stafford', liste o número do projeto, o controlador
número do departamento, e o sobrenome do gerente do departamento, endereço e data de nascimento.

SELECT PNUMBER, DNUM, LNAME, BDATE, ADDRESS


DE PROJETO, DEPARTAMENTO, EMPREGADO
ONDE DNUM=DNUMBER E MGRSSN=SSN
E PLOCATION='Stafford';
• Existem duas condições de junção
• A condição de junção DNUM=DNUMBER relaciona um projeto ao seu departamento controlador
• A condição de junção MGRSSN=SSN relaciona o departamento controlador ao funcionário que
gerencia aquele departamento
• Recuperar PNUMBER, DNUM, LNAME, BDATE, ADDRESS é uma operação de projeto
• A localização do projeto é 'Stafford'

Nomes de Atributos Ambíguos, Alias, e Variáveis de Tupla


• Em SQL, podemos usar o mesmo nome para dois (ou mais) atributos, contanto que os atributos sejam
em diferentes relações
• Uma consulta que se refere a dois ou mais atributos com o mesmo nome deve qualificar o atributo
nome com o nome da relação prefixando o nome da relação ao nome do atributo
Exemplo:
[Link]
[Link]

Query 1A: Retrieve the name and address of all employees who work for the ‘ Research’
departamento.
SELECIONE NOME, SOBRENOME, ENDEREÇO
DE EMPREGADO, DEPARTAMENTO
ONDE DNAME='Pesquisa' E

Dra. Aparna K, Prof. Associada, Dept. de MCA, BMSIT&M Page 11


Sistema de Gerenciamento de Banco de Dados

FUNCIONÁRIO.NÚMERO = DEPARTAMENTO.NÚMERO

Q1B

SELECT FNAME, LNAME, ADDRESS


DE EMPREGADO E, DEPARTAMENTO D
ONDE DNAME='Pesquisa' E
[Link] = [Link];
• Algumas consultas precisam se referir à mesma relação duas vezes
• Neste caso, aliases são dados ao nome da relação

Consulta 8: Para cada funcionário, recupere o nome do funcionário e o nome dele ou dela
supervisor imediato.
SELECT [Link], [Link], [Link], S. LNAME
DA EMPREGADA E S
ONDE [Link]=[Link]
• Os nomes de relação alternativos E e S são chamados de aliases.
• E e S podem ser considerados como duas cópias diferentes de EMPREGADO; E representa os funcionários em
papel dos supervisionados e S representa funcionários no papel de supervisores

Consultas Básicas em SQL


• A aliasação também pode ser usada em qualquer consulta SQL por conveniência e a palavra-chave AS também pode ser
usado para especificar aliases
SELECIONE [Link], [Link], [Link], [Link]
DE EMPREGADO COMO E, EMPREGADO COMO S
ON [Link]=[Link]

Cláusula WHERE não especificada


• A ausência de uma cláusula WHERE indica que não há condição; portanto, todas as tuplas das relações no
A cláusula FROM é selecionada

Consulta 9: Recupere os valores de SSN para todos os funcionários.


SELECIONE SSN DO EMPREGADO

• Se mais de uma relação for especificada na cláusula FROM e não houver condição de junção,
então o PRODUTO CARTESIANO de tuplas é selecionado

Dra. Aparna K, Prof. Associada, Dept. de MCA, BMSIT&M Page 12


Sistema de Gerenciamento de Banco de Dados

Q1O
SELECIONE SSN, NOME_DA_DEPARTAMENTO DA FUNCIONÁRIO, DEPARTAMENTO

• É extremamente importante não negligenciar a especificação de qualquer condição de seleção e junção no


Cláusula WHERE; caso contrário, relações incorretas e muito grandes podem ocorrer

Use of * (Asterisk)
• Para recuperar todos os valores dos atributos das tuplas selecionadas, utiliza-se um *, que representa todos os
atributos

Q1C:SELECIONE * DA EMPREGADO ONDE DNO=5;

Q1D:SELECIONE * DA EMPREGADO, DEPARTAMENTO


ONDE DNAME='Pesquisa' E DNO=DNUMBER;

Tabelas como Conjuntos em SQL

• O SQL geralmente trata uma tabela não como um conjunto, mas sim como um multiconjunto, onde tuplas duplicadas podem aparecer.
mais de uma vez em uma tabela e no resultado de uma consulta.
• SQL não elimina automaticamente tuplas duplicadas no resultado das consultas porque:
A eliminação de duplicatas é cara.
O usuário pode querer ver os duplicados no resultado da consulta.
Para uma função agregada, a eliminação de tuplas não é desejada.
• Uma tabela SQL com uma chave primária é restrita a ser um conjunto, uma vez que o valor da chave deve ser
distinto em cada tupla.
• A palavra-chave DISTINCT pode ser usada na cláusula SELECT se os duplicados precisarem ser eliminados no
resultado da consulta.

SELECIONE SALÁRIO DO EMPREGADO


ou SELECIONE TODOS OS SALÁRIOS DO FUNCIONÁRIO

SELECIONE SALÁRIO DISTINTO DO EMPREGADO

Operações de conjunto em SQL

• SQL incorporou diretamente algumas operações de conjuntos


operação de união (UNION)
diferença de conjunto (MINUS ou EXCEPT)
interseção (INTERSECT)

Dra. Aparna K, Prof. Associada, Dept. de MCA, BMSIT&M Page 13


Sistema de Gerenciamento de Banco de Dados

• As relações resultantes dessas operações de conjunto são conjuntos de tuplas; tuplas duplicadas são
eliminado do resultado
• As operações de conjunto se aplicam apenas a relações compatíveis com união; as duas relações devem ter
os mesmos atributos e os atributos devem aparecer na mesma ordem
• Se os duplicados devem ser mantidos
operação de união (UNION ALL)
diferença de conjunto (MINUS ALL ou EXCEPT ALL)
interseção (INTERSECT ALL)
• (Nem todos podem funcionar em todas as ferramentas)

Consulta 4: Faça uma lista de todos os números de projetos para projetos que envolvem um funcionário cujo sobrenome
o nome é 'Smith' como trabalhador ou como gerente do departamento que controla o projeto.
(SELECIONE DISTINTO PNUMBER
FROM PROJECT, DEPARTMENT, EMPLOYEE
ONDE DNUM=DNUMBER E MGRSSN=SSN
E LNAME='Smith')
UNIÃO
(SELECIONE DISTINTO PNUMBER
DA TRABALHA_EM, FUNCIONÁRIO
ONDE ESSN=SSN E LNAME='Smith')

Faça uma lista de todos os números de projetos para projetos que envolvem um funcionário cujo sobrenome é
‘Smith’ como trabalhador e como gerente do departamento que controla o projeto.
(SELECIONE DISTINTO PNUMBER
DE PROJETO, DEPARTAMENTO, EMPREGADO
ONDE DNUM=DNUMBER E MGRSSN=SSN
E LNAME='Smith')
INTERSECTO
(SELECIONE DISTINCT PNUMBER
DE TRABALHOS_EM, EMPREGADO
ONDE ESSN=SSN E LNAME='Smith')

Faça uma lista de todos os números de projetos para projetos que envolvem um funcionário cujo sobrenome é
‘Smith’ as a manager of the department that controls the project but not as aworker.
(SELECIONE DISTINTAMENTE O NÚMERO DO PRODUTO

DE PROJETO, DEPARTAMENTO, EMPREGADO


ONDE DNUM=DNUMBER E MGRSSN=SSN
E LNAME='Smith')

Dra. Aparna K, Prof. Associada, Dept. de MCA, BMSIT&M Page 14


Sistema de Gerenciamento de Banco de Dados

MENOS
(SELECIONE DISTINTAMENTE O NÚMERO DO PRODUTO

DA TRABALHA_EM, EMPREGADO
ONDE ESSN=SSN E LNAME='Smith')

Correspondência de padrão de substring

• O operador de comparação LIKE é usado para comparar strings parciais


• Dois caracteres reservados são usados: '%' substitui um número arbitrário de caracteres e '_'
substitui um único caractere arbitrário

Query 12: Retrieve all employees whose address is in Houston, Texas. (Here, the value of
o atributo ENDEREÇO deve conter a substring 'Houston, Texas'.
SELECIONAR NOME, SOBRENOME
DE EMPREGADO
ONDE O ENDEREÇO COMO
%Houston, Texas%

Query 12A: Retrieve all employees who were born during the 195Os.(Here, ‘5’ must be the
8º caractere da string de acordo com nosso formato de data, então o valor de BDATE é 5', com cada
sublinhado como um marcador para um único caractere arbitrário.
SELECIONE NOME, SOBRENOME
DE EMPREGADO
ONDE BDATE COMO ‘_ _ _ _ _ 195_’;
(ou'%195_')

Operadores Aritméticos
• Os operadores aritméticos padrão ‘+’, ‘-’, ‘*’, ‘/’ (para adição, subtração, multiplicação,
e divisão, respectivamente) podem ser aplicados a valores numéricos em um resultado de consulta SQL.

Query 13: Show the resulting salaries if every employee working on the ‘ProductX’ project is
dada uma valorização de 10%.

SELECIONAR NOME, SOBRENOME, 1.1*SALÁRIO COMO SALÁRIO_AUMENTADO


DE FUNCIONÁRIO, TRABALHA_EM, PROJETO
ONDE SSN=ESSN E PNO=PNUMBER E PNAME='ProductX'

Operadores de Comparação

Consulta 14: Recuperar todos os funcionários do departamento 5 cujo salário está entre R$ 30.000 e
R$ 40.000

Dra. Aparna K, Prof. Associada, Dept. de MCA, BMSIT&M Page 15


Sistema de Gerenciamento de Banco de Dados

SELECIONE *
DE EMPREGADO
ONDE (SALÁRIO ENTRE 30000 E 40000) E DNO = 5;
SELECIONAR *
DE EMPREGADO
ONDE (SALÁRIO >= 30000) E (SALÁRIO <= 40000) E DNO = 5;

Ordenação dos resultados da consulta

• A cláusula ORDER BY é usada para ordenar as tuplas em um resultado de consulta com base nos valores de
algum(s) atributo(s)
• A ordem padrão é em ordem crescente de valores.
• A palavra-chave DESC pode ser usada se a ordem decrescente for necessária; a palavra-chave ASC pode ser
usado para especificar explicitamente a ordem ascendente, embora seja o padrão

Consulta 15: Recupere uma lista de funcionários e os projetos em que cada um trabalha, ordenada por
departamento do funcionário, e dentro de cada departamento ordenado alfabeticamente por funcionário
sobrenome, primeiro nome.

SELECIONE DNAME, LNAME, FNAME, PNAME


DEPARTAMENTO, EMPREGADO, TRABALHA_EM, PROJETO
ONDE DNUMBER=DNO E SSN=ESSN
E PNO=PNUMBER
PEDIR POR DNAME, LNAME, FNAME;
ORDER BY DNAME, LNAME, FNAME DESC
ORDER BY DNAME, LNAME DESC, FNAME DESC
ORDER BY DNAME DESC, LNAME, FNAME DESC

Consultas Mais Complexas

NULLS em SQL

• SQL permite consultas que verificam se um valor é NULL (faltando ou indefinido ou não aplicável)
• SQL usa IS ou IS NOT para comparar NULLs porque considera cada valor NULL distinto de
outros valores NULL, portanto a comparação de igualdade não é apropriada.

Consulta 14: Recupere os nomes de todos os funcionários que não têm supervisores.

SELECIONAR NOME, SOBRENOME

Dra. Aparna K, Prof. Associada, Dept. de MCA, BMSIT&M Page 16


Sistema de Gerenciamento de Banco de Dados

DE EMPREGADO
ONDE SUPERSSN É NULO
• Nota: Se uma condição de junção for especificada, tuplas com valores NULL para os atributos de junção não são
incluso no resultado

Renomeando Atributos
• Qualquer atributo que aparecer no resultado pode ser renomeado adicionando o qualificativo AS
seguido pelo novo nome desejado.
• A construção AS pode ser usada tanto para nomes de atributos quanto para nomes de relações e pode ser usada em
tanto as cláusulas SELECT quanto FROM.
Selecione ename como EMPNAME
de emp como EMPREGADO

Consultas Aninhadas
• Algumas consultas requerem que valores existentes no banco de dados sejam buscados e então utilizados em um
condição de comparação.
• Uma consulta SELECT completa, chamada de consulta aninhada, pode ser especificada dentro da cláusula WHERE.
de outra consulta, chamada de consulta externa

Query 1: Retrieve the name and address of all employees who work for the ‘ Research’
departamento.
SELECIONE NOME, SOBRENOME, ENDEREÇO
DE EMPREGADO
ONDE DNO EM
(SELECIONE DNUMBER
DO DEPARTAMENTO
ONDE DNAME='Pesquisa')
• A consulta aninhada seleciona o número do departamento 'Pesquisa'
• A consulta externa seleciona uma tupla de EMPREGADO se o valor DNO estiver no resultado da consulta aninhada
• O operador de comparação IN compara um valor v com um conjunto (ou multi-conjunto) de valores V, e
valoriza como VERDADEIRO se v for um dos elementos em V
• Em geral, podemos ter vários níveis de consultas aninhadas

Consulta 4A: Crie uma lista de todos os números de projeto para projetos que envolvem um funcionário cujo sobrenome
o nome é 'Smith' como trabalhador ou como gerente do departamento que controla o projeto.
SELECIONE DISTINTAMENTE PNUMBER DA PROJETO ONDE PNUMBER ESTÁ EM
(SELECIONAR PNUMBER
FROM PROJECT, DEPARTMENT, EMPLOYEE

Dra. Aparna K, Prof. Associada, Dept. de MCA, BMSIT&M Page 17


Sistema de Gerenciamento de Banco de Dados

ONDE DNUM=DNUMBER E MGRSSN=SSN


E LNAME='Smith')
OU
NUMERO PNO
(SELECIONE PNUMBER
DE TRABALHA_EM, EMPREGADO
ONDE ESSN=SSN
E LNAME='Smith')
• Além do operador IN, uma série de outros operadores de comparação como:
• = (se a consulta aninhada retornar apenas um único valor)
• = QUALQUER ou =ALGUNS
• >, <, <=, >=, <>
• A palavra-chave ALL pode ser usada com todos os operadores acima.

SELECIONE NOME, SOBRENOME, ENDEREÇO


DO EMPREGADO
ONDE SALÁRIO > TODOS
(SELECIONE SALÁRIO
DE FUNCIONÁRIO
ONDE DNO=5)

Consultas Aninhadas Correlacionadas

• Se uma condição na cláusula WHERE de uma consulta aninhada fizer referência a um atributo de uma relação
declaradas na consulta externa, as duas consultas são ditas correlacionadas.
• Uma referência a um atributo não qualificado refere-se à relação declarada na mais interna
consulta aninhada

Consulta 16: Recupere o nome de cada funcionário que tenha um dependente com o mesmo nome
e do mesmo gênero que o funcionário.
SELECIONE [Link]
DE EMPREGADO COMO E
ONDE [Link] EM
(SELECIONE ESSN
DE DEPENDENTE
ONDE E.GÊNERO = D.GÊNERO E
[Link]=DEP_NAME)

Dra. Aparna K, Prof. Assoc., Dept. de MCA, BMSIT&M Page 18


Sistema de Gerenciamento de Banco de Dados

Consulta de Bloco Único: Uma consulta escrita com SELECT... FROM... WHERE... blocos aninhados e utilizando
os operadores de comparação = ou IN podem sempre ser expressos como uma única consulta em bloco.

Q16A
SELECIONE [Link]
DE EMPREGADO E, DEPENDENTE D
ONDE [Link] = [Link] E
[Link] = D.DEP_NAME E
E.GÊNERO = D.GÊNERO;

A Função Exists
• EXISTS é usado para verificar se o resultado de uma consulta aninhada correlacionada está vazio (contém
sem tuplas) ou não
• EXISTS e NOT EXISTS são geralmente usados em conjunto com uma consulta aninhada correlacionada
• EXISTS retorna TRUE se houver pelo menos uma tupla no resultado da consulta, caso contrário,
retorna falso.
• NOT EXISTS retorna TRUE se não houver tuplas no resultado da consulta, caso contrário, retorna
falso.

Consulta 16B: Recupere o nome de cada funcionário que tenha um dependente com o mesmo nome
como o funcionário.
SELECIONE [Link] DO EMPREGADO E
ONDE EXISTE
(SELECIONAR *
DE DEPENDENTE D
ONDE [Link]=[Link] E
[Link]=D.DEP_NAME E
[Link] = [Link])

Consulta 6: Recuperar os nomes dos funcionários que não têm dependentes.


SELECIONAR NOME, SOBRENOME
DE EMPREGADO
ONDE NÃO EXISTE
(SELECIONE *
DE DEPENDENTE
ONDE SSN=ESSN)

Dra. Aparna K, Prof. Associada, Departamento de MCA, BMSIT&M Page 19


Sistema de Gerenciamento de Banco de Dados

• A consulta aninhada correlacionada recupera todas as tuplas DEPENDENTE relacionadas a uma tupla FUNCIONÁRIO.
Se não existirem, a tupla EMPREGADO é selecionada
• EXISTS é necessário para o poder expressivo do SQL

Q7. Liste os nomes dos gerentes que têm pelo menos um dependente.
SELECIONE NOME, SOBRENOME
DE FUNCIONÁRIO
ONDE EXISTE
(SELECIONE *
DO DEPENDENTE
ONDE SSN=ESSN)
E EXISTE
(SELECIONE *
DO DEPARTAMENTO
ONDE SSN=MGRSSN);

• O SQL original, conforme especificado para o SYSTEM R, também tinha um operador de comparação CONTAINS.
que é usado em conjunto com consultas correlacionadas aninhadas
• Este operador foi removido da linguagem, possivelmente devido à dificuldade em
implementando isso de forma eficiente

• A maioria das implementações do SQL não possui o operador CONTAINS


• O operador CONTAINS compara dois conjuntos de valores e retorna VERDADEIRO se um conjunto contiver
todos os valores no outro conjunto (rememorando a operação de divisão da álgebra).

Consulta 3: Recupere o nome de cada funcionário que trabalha em todos os projetos controlados por
número do departamento 5.
SELECIONE NOME, SOBRENOME DA EMPREGADO
ONDE ((SELECIONE PNO, ESSN
DE TRABALHA_EM
ONDE SSN=ESSN)
CONTÉM
(SELECIONE PNUMBER
DO PROJETO
ONDE DNUM=5))

• A segunda consulta aninhada, que não é correlacionada com a consulta externa, recupera o projeto
números de todos os projetos controlados pelo departamento 5

Dra. Aparna K, Prof. Associada, Dept. de MCA, BMSIT&M Page 20


Sistema de Gerenciamento de Banco de Dados

• A primeira consulta aninhada, que é correlacionada, recupera os números dos projetos sobre os quais o
o trabalho do funcionário, que é diferente para cada tupla de funcionário devido à correlação

Os Conjuntos Explícitos em SQL


• Também é possível usar um conjunto explícito (enumerado) de valores na cláusula WHERE em vez de
do que uma consulta aninhada

Consulta 13: Recuperar os números de previdência social de todos os empregados que trabalham no número do projeto
1, 2 ou 3.
SELECIONAR DISTINCT ESSN
A PARTIR DO TRABALHO EM

ONDE PNO EM (1,2,3)

Renomeando Atributos

Consulta 8A: Para cada funcionário, recupere o nome do funcionário e o nome de seu ou sua
supervisor imediato.
SELECIONE [Link] COMO Nome_do_Supervisionado,

[Link] COMO Superviser_name


DE FUNCIONÁRIO COMO E, FUNCIONÁRIO COMO S
ON [Link]=[Link]

Joining Tables
• Podemos especificar uma "relação unida" na cláusula FROM e ela se parece com qualquer outra
relação, mas é o resultado de um junção
• Permite que o usuário especifique diferentes tipos de junções (junção THETA regular, JUNÇÃO NATURAL,
JUNÇÃO EXTERNA À ESQUERDA, JUNÇÃO EXTERNA À DIREITA, JUNÇÃO CRUZADA, etc

Query 1: Retrieve the name and address of all employees who work for the ‘ Research’
departamento.
Q1:SELECIONE NOME, SOBRENOME, ENDEREÇO
DE FUNCIONÁRIO, DEPARTAMENTO
ONDE DNUMBER=DNO E DNAME='Pesquisa';
poderia ser escrito como:
Q1:SELECIONAR NOME, SOBRENOME, ENDEREÇO
DA (FUNCIONÁRIO JUNTE-SE AO DEPARTAMENTO EM DNUMBER=DNO)
ONDE DNAME=’Pesquisa’;

Dra. Aparna K, Prof. Associada, Dept. de MCA, BMSIT&M Page 21


Sistema de Gerenciamento de Banco de Dados

Além disso,
Q1:SELECIONE NOME, SOBRENOME, ENDEREÇO
DE EMPREGADO, DEPARTAMENTO
ONDE DNAME='Pesquisa' E DNUMBER=DNO

poderia ser escrito como:

SELECIONE NOME, SOBRENOME, ENDEREÇO


DE (FUNCIONÁRIO JUNÇÃO NATURAL (DEPARTAMENTO COMO DEP(DNOME, DNUM, MSSN, MSDATA)))
ONDE DNAME='Pesquisa';

Q8:SELECIONE [Link], [Link], [Link], [Link]


DE EMPREGADO E S
ONDE [Link]=[Link]

pode ser escrito como para junção externa:

Q8:SELECT [Link], [Link], [Link], [Link]


DE (FUNCIONÁRIO E JUNÇÃO EXTERNA À ESQUERDA FUNCIONÁRIO S

ON [Link]=[Link])

Consulta Q2: Para cada projeto localizado em 'Stafford', liste o número do projeto, o controlador.
department number, and the department manager’s last name, address, and birthdate.
pode ser escrito da seguinte forma; isso ilustra múltiplos joins nas tabelas unidas

Q2:SELECIONE PNUMBER, DNUM,


LNAME, BDATE, ADDRESS
FROM ((PROJETO JOIN DEPARTAMENTO ON DNUM=DNUMERO)
JUNTE-SE AO FUNCIONÁRIO ON MGRSSN=SSN)

ONDE PLOCATION='Stafford';

Funções Agregadas

• Inclua CONTAGEM, SOMA, MÁXIMO, MÍNIMO e MÉDIA


• Algumas implementações de SQL podem não permitir mais de uma função na cláusula SELECT

Query 19: Find the sum of the salary of all employees, the maximum salary, the minimum
salário e o salário médio entre os funcionários.
SELECIONE SOMA(SALÁRIO), MÁXIMO(SALÁRIO), MÍNIMO(SALÁRIO), MÉDIA(SALÁRIO) DE FUNCIONÁRIO;

Dra. Aparna K, Prof. Associada, Dept. de MCA, BMSIT&M Page 22


Sistema de Gerenciamento de Banco de Dados

Consulta 20: Encontre a soma dos salários de todos os funcionários, o salário máximo, o mínimo
salário, e o salário médio entre os funcionários que trabalham para o departamento de 'Pesquisa'.
SELECIONAR SOMA(SALÁRIO), MÁXIMO(SALÁRIO), MÍNIMO(SALÁRIO), MÉDIA(SALÁRIO)
DE EMPREGADO, DEPARTAMENTO
ONDE DNO=DNUMBER E
DNAME= ‘Research’
Ou

SELECIONAR SOMA(SALÁRIO), MÁXIMO(SALÁRIO), MÍNIMO(SALÁRIO), MÉDIA(SALÁRIO)


DE (FUNCIONÁRIO JUNTE-SE AO DEPARTAMENTO ON DNO=DNUMBER)
ONDE DNAME= 'Pesquisa';

Consulta 21: Recuperar o número total de funcionários.


SELECIONE CONTAGEM(*) DE EMPREGADO;

Consulta 22: Recuperar o número total de funcionários no Departamento de Pesquisa.


SELECIONE CONTAGEM(*)
DE EMPREGADO, DEPARTAMENTO
ONDE DNO=DNUMBER E DNAME='Pesquisa';

Consulta 23: Conte os valores salariais distintos no banco de dados.


SELECIONE CONTAR(DISTINTO SALÁRIO)
DE EMPREGADO;

Consulta 5: Liste os nomes de todos os funcionários com dois ou mais dependentes.


SELECIONE SOBRENOME, NOME
DE FUNCIONÁRIO
ONDE (SELECIONAR CONTAGEM (*) DE DEPENDENTE
ONDE SSN = ESSN) >=2;

Agrupamento
• SQL tem uma cláusula GROUP BY para especificar os atributos de agrupamento, que também devem aparecer
na cláusula SELECT
• Em muitos casos, queremos aplicar as funções de agregação a subgrupos de tuplas em uma relação
• Cada subgrupo de tuplas consiste no conjunto de tuplas que têm o mesmo valor para o
atributo(s) de agrupamento
• Então, a função de agregação é aplicada a cada subgrupo de forma independente

Dra. Aparna K, Prof. Associada, Dept. de MCA, BMSIT&M Page 23


Sistema de Gerenciamento de Banco de Dados

Query 20: For each department, retrieve the department number, the number of employees
no departamento e seu salário médio.
SELECIONE DNO, CONTAR (*), MÉDIA (SALÁRIO)
DE EMPREGADO
AGRUPAR POR DNO;

• As tuplas de EMPREGADO são divididas em grupos--cada grupo tendo o mesmo valor para o
atributo de agrupamento DNO
• As funções COUNT e AVG são aplicadas a cada um desses grupos de tuplas separadamente
• A cláusula SELECT inclui apenas o atributo de agrupamento e as funções a serem aplicadas em
cada grupo de tuplas
• Uma condição de junção pode ser usada em conjunto com agrupamento

Query 25: For each project, retrieve the project number, project name, and the number of
funcionários que trabalham nesse projeto.
SELECIONE PNUMBER, PNAME, CONTAR (*)
DE PROJETO, TRABALHA_EM
ONDE PNUMBER=PNO
AGRUPAR POR PNUMBER, PNAME;
• Neste caso, a agrupamento e as funções são aplicadas após a junção das duas relações.

A cláusula Having
• Às vezes, queremos recuperar os valores dessas funções apenas para aqueles grupos que
satisfazer certas condições
• A cláusula HAVING é usada para especificar uma condição de seleção em grupos (em vez de em
tuplas individuais)

Query 26: For each project on which more than two employees work, retrieve the project
number, project name, and the number of employees who work on that project.
SELECIONE PNUMBER, PNAME, CONTAR (*)
DE PROJETO, TRABALHA_EM
ONDE PNUMBER=PNO
AGRUPAR POR PNUMBER, PNAME
TENDO CONTAGEM (*) >2;

Consulta 27: Para cada projeto, recupere o número do projeto, o nome do projeto e o número de
employees from department 5 who work on that project.
SELECIONE PNUMBER, PNAME, CONTAR (*)
DE PROJETO, TRABALHA_EM, EMPREGADO

Dra. Aparna K, Prof. Associada, Dept. de MCA, BMSIT&M Page 24


Sistema de Gerenciamento de Banco de Dados

ONDE PNUMBER = PNO


E SSN = ESSN E DNO = 5
AGRUPAR POR PNUMBER, PNAME;

Query 28: For each department that has more than five employees, retrieve the department
número e o número de seus funcionários que estão ganhando mais de 40000.

SELECIONE DNUMBER, CONTAR (*)


DE FUNCIONÁRIO, DEPARTAMENTO
ONDE DNUMBER = DNO E SALÁRIO > 40000 E DNO EM
(SELECIONAR DNO DO EMPREGADO
AGRUPAR POR DNO
TENDO CONTAGEM (*)>5)
AGRUPAR POR DNUMBER;

Resumo de Consultas SQL


• Uma consulta em SQL pode consistir em até seis cláusulas, mas apenas as duas primeiras, SELECT e FROM, são
obrigatório. As cláusulas são especificadas na seguinte ordem:

SELECIONE <lista de atributos>


DE <lista de tabela>
[ONDE <condição>]
[AGRUPAR POR <atributo(s) de agrupamento>]
[TENDO <condição de grupo>]
[ORDENAR POR <lista de atributos>]

• A cláusula SELECT lista os atributos ou funções a serem recuperados


• A cláusula FROM especifica todas as relações (ou aliases) necessárias na consulta, mas não aquelas
necessário em consultas aninhadas

• A cláusula WHERE especifica as condições para a seleção e junção de tuplas de


relações especificadas na cláusula FROM
• GROUP BY especifica atributos de agrupamento
• HAVING especifica uma condição para a seleção de grupos
• ORDER BY especifica uma ordem para exibir o resultado de uma consulta

Uma consulta é avaliada aplicando primeiro a cláusula WHERE, depois GROUP BY e HAVING, e
finalmente a cláusula SELECT.

Dra. Aparna K, Prof. Associada, Dept. de MCA, BMSIT&M Page 25


Sistema de Gerenciamento de Banco de Dados

Banco de Questões

1. Quais são os diferentes tipos de dados de atributos e domínios em SQL? Explique.

2. Explain the following commands in SQL, with examples: DROP, CREATE, ALTER, UPDATE,
ROLLBACK, CHECK, EXISTS/NOT EXISTS
3. Explain the various constraints in SQL with syntax and examples.
4. Discuta as instruções INSERT, DELETE e UPDATE em SQL com exemplos.
5. Explain JOIN operations in SQL with syntax and examples.
6. Explique Consultas Aninhadas com exemplos.

7. Explique o uso da cláusula GROUP BY e HAVING com sintaxe e exemplos.


8. Liste e explique todas as funções de agregação em SQL com sintaxe e exemplos adequados.
9. Perguntas sobre a formulação de consultas SQL, dado qualquer banco de dados.

Dra. Aparna K, Prof. Associado, Dept. de MCA, BMSIT&M Page 26

Você também pode gostar