O documento descreve a linguagem SQL, dividida em três partes: DML para manipulação de dados, DDL para definição de dados e DCL para controle de dados. A SQL permite criar, alterar e excluir tabelas e manipular dados através de comandos como INSERT, DELETE e UPDATE.
Este documento fornece um resumo sobre SQL e seus principais comandos. SQL é uma linguagem padrão para manipulação de dados em bancos de dados relacionais. O documento descreve os principais comandos de SQL, incluindo DDL para definição de esquemas, DML para manipulação de dados e tipos de dados suportados.
O documento apresenta os principais conceitos e comandos da linguagem SQL, incluindo consultas, manipulação de tabelas, junções, subconsultas, views, triggers e stored procedures.
O documento descreve os principais comandos DML do MySQL para selecionar dados de uma tabela, incluindo SELECT, WHERE, ORDER BY, funções como COUNT e AVG, e operadores como BETWEEN e LIKE. Ele também fornece exemplos de como usar esses comandos em consultas a uma tabela Funcionários e exercícios relacionados.
Sql básico - Teoria e prática: Um grande resumoHelder Lopes
O documento fornece um resumo sobre SQL básico, abordando conceitos como: características de bancos de dados e tabelas, modelos lógicos e físicos, comandos DDL para criação e alteração de tabelas, restrições e relacionamentos.
O documento apresenta um treinamento sobre SQL dividido em duas partes. Ele aborda diversos comandos e conceitos como agrupamento de dados, funções, ordenação, joins e subconsultas. Também explica conceitos básicos de banco de dados como SGBD, tabelas, chaves e a linguagem SQL.
Este documento fornece uma introdução à linguagem SQL, incluindo sua história, propósito e principais comandos. Apresenta o modelo relacional de dados e discute os comandos CREATE TABLE, VIEWS e REGRAS DE INTEGRIDADE que garantem a consistência dos dados.
SQL é uma linguagem usada para criar, manipular e extrair dados de bancos de dados. Primeiro, cria-se um diagrama de entidade-relacionamento (DER) para estruturar o banco de dados e mapear as tabelas e relações. Isso é transformado em um modelo entidade-relacionamento (MER) para criar as tabelas no banco de dados. SQL permite executar operações como criar, alterar, excluir e consultar dados no banco de dados.
Este documento fornece um resumo sobre SQL e seus principais comandos. SQL é uma linguagem padrão para manipulação de dados em bancos de dados relacionais. O documento descreve os principais comandos de SQL, incluindo DDL para definição de esquemas, DML para manipulação de dados e tipos de dados suportados.
O documento apresenta os principais conceitos e comandos da linguagem SQL, incluindo consultas, manipulação de tabelas, junções, subconsultas, views, triggers e stored procedures.
O documento descreve os principais comandos DML do MySQL para selecionar dados de uma tabela, incluindo SELECT, WHERE, ORDER BY, funções como COUNT e AVG, e operadores como BETWEEN e LIKE. Ele também fornece exemplos de como usar esses comandos em consultas a uma tabela Funcionários e exercícios relacionados.
Sql básico - Teoria e prática: Um grande resumoHelder Lopes
O documento fornece um resumo sobre SQL básico, abordando conceitos como: características de bancos de dados e tabelas, modelos lógicos e físicos, comandos DDL para criação e alteração de tabelas, restrições e relacionamentos.
O documento apresenta um treinamento sobre SQL dividido em duas partes. Ele aborda diversos comandos e conceitos como agrupamento de dados, funções, ordenação, joins e subconsultas. Também explica conceitos básicos de banco de dados como SGBD, tabelas, chaves e a linguagem SQL.
Este documento fornece uma introdução à linguagem SQL, incluindo sua história, propósito e principais comandos. Apresenta o modelo relacional de dados e discute os comandos CREATE TABLE, VIEWS e REGRAS DE INTEGRIDADE que garantem a consistência dos dados.
SQL é uma linguagem usada para criar, manipular e extrair dados de bancos de dados. Primeiro, cria-se um diagrama de entidade-relacionamento (DER) para estruturar o banco de dados e mapear as tabelas e relações. Isso é transformado em um modelo entidade-relacionamento (MER) para criar as tabelas no banco de dados. SQL permite executar operações como criar, alterar, excluir e consultar dados no banco de dados.
1. O documento descreve os principais comandos DDL (Data Definition Language) do MySQL para criar, alterar e excluir bancos de dados, tabelas e views.
2. Os comandos CREATE, ALTER e DROP são explicados em detalhes com exemplos de como criar tabelas, adicionar chaves primárias e estrangeiras, modificar estruturas de tabelas e excluir bancos de dados e tabelas.
3. As opções ON DELETE e ON UPDATE são discutidas no contexto de configurar o comportamento de chaves estrangeiras quando há exclusão ou
Este documento explica os comandos SQL para inserir, alterar, excluir e consultar dados em uma tabela de banco de dados. Aprendemos como usar os comandos INSERT para inserir registros, UPDATE para atualizar dados, DELETE para excluir registros e SELECT para consultar e filtrar dados. O documento também discute o uso de WHERE, ORDER BY e outras cláusulas.
O documento discute os conceitos de normalização de banco de dados, incluindo as primeiras, segunda e terceira formas normais. Também explica os comandos SQL DISTINCT, agregação com GROUP BY e HAVING e a união de consultas com UNION.
O documento discute os conceitos de normalização de banco de dados, incluindo a primeira, segunda e terceira formas normais. Explica que a primeira forma normal requer que cada campo contenha um único valor e não valores repetidos ou agrupados. A segunda forma normal exige que todos os campos não-chave dependam da chave primária completa. E a terceira forma normal requer que campos não dependam de outras chaves.
O documento apresenta um resumo da carreira de Administrador e Desenvolvedor de Banco de Dados com SQL Server, descrevendo as principais responsabilidades de cada profissão e ferramentas do SQL Server como o SQL Server Management Studio.
1) O documento apresenta tabelas e comandos SQL para criação de um banco de dados.
2) São listadas tabelas como CLIENTE, VENDEDOR e PEDIDO com suas respectivas colunas.
3) São explicados comandos como CREATE DATABASE, CREATE TABLE, DROP TABLE, SHOW DATABASES e INSERT entre outros.
O documento discute os conceitos de normalização de banco de dados, incluindo a primeira, segunda e terceira formas normais. Também descreve os principais componentes de bancos de dados relacionais como tabelas, linhas e colunas e como as tabelas se relacionam através de chaves. Finalmente, resume os principais tipos de linguagem SQL - DDL, DML, DCL e DQL.
O documento discute restrições em bancos de dados SQL, incluindo chave primária, chave estrangeira, valor padrão e único. Ele fornece exemplos de como configurar essas restrições em tabelas para manter a integridade referencial e de domínio.
Este documento fornece instruções sobre como usar a instrução SELECT no SQL para selecionar dados de bancos de dados. A instrução SELECT permite recuperar dados de tabelas usando cláusulas como FROM, WHERE, GROUP BY e ORDER BY. Além disso, explica outras cláusulas como HAVING, AS e WITH OWNERACCESS OPTION.
O documento fornece uma introdução aos fundamentos do SQL Server 2005, incluindo objetivos de aprendizagem, conteúdo sobre definição e manipulação de dados, recuperação de dados usando cláusulas SELECT, FROM, WHERE e JOIN, e conceitos básicos de bancos de dados e modelagem entidade-relacionamento.
O documento descreve o processo de normalização de dados, que envolve transformar tabelas não normalizadas em tabelas normalizadas através de três formas normais, eliminando redundâncias. Apresenta os conceitos de dependência funcional e as etapas de passagem à primeira, segunda e terceira forma normal, ilustrando com um exemplo de normalização de um relatório de alocação de projetos.
O documento descreve recursos avançados de bancos de dados relacionais como DDL e DML. Na parte I, é relembrado o DDL e apresentadas novidades como criação de domínios, índices, gatilhos, procedimentos, funções e visões. Na parte II, o foco é o DML, relembrando consultas SQL e apresentando cláusulas como BETWEEN, JOIN, GROUP BY e funções agregadas.
O documento apresenta os principais conceitos da linguagem SQL, incluindo suas partes (DDL, DML), tipos de dados, comandos para criação, alteração e remoção de tabelas e restrições.
O documento discute o conceito e objetivos da normalização de dados. A normalização é um processo que organiza tabelas de banco de dados de forma a eliminar redundâncias e anomalias, como atualização, inserção ou remoção inconsistentes de dados. Ela visa deixar as tabelas em Formas Normais que garantam a integridade referencial dos dados.
O documento apresenta os principais conceitos e comandos do sistema de gerenciamento de banco de dados MySQL. Ele explica o que é SQL, como instalar o MySQL e os principais grupos de comandos - DML, DDL e DCL. Além disso, demonstra comandos básicos como criar e manipular bancos de dados e tabelas, inserir, consultar e alterar dados.
Apresentação da segunda parte do curso de fundamentos de SQL. Nessa parte temos primeiras impressões sobre Entidade Relacionamento e Comando de Manipulação de dados DML.
O documento descreve conceitos fundamentais de bancos de dados, incluindo instâncias, esquemas, independência de dados, modelos de dados, modelo entidade-relacionamento e a linguagem SQL.
1) As junções permitem combinar dados de múltiplas tabelas com base em relações entre elas, permitindo exibir relatórios mais elaborados.
2) Uma subconsulta é uma consulta SQL aninhada dentro de outra, e pode ser usada para comparar valores ou verificar a existência de registros.
3) Junções e subconsultas são ferramentas poderosas para recuperar e analisar dados relacionais em bancos de dados.
O documento apresenta exercícios sobre SQL para criar e manipular tabelas em um banco de dados. As instruções incluem: 1) criar a estrutura de tabelas de um diagrama, 2) adicionar uma coluna em uma tabela, 3) consultas em múltiplas tabelas, 4) operações CRUD respeitando restrições e 5) criar uma nova tabela relacionada.
O documento apresenta exercícios sobre SQL para criar e manipular tabelas em um banco de dados. As instruções incluem: 1) criar a estrutura de tabelas de um diagrama, 2) adicionar uma coluna em uma tabela, 3) consultas em múltiplas tabelas, 4) operações CRUD respeitando restrições e 5) criar uma nova tabela relacionada.
1. O documento descreve os principais comandos DDL (Data Definition Language) do MySQL para criar, alterar e excluir bancos de dados, tabelas e views.
2. Os comandos CREATE, ALTER e DROP são explicados em detalhes com exemplos de como criar tabelas, adicionar chaves primárias e estrangeiras, modificar estruturas de tabelas e excluir bancos de dados e tabelas.
3. As opções ON DELETE e ON UPDATE são discutidas no contexto de configurar o comportamento de chaves estrangeiras quando há exclusão ou
Este documento explica os comandos SQL para inserir, alterar, excluir e consultar dados em uma tabela de banco de dados. Aprendemos como usar os comandos INSERT para inserir registros, UPDATE para atualizar dados, DELETE para excluir registros e SELECT para consultar e filtrar dados. O documento também discute o uso de WHERE, ORDER BY e outras cláusulas.
O documento discute os conceitos de normalização de banco de dados, incluindo as primeiras, segunda e terceira formas normais. Também explica os comandos SQL DISTINCT, agregação com GROUP BY e HAVING e a união de consultas com UNION.
O documento discute os conceitos de normalização de banco de dados, incluindo a primeira, segunda e terceira formas normais. Explica que a primeira forma normal requer que cada campo contenha um único valor e não valores repetidos ou agrupados. A segunda forma normal exige que todos os campos não-chave dependam da chave primária completa. E a terceira forma normal requer que campos não dependam de outras chaves.
O documento apresenta um resumo da carreira de Administrador e Desenvolvedor de Banco de Dados com SQL Server, descrevendo as principais responsabilidades de cada profissão e ferramentas do SQL Server como o SQL Server Management Studio.
1) O documento apresenta tabelas e comandos SQL para criação de um banco de dados.
2) São listadas tabelas como CLIENTE, VENDEDOR e PEDIDO com suas respectivas colunas.
3) São explicados comandos como CREATE DATABASE, CREATE TABLE, DROP TABLE, SHOW DATABASES e INSERT entre outros.
O documento discute os conceitos de normalização de banco de dados, incluindo a primeira, segunda e terceira formas normais. Também descreve os principais componentes de bancos de dados relacionais como tabelas, linhas e colunas e como as tabelas se relacionam através de chaves. Finalmente, resume os principais tipos de linguagem SQL - DDL, DML, DCL e DQL.
O documento discute restrições em bancos de dados SQL, incluindo chave primária, chave estrangeira, valor padrão e único. Ele fornece exemplos de como configurar essas restrições em tabelas para manter a integridade referencial e de domínio.
Este documento fornece instruções sobre como usar a instrução SELECT no SQL para selecionar dados de bancos de dados. A instrução SELECT permite recuperar dados de tabelas usando cláusulas como FROM, WHERE, GROUP BY e ORDER BY. Além disso, explica outras cláusulas como HAVING, AS e WITH OWNERACCESS OPTION.
O documento fornece uma introdução aos fundamentos do SQL Server 2005, incluindo objetivos de aprendizagem, conteúdo sobre definição e manipulação de dados, recuperação de dados usando cláusulas SELECT, FROM, WHERE e JOIN, e conceitos básicos de bancos de dados e modelagem entidade-relacionamento.
O documento descreve o processo de normalização de dados, que envolve transformar tabelas não normalizadas em tabelas normalizadas através de três formas normais, eliminando redundâncias. Apresenta os conceitos de dependência funcional e as etapas de passagem à primeira, segunda e terceira forma normal, ilustrando com um exemplo de normalização de um relatório de alocação de projetos.
O documento descreve recursos avançados de bancos de dados relacionais como DDL e DML. Na parte I, é relembrado o DDL e apresentadas novidades como criação de domínios, índices, gatilhos, procedimentos, funções e visões. Na parte II, o foco é o DML, relembrando consultas SQL e apresentando cláusulas como BETWEEN, JOIN, GROUP BY e funções agregadas.
O documento apresenta os principais conceitos da linguagem SQL, incluindo suas partes (DDL, DML), tipos de dados, comandos para criação, alteração e remoção de tabelas e restrições.
O documento discute o conceito e objetivos da normalização de dados. A normalização é um processo que organiza tabelas de banco de dados de forma a eliminar redundâncias e anomalias, como atualização, inserção ou remoção inconsistentes de dados. Ela visa deixar as tabelas em Formas Normais que garantam a integridade referencial dos dados.
O documento apresenta os principais conceitos e comandos do sistema de gerenciamento de banco de dados MySQL. Ele explica o que é SQL, como instalar o MySQL e os principais grupos de comandos - DML, DDL e DCL. Além disso, demonstra comandos básicos como criar e manipular bancos de dados e tabelas, inserir, consultar e alterar dados.
Apresentação da segunda parte do curso de fundamentos de SQL. Nessa parte temos primeiras impressões sobre Entidade Relacionamento e Comando de Manipulação de dados DML.
O documento descreve conceitos fundamentais de bancos de dados, incluindo instâncias, esquemas, independência de dados, modelos de dados, modelo entidade-relacionamento e a linguagem SQL.
1) As junções permitem combinar dados de múltiplas tabelas com base em relações entre elas, permitindo exibir relatórios mais elaborados.
2) Uma subconsulta é uma consulta SQL aninhada dentro de outra, e pode ser usada para comparar valores ou verificar a existência de registros.
3) Junções e subconsultas são ferramentas poderosas para recuperar e analisar dados relacionais em bancos de dados.
O documento apresenta exercícios sobre SQL para criar e manipular tabelas em um banco de dados. As instruções incluem: 1) criar a estrutura de tabelas de um diagrama, 2) adicionar uma coluna em uma tabela, 3) consultas em múltiplas tabelas, 4) operações CRUD respeitando restrições e 5) criar uma nova tabela relacionada.
O documento apresenta exercícios sobre SQL para criar e manipular tabelas em um banco de dados. As instruções incluem: 1) criar a estrutura de tabelas de um diagrama, 2) adicionar uma coluna em uma tabela, 3) consultas em múltiplas tabelas, 4) operações CRUD respeitando restrições e 5) criar uma nova tabela relacionada.
1) O documento descreve um exercício sobre operações no banco de dados utilizando SQL. 2) Ele instrui a criação de uma base de dados e duas tabelas para armazenar informações de clientes e seus saldos. 3) Por fim, pede para realizar operações de consulta, inserção, alteração e exclusão nas tabelas para reforçar os conceitos de CRUD.
O documento fornece instruções para um exercício de banco de dados SQL, pedindo para (1) criar um banco de dados chamado LOJA e (2) criar as tabelas Vendedor, Produto e Venda dentro desse banco de dados.
1) O documento descreve um exercício sobre operações no banco de dados utilizando SQL. 2) Ele instrui a criação de uma base de dados e duas tabelas para armazenar informações de clientes e seus saldos. 3) Por fim, pede para realizar operações de consulta, inserção, alteração e exclusão nas tabelas para reforçar os conceitos de CRUD.
1) O documento descreve a criação de tabelas para um banco de dados de alunos e disciplinas, com colunas, tipos de dados e restrições.
2) Instruções são fornecidas para inserir dados nas tabelas e alterar valores de acordo com regras de negócio.
3) Queries são propostas para apagar e atualizar registros com base em critérios.
Este documento apresenta os principais tipos de JOIN em SQL para combinar dados entre tabelas relacionadas em um banco de dados de exemplo. Ele discute INNER JOIN, LEFT JOIN, RIGHT JOIN e FULL JOIN, explicando como cada um lida com registros que não possuem correspondência nas outras tabelas. Também aborda JOIN com chaves compostas.
O documento descreve a linguagem SQL (Structured Query Language), incluindo suas principais funcionalidades como definição e manipulação de dados em bancos de dados relacionais através de comandos DDL e DML. Também explica como criar, alterar e definir restrições em tabelas usando comandos como Create Table, Alter Table, e Constraints.
Este documento apresenta os principais comandos de linguagem de definição de dados em SQL para criação, alteração e eliminação de tabelas e índices, incluindo CREATE TABLE, ALTER TABLE, DROP TABLE, CREATE INDEX e DROP INDEX. Também discute transações, privilégios e controle de acesso utilizando comandos como COMMIT, ROLLBACK, GRANT e REVOKE.
O documento apresenta uma introdução sobre SQL, incluindo sua história e partes. Descreve os comandos SQL para definição de dados, como CREATE, DROP e ALTER. Explica integridade de chaves, referencial e de domínio. Apresenta tipos de dados e índices. Por fim, solicita um exercício para criação de tabelas relacionais.
1) O documento introduz as características da linguagem SQL, incluindo sua origem, divisões e instruções principais como SELECT, INSERT, UPDATE e DELETE. 2) Detalha os tipos de dados suportados por SQL e comandos para criar, alterar e excluir tabelas como CREATE, ALTER e DROP. 3) Apresenta exemplos de consultas, restrições, funções agregadas e outras funcionalidades da linguagem.
O documento resume conceitos básicos de SQL, incluindo sua função como linguagem de consulta e manipulação de dados em bancos de dados relacionais. Apresenta termos como tabela, linha, coluna e discute instruções CREATE para definição de esquemas, tabelas, domínios e tipos de dados. Também aborda restrições como chaves primárias, estrangeiras e checagem de valores.
O documento descreve os principais conceitos de modelagem de dados em bancos de dados relacionais, incluindo tabelas, atributos, chaves primárias, diagramas de entidade-relacionamento e mapeamento de dados em SGBDs usando a linguagem SQL.
Este documento fornece instruções sobre como criar e manipular bancos de dados e tabelas no MySQL. Ele explica como criar tabelas, definir tipos de dados, chaves primárias e estrangeiras. Além disso, apresenta exemplos de comandos SQL como SELECT, INSERT, UPDATE e DELETE.
O documento explica o que são funções analíticas no SQL, suas vantagens em relação a outras funções, sintaxe e exemplos de funções como ROW_NUMBER, RANK, DENSE_RANK, FIRST_VALUE e LAST_VALUE. Demonstra como essas funções permitem agregar valores e ordenar linhas de dados de forma flexível.
Este documento apresenta um módulo sobre linguagem SQL. Ele inclui tópicos como SQL básico, consultas complexas, triggers, views e modificações de esquema. O objetivo é apresentar os principais conceitos e construções de SQL e como as principais bases de dados abordam o assunto. 20% das questões de banco de dados em concursos envolvem SQL.
O documento fornece uma introdução sobre SQL, incluindo sua história, propriedades, funções e comandos básicos. Resume os principais pontos abordados no documento em 3 frases:
1. SQL é uma linguagem padronizada para definir, manipular e consultar dados armazenados em bancos de dados relacionais.
2. O documento explica os comandos DDL, DML, DCL utilizados no SQL para criação, manipulação e controle de acesso a dados.
3. É apresentado exemplos de comandos
1) As tabelas são importantes para o design de páginas web, permitindo alinhamentos e posicionamentos que seriam difíceis sem elas. 2) Tabelas tornam sites mais profissionais e permitem que usuários naveguem de forma mais eficiente. 3) O documento ensina como criar tabelas HTML usando tags como <TABLE>, <TR> e <TD> e como formatá-las usando atributos.
Este documento apresenta uma introdução à linguagem SQL, definindo suas principais funcionalidades como manipulação de dados, definição de tabelas e restrições de integridade. Também resume os principais comandos SQL como CREATE, ALTER, DROP, SELECT, INSERT, UPDATE e DELETE.
O documento fornece instruções sobre como criar e manipular bancos de dados e tabelas usando o MySQL. Ele explica os comandos básicos para criar bancos de dados e tabelas, inserir, alterar e excluir dados, e fornece exemplos de sintaxe SQL.
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6Wagner Bianchi
O documento fornece uma introdução abrangente sobre a linguagem SQL, incluindo suas principais subdivisões (DML, DDL, DCL, DTL), elementos e operadores. Também discute funções agregadas comuns.
O documento descreve a linguagem SQL, usada para definir e manipular dados em bancos de dados relacionais. Apresenta os principais comandos da SQL, divididos em linguagem de definição de dados (DDL) e linguagem de manipulação de dados (DML). Fornece exemplos de comandos DDL como CREATE TABLE e ALTER TABLE, e de comandos DML como SELECT, INSERT e UPDATE.
O documento apresenta uma introdução ao SQL, incluindo sua história e propósito. Discute as principais famílias do SQL (DML, DDL e DCL) e seus comandos. Fornece exemplos de comandos SELECT básicos para recuperar e filtrar dados.
Este documento fornece um resumo sobre SQL (Structured Query Language). SQL é usado para comunicação com bancos de dados relacionais e possui três subconjuntos principais: DML para manipulação de dados, DDL para definição de dados e DCL para controle de dados. O documento explica comandos como SELECT, INSERT, UPDATE, DELETE e funções como WHERE, GROUP BY e JOIN.
As classes de modelagem podem ser comparadas a moldes ou
formas que definem as características e os comportamentos dos
objetos criados a partir delas. Vale traçar um paralelo com o projeto de
um automóvel. Os engenheiros definem as medidas, a quantidade de
portas, a potência do motor, a localização do estepe, dentre outras
descrições necessárias para a fabricação de um veículo
A linguagem C# aproveita conceitos de muitas outras linguagens,
mas especialmente de C++ e Java. Sua sintaxe é relativamente fácil, o que
diminui o tempo de aprendizado. Todos os programas desenvolvidos devem
ser compilados, gerando um arquivo com a extensão DLL ou EXE. Isso torna a
execução dos programas mais rápida se comparados com as linguagens de
script (VBScript , JavaScript) que atualmente utilizamos na internet
1. A Linguagem SQL
1 Introdução
A linguagem SQL pode ser considerada como uma das principais razões para o sucesso dos bancos de dados relacionais, pois
ela se tornou um padrão para SGBD's relacionais. Na prática, existem muitas diferenças entre os diversos SGBD's comerciais.
Entretanto, o usuário pode sempre optar por utilizar somente as características que fazem parte do padrão, podendo assim
migrar de um SGBD para outro sem grande esforço.
As operações de álgebra relacional aprendidas no curso são muito importantes para compreender os tipos de solicitações que
podem ser especificadas em um banco de dados relacional. Elas também são importantes para a otimização e o
processamento de consultas em um SGBD relacional, conforme será visto na disciplina de Tópicos de Banco de Dados I.
Entretanto, as operações de álgebra relacional são consideradas demasiadamente técnicas para a maioria dos usuários de
SGBD's comerciais. Uma razão para isso é o fato de que uma consulta na álgebra relacional é escrita na forma de uma
seqüência de operações que, ao serem executadas, produzem o resultado esperado. Dessa forma, o usuário deve especificar
como – ou seja, em que ordem – executar as operações de consulta. Por outro lado, a linguagem SQL fornece uma interface
de linguagem declarativa de alto nível, de forma que o usuário especifique somente qual o resultado que deve ocorrer,
deixando a efetiva otimização e decisões sobre como executar a consulta a cargo do SGBD. A SQL inclui algumas
características da álgebra relacional, sendo baseada, em sua maior parte, no cálculo relacional de tuplas, que se trata de
outra linguagem de consulta formal para bancos de dados relacionais. A sintaxe da SQL é mais amigável ao usuário do que
qualquer uma das linguagens formais.
O nome SQL é derivado de Structured Query Language (Linguagem de Consulta Estruturada). Ela é dividida em três partes
de acordo com os tipos de comandos:
DML (linguagem de manipulação de dados) – permite consultas, modificação de informações existentes, criação de novos
dados ou exclusão de dados das tabelas;
DDL (linguagem de definição de dados) – descreve como as tabelas e os outros objetos do banco de dados podem ser
definidos, alterados e removidos;
DCL (linguagem de controle de dados) – dá uma visão dos mecanismos de controle subdividido em três grupos de
comandos para controle: das transações, da sessão e do sistema.
1.1 Exemplos
Serão utilizado como exemplo para os comandos SQL as seguintes relações:
Empregado (codEmpr, nome, salário, sexo, estadoCivil, codDepto)
Departamento (codDepto, nome, orçamento)
2 Definição de esquemas em SQL
A SQL utiliza os termos tabela, linha e coluna para, respectivamente, relação, tupla e atributo – temos da álgebra
relacional. Os comandos da SQL para definição dos dados são CREATE (criar), ALTER (alterar) e DROP (remover).
2.1 Tipo de dados
Os tipos de dados disponíveis para atributos incluem dados numéricos, string de caracteres, data e hora.
Tipos de dados numéricos incluem:
Números inteiros de vários tamanhos: INTEGER ou INT e SMALLINT; e
Números reais de várias precisões: FLOAT, REAL, DOUBLE PRECISION e DECIMAL. Números formatados podem ser
declarados utilizando DECIMAL (i,j), onde i, a precisão, é o número total de dígitos antes da vírgula e j, a escala, é o
número de dígitos após o ponto decimal.
Tipos de dados de strings de caracteres podem ser:
De tamanho fixo: CHAR(n), onde n é o número de caracteres; ou
De tamanho variável: VARCHAR(n), onde n é o número máximo de caracteres.
O tipo de dado DATE possui dez posições e seus componentes são ano, mês e dia, geralmente na forma AAAA-MM-DD. O tipo
de dado a possui pelo menos oito posições, com os componentes hora, minuto e segundo, geralmente na forma HH:MM:SS.
Somente datas e horas válidas deveriam ser permitidas pela implementação da SQL.
1
2. 2.2 O comando CREATE TABLE
O comando CREATE TABLE é utilizado para especificar uma nova relação dando a ela um nome e especificando seus atributos
e restrições. Os atributos são especificados primeiramente e, a cada atributo é dado um nome, um tipo de dado para
especificar seu domínio de valores e qualquer restrição de atributo tal como NOT NULL. As restrições de chave, de integridade
da entidade e de integridade referencial podem ser especificadas, dentro da instrução CRATE TABLE, depois que os atributos
forem declarados. Uma outra opção é declarar estar restrições posteriormente, utilizando o comando ALTER TABLE.
Exemplo 1
CREATE TABLE Departamento
( codDepto INT NOT NULL,
nome VARCHAR (50) NOT NULL,
orçamento DECIMAL (10, 2),
PRIMARY KEY (codDepto),
UNIQUE (nome) );
CREATE TABLE Empregado
( codEmpr INT NOT NULL,
nome VARCHAR (50) NOT NULL,
salário DECIMAL (10, 2),
sexo CHAR (1),
estadoCivil CHAR (1),
codDepto INT NOT NULL,
PRIMARY KEY (codEmpr),
FOREIGN KEY (codDepto) REFERENCES Departamento (codDepto) );
2.3 Sobre as restrições
Uma vez que a SQL permite NULLs como valores de atributos, a restrição NOT NULL pode ser especificada caso NULL não seja
permitido para um determinado atributo. Como por exemplo, o nome de um empregado não pode ser nulo.
A cláusula PRIMARY KEY especifica um ou mais atributos que compõem a chave primária de uma tabela. Caso a chave
primária seja composta por mais de um atributo, eles devem vir separados por vírgula. A cláusula UNIQUE especifica as
chaves candidata, ou seja, aquelas cuja combinação de valores não se repete. A integridade referencial é especificada na
cláusula FOREIGN KEY.
Conforme foi visto em aula, uma restrição de integridade pode ser violada quando tuplas são inseridas ou excluídas, ou
quando um atributo de chave estrangeira é modificado. Na SQL pode-se especificar a ação a ser tomada se uma restrição de
integridade referencial for violada. As opções são: SET NULL, CASCADE e SET DEFAULT. Além disso, deve ser qualificada se a
ação é deve tomada na exclusão (ON DELETE) ou na atualização (ON UPDATE).
Exemplo 2 Detalhando o relacionamento existente entre Empregado e Departamento:
CREATE TABLE Empregado
( codEmpr INT NOT NULL,
nome VARCHAR (50) NOT NULL,
salário DECIMAL (10, 2),
sexo CHAR (1),
estadoCivil CHAR (1),
codDepto INT NOT NULL,
PRIMARY KEY (codEmpr),
FOREIGN KEY (codDepto) REFERENCES Departamento (codDepto)
ON DELETE SET NULL
ON UPDATE SET CASCADE );
Neste exemplo, quando uma linha da tabela Departamento for excluída será colocado NULL nas linhas relacionadas de
Empregado. Quando uma linha de departamento for alterada os registros relacionados serão alterados também.
2.4 O comando DROP TABLE
Se uma determinada tabela não for mais necessária, ela e sua definição podem ser excluídas utilizando o comando DROP
TABLE. Existem duas opções de comportamento na exclusão:
CASCADE – todas as restrições que referenciam a tabela são removidas automaticamente juntamente com a tabela em
questão;
RESTRICT – a tabela em questão só será removida se ela não for referenciada por outra tabela (por exemplo, através de
definições de chaves estrangeiras).
2
3. Exemplo 3
No modo RESTRICT, a tabela Departamento não pode ser removida porque ela é referenciada pela tabela Empregado.
DROP TABLE Departamento RESTRICT;
No modo CASCADE, a tabela Departamento será excluída juntamente com todos os dados e com a chave estrangeira da tabela
Empregado.
DROP TABLE Departamento CASCADE;
2.5 O comando ALTER TABLE
A definição de uma tabela pode ser alterada utilizando-se o comando ALTER TABLE. Através da alteração de uma tabela é
possível: adicionar ou retirar uma coluna, alterar a definição de uma coluna e adicionar ou retirar restrições de tabela.
Exemplo 4 Adicionar mais um campo à tabela Empregado:
ALTER TABLE Empregado ADD endereço VARCHAR(50);
Para remover uma coluna, deve-se escolher uma das opções para controla o comportamento da eliminação:
CASCADE – todas as restrições que referenciam a coluna são automaticamente excluídas, juntamente com a coluna;
RESTRICT – o comando só é bem-sucedido, se nenhuma restrição referenciar a coluna.
Exemplo 5 Remover um campo da tabela Empregado:
ALTER TABLE Empregado DROP endereço CASCADE;
3 Manipulação dos dados em SQL
Em SQL, existem três comandos para podem ser utilizados para modificar os dados do banco de dados: INSERT (incluir),
DELETE (excluir) e UPDATE (atualizar).
3.1 Comando INSERT
Em seu modo mais simples, o comando INSERT é utilizado para adicionar uma única tupla a uma relação. Deve-se especificar
o nome da relação e uma lista de valores. Os valores devem ser relacionados na mesma ordem no qual os atributos
correspondentes foram especificados no comando CREATE TABLE. Caso não se deseje inserir os valores de todos os atributos,
pode-se especificar explicitamente os nomes dos atributos.
Exemplo 6 Incluir a empregada Elisa Maria, com código 5, salário de R$ 1000,00, casada e locada ao departamento 10.
INSERT INTO Empregado
VALUES (5, ‘Elisa Maria’, 1000, ‘F’, ‘C’, 10)
Exemplo 7 Incluir o empregado José Carlos, com código 6 e locado ao departamento 10.
INSERT INTO Empregado (codEmpr, nome, codDepto)
VALUES (6, ‘José Carlos’, 10)
3.2 Comando DELETE
O comando DELETE remove tuplas de uma relação. Ele possui a cláusula WHERE para selecionar as tuplas a serem excluídas.
Se a cláusula WHERE for omitida, todas as tuplas da relação serão excluídas, entretanto, a tabela permanecerá no banco de
dados como uma tabela vazia (deve-se utilizar o comando DROP TABLE remover completamente a tabela).
Exemplo 8 Exclua todos os empregados que ganham menos de R$500,00 e estão vinculados ao departamento 10.
DELETE FROM Empregado
WHERE salário < 500
3.3 Comando UPDATE
O comando UPDATE é utilizado para modificar valores de atributos de uma ou mais tuplas selecionadas. Como no comando
DELETE, uma cláusula WHERE no comando UPDATE seleciona as tuplas a serem modificadas. A cláusula SET especifica os
atributos e os seus novos valores.
3
4. Exemplo 9 Conceder um aumento de 10% para todos os empregados do departamento 10.
UPDATE Empregado
SET salário = salário * 1.1
WHERE codDepto = 10
4 Consultas em SQL
A SQL possui uma instrução básica para recuperar informações de um banco de dados: a instrução SELECT.
Observação: existe uma importante diferença entre a SQL e o modelo relacional formal discutido no curso: a SQL permite
que uma tabela (relação) possua duas ou mais tuplas idênticas em todos os seus valores de atributos. Portanto, em geral,
uma tabela em SQL não é um conjunto de tuplas (porque um conjunto de tuplas não permite dois membros idênticos), mas
sim um multiconjunto de tuplas. Para garantir que uma relação SQL seja um conjunto de tuplas deve-se declarar uma
restrição de chave ou utilizar a opção DISTINCT (descrita posteriormente) com a instrução SELECT.
4.1 O comando SELECT
O comando SELECT é composto por várias cláusulas. Porém apenas as cláusulas SELECT e FROM são obrigatórias. As demais
poderão ser utilizadas de acordo com a necessidade e na ordem apresentada a seguir1:
SELECT [DISTINCT|ALL] lista de atributos a serem retornados
FROM lista de tabelas
[ WHERE condição de linha ]
[ GROUP BY lista atributos de agrupamento ]
[ HAVING condição de agrupamento ]
[ ORDER BY lista de atributos de ordenação [ASC|DESC] ]
Onde:
SELECT – lista os atributos ou funções a serem recuperadas. Como default, lista todos os valores (cláusula ALL), mas
pode listar apenas os valores diferentes (cláusula DISTINCT);
FROM – especifica todas as tabelas necessárias na consulta;
WHERE – especifica as condições para seleção de tuplas dessas relações, incluindo condições de junção;
GROUP BY – especifica atributos de agrupamento;
HAVING – especifica uma condição nos grupos sendo selecionados (em vez de nas tuplas individuais, como ocorre no
WHERE);
ORDER BY – especifica a ordem de exibição do resultado de uma consulta; pode ser ascendente (ASC) ou decrescente
(DESC).
Exemplo 10 Recupere os salários dos empregados casados (C) do departamento com código igual a 3.
SELECT salário
FROM Empregado
WHERE codDepto = 3 AND estadoCivil = ‘C’;
Esta consulta envolve somente a relação Empregado que é listada na cláusula FROM. A consulta seleciona as tuplas de
Empregado que satisfazem a condição da cláusula WHERE, e então projeta o resultado do atributo salário, listado na cláusula
SELECT. Essa operação é semelhante à seguinte operação da álgebra relacional – exceto pelo fato de que linhas duplicadas,
caso haja alguma, não seriam eliminadas com o comando SELECT:
π( σ(Empregado) )
codDepto = 3 e estadoCivil = ‘C’
salário
Portanto, uma simples consulta em SQL, com um único nome de relação na cláusula FROM, é semelhante a um par
SELECIONAR-PROJETAR de operações da álgebra relacional. A cláusula SELECT da SQL especifica os atributos de projeção e a
cláusula WHERE especifica a condição de seleção. A única diferença é que na consulta em SQL pode-se obter tuplas duplicadas
no resultado da consulta, porque a restrição de que a relação seja um conjunto não é imposta.
4.1.1 Lidando com nomes de atributos ambíguos
Na SQL, o mesmo nome pode ser utilizado para dois (ou mais) atributos, contanto que os atributos estejam em diferentes
tabelas. Se uma consulta se referir a dois ou mais atributos com o mesmo nome, deve-se qualificar o nome do atributo com o
nome da tabela para evitar ambigüidade. Isto é realizado colocando-se o nome da tabela antes do nome do atributo e
separando os dois através de um ponto.
1
As cláusulas entre colchetes são opcionais. As cláusulas separadas por | são exclusivas, ou seja, apenas uma das duas pode estar presente no
comando.
4
5. Exemplo 11 Recupere o nome dos empregados que trabalham no departamento Pessoal.
SELECT Empregado.nome
FROM Empregado, Departamento
WHERE Empregado.codDepto = Departamento.codDepto AND Departamento.nome = ‘Pessoal’;
4.1.2 Junções
O Exemplo 11 (acima) além de apresentar o tratamento de atributos com o mesmo nome exemplifica uma junção entre duas
tabelas. Esse comando SQL é corresponde à seqüência de operações PRODUTO CARTESIANO-SELECIONAR-PROJETAR (ou às
operações JUNTAR-PROJETAR) da álgebra relacional.
Em SQL, sempre é feito o produto cartesiano2 entre todas as tabelas colocadas na cláusula FROM. Por isso, para eliminar as
linhas sem significado, é necessário se colocar a condição de junção entre tabelas na cláusula WHERE (no Exemplo 11, a
condição de junção é Empregado.codDepto = Departamento.codDepto, já a condição Departamento.nome = ‘Pessoal’ é
chamada de condição de seleção).
Exemplo 12 Recupere o nome do departamento em que a Ane trabalha.
SELECT Departamento.nome
FROM Empregado, Departamento
WHERE Empregado.codDepto = Departamento.codDepto AND Empregado.nome = ‘Ane’;
4.1.3 Renomeando atributos e tabelas
Pode-se utilizar a palavra-chave AS para renomear atributos e tabelas, conforme apresentado no Exemplo 13.
Exemplo 13 Recupere o salário dos empregados que trabalham nos departamentos com orçamento maior que R$
20.000,00.
SELECT E.salário AS salárioDosEmpregados
FROM Empregado AS E, Departamento AS D
WHERE E.codDepto = D.codDepto AND D.orçamento > 20000;
Neste exemplo, o atributo a ser retornado salário foi renomeado para salárioDosEmpregados e as tabelas Empregado e
Departamento foram renomeadas para E e D, respectivamente.
Uma vez que uma determinada tabela tenha sido renomeada, não é possível mais utilizar o nome antigo na consulta. É
importante ressaltar que, a renomeação das tabelas e dos campos só é válida no contexto do comando SQL onde foi feita a
renomeação.
4.1.4 Cláusula WHERE não especificada
A falta de uma cláusula WHERE indica que não há uma condição na seleção de tuplas. Portanto, todas as tuplas da relação
especificada na cláusula FROM estão qualificadas e serão selecionadas para o resultado da consulta. Isso é equivalente à
condição WHERE TRUE, que significa que a condição é verdadeira para todas as linhas da tabela. Se mais de uma relação
estiver especificada na cláusula FROM e não existir nenhuma cláusula WHERE, então o produto cartesiano dessas relações é
selecionado.
É extremamente importante especificar todas as condições de seleção e de junção na cláusula WHERE. Se alguma dessas
condições for ignorada, isso pode resultar em relações incorretas e muito grandes.
Exemplo 14 Selecione todos os nomes de todos os empregados.
SELECT nome
FROM Empregados
4.1.5 Uso do asterisco (*)
Para recuperar todos os valores de todos os atributos das tuplas selecionadas, não é necessário relacionar explicitamente na
SQL o nome dos atributos. Para isso pode-se especificar um asterisco (*) na cláusula SELECT, que corresponde a todos os
atributos.
2
Suponha os conjuntos A = (X, Y, Z) e B = (X, W, Z). O produto cartesiano entre A e B será o conjunto (XX, XW, XZ, YX, YW, YZ, ZX, ZW, ZZ).
Ou seja, cada elemento do conjunto o A é associado a cada elemento do conjunto B.
5
6. Exemplo 15 Todos os atributos dos empregados que trabalham no departamento de código 1.
SELECT *
FROM Empregado
WHERE codDepto = 1;
4.2 ALL x DISTINCT
Como mencionado, a SQL geralmente trata uma tabela não como um conjunto mas como um multiconjunto; tuplas
duplicadas podem aparecer mais do que uma vez em uma tabela e no resultado de uma consulta. A SQL não elimina
automaticamente tuplas duplicadas no resultado das consultas pelos seguintes motivos:
a eliminação de linhas duplicadas é uma operação onerosa (um modo de implementá-la é primeiramente ordenar as
tuplas e, então, eliminar as duplicatas);
o usuário pode desejar ver as tuplas duplicadas no resultado de uma consulta;
quando uma função de agregação (ainda serão apresentadas) é aplicada às tuplas, na maioria dos casos, não é desejado
eliminar as duplicatas.
Se for desejado, efetivamente, eliminar as tuplas duplicadas do resultado de uma consulta na SQL, deve-se utilizar a palavra-
chave DISTINCT na cláusula SELECT. Isso significa que somente tuplas diferentes devem permanecer no resultado. Uma
consulta com SELECT DISTINCT elimina duplicatas, enquanto uma consulta com SELECT ALL não elimina (não especificar
SELECT com ALL ou com DISTINCT é equivalente a SELECT ALL).
Exemplo 16 Recupere o salário de todos os empregados.
SELECT ALL salário ou SELECT salário
FROM Empregado; FROM Empregado;
Exemplo 17 Recupere todos os valores diferentes de salários.
SELECT DISTINCT salário
FROM Empregado;
4.2.1 SQL x Álgebra relacional
Observe a seguinte operação da álgebra relacional:
π( σ(Empregado) )
codDepto = 3 e estadoCivil = ‘C’
salário
Exemplo 18 Escreva o comando SQL que sempre retorna os mesmos dados da operação da álgebra relacional abaixo.
SELECT DISTINCT salário
FROM Empregado
WHERE codDepto = 3 AND estadoCivil = ‘C’;
Repare que se a consulta SQL for escrita sem o DISTINCT não é possível garantir que os dados retornados serão sempre os
mesmos.
4.3 Operador IS
O valor NULL representa a ausência de valor, ou seja, ele pode representar que um valor está ausente, não foi definido ou
não é aplicado. Assim o NULL não é igual, não é diferente, não é menor do que qualquer outro valor, inclusive outro NULL.
Portanto não se pode utilizar os operadores convencionais de comparação (=, <>, <, >, ...)
Assim, para comparar um atributo com NULL, a SQL utiliza o operador IS, para saber se o atributo é NULL, ou IS NOT, para
saber se o atributo possui um valor.
Exemplo 19 Recupere dos empregados que não indicaram seu estado civil.
SELECT nome
FROM Empregado
WHERE estadoCivil IS NULL;
Exemplo 20 Recupere dos empregados que indicaram seu estado civil.
SELECT nome
FROM Empregado
WHERE estadoCivil IS NOT NULL;
4.4 Cláusula ORDER BY
A SQL permite ao usuário ordenar as tuplas no resultado de uma consulta pelos valores de um ou mais atributos. Para isso,
utiliza-se a cláusula ORDER BY.
6
7. Exemplo 21 Recupere uma lista dos empregados ordenados pelo número do departamento e, dentro de cada departamento,
ordenados por nome.
SELECT nome, codDepto ou SELECT nome, codDepto
FROM Empregado FROM Empregado
ORDER BY codDepto, nome ORDER BY codDepto, nome DESC
A ordem padrão é a ascendente de valores, mas pode-se especificar a palavra chave DESC se for desejado uma ordem
descendente de valores.
Exemplo 22 Recupere todos os empregados casados ordenados decrescentemente por salário.
SELECT *
FROM Empregado
WHERE estadoCivil = ‘C’
ORDER BY salário DESC
4.5 Funções de agregação
As funções de agregação são:
COUNT(*) – número de tuplas (ou valores)
SUM(coluna) – soma de valores de uma determinada coluna
MAX(coluna) – maior valor em uma determinada coluna
MIN(coluna) – menor valor em uma determinada coluna
AVG(coluna) – média dos valores de uma determinada coluna
As funções de agregação podem aparecer apenas na cláusula SELECT ou na cláusula HAVING (vista futuramente). NÃO é
possível utilizar uma função de agregação na cláusula FROM, nem na cláusula WHERE.
Exemplo 23 Retorne, respectivamente, a soma dos salários de todos os empregados, o maior salário, o menor salário e o
salário médio.
SELECT SUM(salário), MAX(salário), MIN(salário), AVG(salário)
FROM Empregado;
A função de agregação COUNT pode ser usada de duas formas: COUNT(*) ou COUNT(coluna). Nos dois casos será contado
o número de tuplas. A diferença é que no segundo caso se algum valor da coluna especificada for NULL, a tupla não será
computada. Além disso, é possível utilizar a cláusula DISTINCT em combinação com o COUNT para retornar apenas o
número de valores diferentes (Exemplo 25).
Exemplo 24 Retorne o número total de empregados do departamento 20.
SELECT COUNT(*)
FROM Empregado
WHERE codDepto = 20;
Exemplo 25 Retorne o número de valores diferentes de salário no banco de dados.
SELECT COUNT( DISTINCT salário )
FROM Empregado;
4.6 Cláusula GROUP BY
As funções de agregação (vistas na seção 4.5) podem ser aplicadas a grupos de linhas de uma tabela, ou invés de a todo o
conjunto que satisfaça a condição. Por exemplo, suponha que se deseje encontrar o salário médio dos empregados para cada
um dos departamentos. Neste casos, é necessário agrupar as tuplas que possuem o mesmo valor para o atributo código de
departamento (atributo de agrupamento) e, então, aplicar a função de agregação para cada um desses grupos,
independentemente. A SQL possui a cláusula GROUP BY para esta finalidade.
A cláusula GROUP BY especifica os atributos de agrupamento. Apenas os atributos de agrupamento e funções de agregação
podem aparecer na cláusula SELECT.
Exemplo 26 Para cada departamento, recupera média de salários dos seus empregados.
SELECT codDepto, AVG(salário)
FROM Empregado
GROUP BY codDepto;
A cláusula GROUP BY pode ser utilizada em conjunto com a cláusula HAVING, caso deseje-se recuperar apenas os grupos que
satisfaçam uma determinada condição. Enquanto a cláusula WHERE é utilizada na aplicação de condições para cada uma das
linhas da tabela, a cláusula HAVING é utilizada para selecionar grupos de linhas que satisfaçam a condição especificada.
7
8. Exemplo 27 Recupere a média de salário dos departamentos que possuem mais 10 empregados.
SELECT codDepto, AVG(salário)
FROM Empregrado
GROUP BY codDepto
HAVING COUNT(*) > 10;
4.7 Operador IN
O operador IN possibilita a utilização de conjuntos explícitos de valores.
Exemplo 28 Recupere o nome d os empregados cujo estado civil é casado, solteiro ou viúvo.
SELECT nome
FROM empregado
WHERE estaoCivil IN (‘C’,‘S’,‘V’)
4.8 Tabelas como conjuntos
4.8.1 UNION
O operador UNION é o mecanismo disponibilizado pela SLQ para fazer a união de conjuntos. Diferentemente do que acontece
com o comando SELECT, linhas duplicadas são eliminadas do resultado de uma união a não ser que o operador UNION inclua
explicitamente o quantificador ALL. Qualquer número de SELECT’s pode ser unido pelo UNION.
Exemplo 29 O código dos departamentos com orçamento maior que R$ 10.000,00 juntamente com o código dos
departamentos que possuem empregados que ganham menos de R& 1.000,00.
( SELECT codDepto
FROM Departamento
WHERE orcamento > 10000 )
UNION
( SELECT codDepto
FROM Empregado
WHERE salario < 1000 )
Exemplo 30 Idem a anterior, sem eliminar os códigos de departamento que satisfazem as duas condições.
( SELECT codDepto
FROM Departamento
WHERE orcamento > 10000 )
UNION ALL
( SELECT codDepto
FROM Empregado
WHERE salario < 1000 )
Exemplo 31 Idem a anterior, indicando qual das duas condições foi atendida para a inclusão do elemento no resultado final.
( SELECT codDepto, ‘Orçamento maior’ AS comentario
FROM Departamento
WHERE orcamento > 10000 )
UNION
( SELECT codDepto, ‘Salário menor’ AS comentario
FROM Empregado
WHERE salario < 1000 )
4.8.2 INTERSECT
O operador INTERSECT é o mecanismo disponibilizado pela SLQ para fazer a interseção de conjuntos. De forma semelhante ao
UNION, por default as linhas semelhantes são eliminadas. Para obter todas as repetições deve-se usar INTERSECT ALL.
8
9. Exemplo 32 O código dos departamentos com orçamento maior que R$ 10.000,00 e que possuem empregados que ganham
menos de R& 1.000,00.
( SELECT codDepto
FROM Departamento
WHERE orcamento > 10000 )
INTERSECT
( SELECT codDepto
FROM Empregado
WHERE salario < 1000 )
4.8.3 EXCEPT
O operador EXCEPT é o mecanismo disponibilizado pela SLQ para se fazer a operação de diferença de conjuntos. Não
esquecendo que, para manter todas as repetições, deve-se usar EXCEPT ALL.
Exemplo 33 O código dos departamentos com orçamento maior que R$ 10.000,00 mas que possuem não empregados que
ganham menos de R& 1.000,00.
( SELECT codDepto
FROM Departamento
WHERE orcamento > 10000 )
EXCEPT
( SELECT codDepto
FROM Empregado
WHERE salario < 1000 )
4.9 Consultas aninhadas
Os exemplos de consultas aninhadas serão feitos sobre as seguintes tabelas:
Vendedor ( codVendedor, nome, idade, comissão )
Produto ( codProduto, nome, preço )
Venda ( codVendedor, codProduto, data, qtd )
4.9.1 Subconsultas
Algumas consultas requerem que valores existentes no banco de dados sejam recuperados e, em seguida, utilizados numa
condição de comparação. Essas consultas podem ser formuladas utilizando subconsultas. Subconsultas são blocos completos
SELECT...FROM...WHERE dentro da cláusula WHERE de outra consulta (chamada de consulta externa).
9
10. Exemplo 34 O nome dos vendedores que estão acima da média de idade dos vendedores
SELECT nome
FROM Vendedores
WHERE idade > (SELECT AVG(idade)
FROM Vendedores)
Exemplo 35 O número dos vendedores que venderam os mesmos produtos que o vendedor de código 10.
SELECT DISTINCT vendedor
FROM Vendas
WHERE vendedor <> 10
AND produto IN (SELECT DISTINCT produto
FROM Vendas
WHERE vendedor = 10)
----Ou (sem subconsulta)
SELECT DISTINCT V1.vendedor
FROM Vendas V1, Vendas V2
WHERE V1.vendedor <> 10
AND V1.produto = V2.produto
AND V2.vendedor = 10
Exemplo 36 O nome dos vendedores que venderam os mesmos produtos que a Ane (com subconsulta)
SELECT DISTINCT nome
FROM Vendedores, Vendas
WHERE Vendedores.vendedor = Vendas.vendedor
AND nome <> 'Ane'
AND produto IN (SELECT DISTINCT produto
FROM Vendedores, Vendas
WHERE vendedores.vendedor = vendas.vendedor
AND nome = 'Ane')
Observação:
Além do operador IN, outros operadores de comparação podem ser utilizados para comparar um único valor i a um conjunto
de valores V. A palavra-chave SOME pode ser combinada com os operadores =, <, >, <=, >=, <>. O operador > SOME
retorna true se o valor i for maior que algum valor no conjunto V e assim, respectivamente, para os outros operadores.
Portanto, = SOME é idêntico a IN, porém <> SOME NÃO é a mesma coisa que NOT IN.
A palavra-chave ALL também pode ser combinada com cada um desses operadores (=, <, >, <=, >=, <>). Por exemplo, a
condição de comparação i > ALL V retorna true se o valor i for maior que todos os valores do conjunto V.
Exemplo 37 O nome dos vendedores que sejam mais velhos do que pelo menos um vendedor com comissão igual a 8
SELECT nome
FROM Vendedores
WHERE idade > SOME (SELECT idade
FROM Vendedores
WHERE comissao = 8)
Exemplo 38 O nome dos vendedores que sejam mais velhos do que todos os vendedores com comissão igual a 8
SELECT nome
FROM Vendedores
WHERE idade > ALL (SELECT idade
FROM Vendedores
WHERE comissao = 8)
4.9.2 Subconsultas correlacionadas e Função EXISTS
Sempre que uma condição na cláusula WHERE de uma subconsulta faz referência a algum atributo de uma relação declarada
na consulta externa, diz-se que as duas consultas são correlacionadas. Assim, a subconsulta é avaliada uma vez para cada
tupla da consulta externa.
A função EXISTS é utilizada para verificar se o resultado de uma subconsulta correlacionada é vazio (não possui nenhuma
tupla) ou não.
Observação: Em geral, uma subconsulta pode ser expressa como uma consulta de um único bloco.
10
11. Exemplo 39 O nome dos vendedores que venderam o produto 1010.
SELECT nome
FROM Vendedores
WHERE EXISTS (SELECT *
FROM Vendas
WHERE Vendedores.vendedor = Vendas.vendedor
AND produto = 1010)
----Ou
SELECT nome
FROM Vendedores, Vendas
WHERE Vendedores.vendedor = Vendas.vendedor
AND produto = 1010
Exemplo 40 O nome dos produtos que não foram vendidos no dia 02/08/2003
SELECT nome
FROM Produtos
WHERE NOT EXISTS (SELECT *
FROM Vendas
WHERE Produtos.produto = Vendas.produto
AND Vendas.data = ‘02/08/2003’)
Exemplo 41 ERRADO: O nome dos produtos que não foram vendidos no dia 02/08/2003
SELECT nome
FROM Produtos
WHERE EXISTS (SELECT *
FROM Vendas
WHERE Produtos.produto = Vendas.produto
AND Vendas.data <> ‘02/08/2003’)
ATENÇÃO: O resultado da consulta Exemplo 40 é DIFERENTE do resultado da consulta Exemplo 41.
A consulta Exemplo 40 está certa! Ela só retornará os produtos que não foram vendidos no dia 02/08/2003, o que inclui os
produtos que não foram vendidos em dia nenhum.
Já a consulta Exemplo 41 não satisfaz o que foi pedido. Ela NÃO retornará os produtos que não foram vendidos em dia
nenhum. Além disso, serão retornados os produtos que tiverem sido vendidos em outro dia além do dia 02/08/2003.
Exemplo 42 Os produtos que não foram vendidos
SELECT *
FROM Produtos
WHERE NOT EXISTS
(SELECT *
FROM Vendas
WHERE Vendas.produto = Produtos.produto)
Exemplo 43 O nome dos vendedores que venderam todos os produtos
SELECT nome
FROM Vendedores
WHERE NOT EXISTS
(SELECT *
FROM Produtos
WHERE NOT EXISTS
(SELECT *
FROM Vendas
WHERE Vendas.vendedor = Vendedores.vendedor
AND Vendas.produto = Produtos.produto ));
5 Visões (views)
Visões (ou views) são tabelas ‘virtuais’ derivadas de outras tabelas ou visões. Uma visão possui um nome, uma lista de
nomes de atributos e uma consulta para especificar o conteúdo da visão.
Uma visão está sempre atualizada. Se as tuplas nas tabelas de base nas quais a visão é definida forem modificadas, a visão
reflete automaticamente estas atualizações. Isso porque a visão não, necessariamente, armazena os dados fisicamente.
11
12. Pode-se imaginar uma visão como um modo de especificar uma tabela à qual precisa-se para fazer referências com
freqüência, embora ela possa não existir fisicamente. Por exemplo, supondo que freqüentemente seja necessário recuperar o
nome do empregado e os nomes do departamento em que ele trabalha. Então pode-se criar uma visão sobre estes dados, ou
invés de escrever a junção toda vez que ela for necessária.
O comando para criação de uma visão o CREATE VIEW.
Exemplo 44 Criar uma visão que retorne o código e o nome do empregados com o nome dos departamentos a que eles
estão alocados.
CREATE VIEW TrabalhaEm AS
SELECT codEmpr, Empregado.nome, Departamento.nome
FROM Empregado, Departamento
WHERE Empregado.codDepto = Departamento.codDepto
Depois de criada uma visão, ela pode ser usada, por exemplo, em um comando SQL como se fosse uma tabela.
SELECT *
FROM TrabalhaEm
WHERE codEmpr = 1;
12