Linguagem de Consulta Estruturada (SQL)



Documentos relacionados
UNIVERSIDADE VEIGA DE ALMEIDA CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO CURSO SUPERIOR DE TECNOLOGIA EM PROCESSAMENTO DE DADOS BANCO DE DADOS

Comandos de Manipulação

Comandos DDL. id_modulo = id_m odulo

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

Linguagem SQL Sub-linguagem DDL

SQL (Structured Query Language)

LINGUAGEM SQL. SQL Server 2008 Comandos iniciais

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

Structured Query Language (SQL)

EXERCÍCIOS PRÁTICOS. Banco de Dados

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

Programação SQL. Introdução

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

PHP INTEGRAÇÃO COM MYSQL PARTE 1

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

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

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

Linguagem SQL. Comandos Básicos

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

SQL. Prof. Márcio Bueno.

Programação SQL. Manipulação de Dados. DML Data Manipulation Language

Linguagem de Consulta - SQL

BANCO DE DADOS Parte 4

EXEMPLOS DE COMANDOS NO SQL SERVER

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

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

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

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

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

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

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

Banco de Dados. Prof. Antonio

Structured Query Language (SQL) Ambiente Simplificado de um SGBD

SQL Structured Query Language

SQL - Criação de Tabelas

O que são Bancos de Dados?

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

Introdução ao SQL. Aécio Costa

Structured Query Language (SQL) Aula Prática

Banco de Dados. Structured Query Language SQL. Prof. Walteno Martins Parreira Jr 1.

A linguagem SQL

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

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

Álgebra Relacional. Conjunto de operações que usa uma ou duas relações como entrada e gera uma relação de saída. Operações básicas:

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

Banco de dados. Linguagens de Banco de Dados II. Wedson Quintanilha da Silva -

Definida pelo American National Standard Institute (ANSI) em 1986

SQL. Autor: Renata Viegas

Programação WEB II. PHP e Banco de Dados. progweb2@thiagomiranda.net. Thiago Miranda dos Santos Souza

Linguagem de Consulta Estruturada SQL- DML

SQL (Linguagem de Consulta Estruturada)

SQL BÁSICO. Introdução. Prof. Suelane Garcia. Linguagem SQL (Structured Query Language)

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

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

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

Banco de Dados I. Linguagem de Consulta (parte II) Recuperando Dados de Várias Tabelas (JOINS)

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

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

SQL DDL. Frederico D. Bortoloti

SQL (Structured Query Language)

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

SQL DML. Frederico D. Bortoloti

1. Domínio dos Atributos

SQL (Structured Query Language)

SQL (Structured Query Language)

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

Banco de Dados. Um momento crucial na organização dos dados é a forma com que cadastramos estes dados, a estrutura de armazenamento que criamos.

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

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

Tarefa Orientada 16 Vistas

Descrição Tinyint[(M)] Inteiro pequeno. Varia de 128 até +127

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

4.6. SQL - Structured Query Language

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

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

Introdução ao SQL. O que é SQL?

Linguagem SQL Parte I

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

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

DML - SELECT Agrupando Dados

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

SQL UMA ABORDAGEM INTERESSANTE

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

Disciplina: Unidade V: Prof.: Período:

Linguagem SQL (Parte I)

NOME SEXO CPF NASCIMENTO SALARIO

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

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

S Q L 15/01/2013. Enfoques de SQL. Enfoques de SQL SQL. Usos de SQL. SQL - Origem/Histórico. Gerenciamento de Dados e Informação

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

Banco de Dados. Maurício Edgar Stivanello

Tarefa Orientada 15 Manipulação de dados

Consistem num conjunto de apontadores para instâncias especificas de cada relação.

Curso PHP Aula 08. Bruno Falcão

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

Operação de União JOIN

Linguagem de Banco de Dados DML Exercícios

AULA 6 INTEGRIDADOS DOS DADOS - CRIANDO RESTRIÇÕES

Banco de Dados II. Introdução Revisão - normalização -modelagem - sql básico

Profº Aldo Rocha. Banco de Dados

Transcrição:

Linguagem de Consulta Estruturada (SQL) Conceitos sobre a versão ANSI da SQL, a sublinguagem de definição de dados (DDL) e a sublinguagem de manipulação de dados (DML) Prof. Flavio Augusto C. Correia 1

Conceitos sobre a versão ANSI da SQL Norma ANSI criada em 1986 (revista em 1989 e 1992). A linguagem SQL tem duas vertentes: DDL (Data Definition Language) e DML (Data Manipulation Language). Na vertente DDL o SQL possui um conjunto de comandos para criação e alteração de tabelas, chaves estrangeiras, regras de integridade referencial e views. A vertente DML é uma implementação da Álgebra Relacional, e.g., permite efectuar interrogações a uma base de dados, bem como alterar, anular ou inserir registos em tabelas. Prof. Flavio Augusto C. Correia 2

Create Table Criar a estrutura de uma tabela(arquivo) definido as colunas (campos) e as chaves primárias e estrangeiras existentes. Sintaxe: Create Table <nome-tabela> (<nome-coluna> <tipo-do-dado> [Not Null]) Primary Key (nome-coluna-chave) Foreign Key (nome-coluna-chave-estrangeira) References (nome-tabela-pai) On Delete [Restrict] [Cascade] [Set Null] Onde: nome-tabela - Representa o nome da tabela que será criada. nome-coluna - Representa o nome da coluna que será criada. A definição das colunas de uma tabela é feita relacionando-as uma após a outra. tipo-do-dado - Cláusula que define o tipo e tamanho dos campos definidos para a tabela. Os tipos de dados mais comuns serão definidos mais à frente. Not Null - Exige o preenchimento do campo, ou seja, no momento da inclusão é obrigatório que possua um conteúdo. Prof. Flavio Augusto C. Correia 3

Create Table Primary Key (nome-coluna-chave) - Definir para o banco de dados a coluna que será a chave primária da tabela. Caso ela tenha mais de um coluna como chave, elas deverão ser relacionadas entre os parênteses. Foreign Key (nome-coluna-chave-estrangeira) References (nome-tabela-pai) - Definir para o banco de dados as colunas que são chaves estrangeiras, ou seja, os campos que são chaves primárias de outras tabelas. Na opção References deve ser especificado a tabela na qual a coluna é a chave primária. On Delete / On Update - Esta opção especifica os procedimentos que devem ser feitos pelo SGBD quando houver uma exclusão de um registro ou atualização do campo de referência na tabela pai quando existe um registro correspondente nas tabelas filhas. As opções disponíveis são: 1) Restrict - Opção default. Esta opção não permite a exclusão na tabela pai de um registro cuja chave primária exista em alguma tabela filha. 2) Cascade - Esta opção realiza a exclusão em todas as tabelas filhas que possua o valor da chave que será excluída na tabela pai. 3) Set Null - Esta opção atribui o valor NULO nas colunas das tabelas filhas que contenha o valor da chave que será excluída na tabela pai. Prof. Flavio Augusto C. Correia 4

Create Table - Exemplo create table Dept ( DepNume integer not null, DepNome char(20) not null, DepLoca char(20) not null, DepOrca integer, primary key (DepNume) ); create table Emp ( EmpNume integer not null, EmpNome char(30) not null, EmpGere integer, EmpServ char(20), DepNume integer not null, EmpAdmi date not null, EmpSala integer, EmpComi integer, primary key (EmpNume), foreign key (DepNume) references Dept on delete restrict on update cascade ); Prof. Flavio Augusto C. Correia 5

Alter Table Alterar a estrutura de uma tabela acrescentando, alterando, retirando e alterando nomes, formatos das colunas e a integridade referencial definidas em uma determinada tabela. Sintaxe: Alter Table <nome-tabela> Drop <nome-coluna> Add <nome-coluna> <tipo-do-dado> [Not Null] Rename <nome-coluna> <novo-nome-coluna> Rename Table <novo-nome-tabela> Modify <nome-coluna> <tipo-do-dado> [Null] [Not Null] Add Primary key <nome-coluna> Drop primary Key <nome-coluna> Add Foreign Key (nome-coluna-chave-estrangeira) References (nome-tabela-pai) On Delete [Restrict] [Cascade] [Set Null] Drop Foreign Key (nome-coluna-chave-estrangeira) References (nome-tabela-pai) Prof. Flavio Augusto C. Correia 6

onde: Alter Table nome-tabela - Representa o nome da tabela que será atualizada. nome-coluna - Representa o nome da coluna que será criada. tipo-do-dado - Cláusula que define o tipo e tamanho dos campos definidos para a tabela. Drop <nome-coluna> - Realiza a retirada da coluna especificada na estrutura da tabela. Add <nome-coluna> <tipo-do-dado> - Realiza a inclusão da coluna especificada na estrutura da tabela. Na coluna correspondente a este campo nos registros já existentes será preenchido o valor Null (Nulo). A definição Not Null e semelhante à do comando Create Table. Rename <nome-coluna> <novo-nome-coluna> - Realiza a troca do nome da coluna especificada. Rename Table <novo-nome-tabela> - Realiza a troca do nome da tabela especificada. Modify <nome-coluna> <tipo-do-dado> - Permite a alteração na característica da coluna especificada. Prof. Flavio Augusto C. Correia 7

Drop Table Deletar a estrutura e os dados existentes em uma tabela. Após a execução deste comando estarão deletados todos dados, estrutura e índices de acessos que estejam a ela associados. Sintaxe: Drop Table <nome-tabela> onde: nome-tabela - Representa o nome da tabela que será deletada. Prof. Flavio Augusto C. Correia 8

Tipos de dados Texto Char [(n)] (equivalente a Varchar (n)) Long Varchar - infinitos caracteres Text eq. a Long Varchar mas admite NULL Boleano Bit [0, 1] Data Date Time TimeStamp (data e hora) Número Tinyint [0 255] Smallint [-+ 32,767] ou UNSIGNED [0-65535] Integer [-+ 2,147,483,6479] Double [ grande] Decimal (inteiros[, decimais]) Prof. Flavio Augusto C. Correia 9

Valores nulos A SQL admite o conceito de valor de dado nulo. Na realidade qualquer coluna pode conter valores nulos, a menos que a definição da mesma na instrução CRATE TABLE especifique claramente NOT NULL. Nulo é um valor especial, usado para representar valor desconhecido ou valor nãoaplicável. Não é a mesma coisa que espaços vazios ou zero. Por exemplo, um registro de expedição pode conter um valor QTY nulo ( sabemos que a expedição existe, mas desconhecemos a quantidade expedida); ou então, um registro de fornecedor conteria um valor STATUS nulo (talvez STATUS não se aplique a fornecedores de San Jose, por alguma razão); Prof. Flavio Augusto C. Correia 10

Exercicio - Notas de Avaliações 1 Disciplina Sigla Designação Ano Lectivo 1 * 1 1 * 1 * Avaliação Tipo Avaliação Aluno Número Nome Morada 1 * Nota Nota Licenciatura Sigla Designação 1 * 1 * Frequencia Data Disciplina (Sigla, Designacao, Ano Letivo, Sigla_Licenciat) Frequencia (Sigla,Data) Nota (Sigla, Data, NumAluno, Nota) Aluno (Numero, Nome, Morada) Avaliacao(Sigla,Numero,tipoAvaliacao) Licenciatura(Sigla,,Designacao) Prof. Flavio Augusto C. Correia 11

Exercicio - Notas de Avaliações Cliente Codigo Nome 1 1 * Pedido Numero Data 1 * 1 * Produto Codigo descricao Vlr_unitario Unidade Client (Codigo, Nome) Pedido (Numero, Data, Codigo) items(numero, Codigo) Produto (Codigo, descricao, Vlr_unitario, Unidade) Prof. Flavio Augusto C. Correia 12

Insert Into Permite a inserção de informações em uma tabela. O número de valores informados sempre deve ser o mesmo que o número de atributos informados. Sintaxe: Insert Into <tabela> (<atributo>, <atributo>) Values (<valor>, <valor>) Exemplo: Cliente Código Nome Paula Marcia Carlos / inserir um cliente na tabela de cliente / Insert Into cliente (codigo, nome) values ( 04, Pedro ) Prof. Flavio Augusto C. Correia 13

Update Permite a alteração de informações em uma tabela. Sintaxe: Update <tabela> Set <atributo> = <valor> Exemplo: Cliente Pedido Código nome Numero dt_entrega codigo Paula 100 10//20 Marcia 200 15//20 Carlos 300 17//20 / alterar o nome do cliente / Update cliente Set nome = Anderson / alterar o nome do cliente cujo código seja igual a / Update cliente Set nome = Jaqueline Where codigo = / alterar o nome do cliente cuja dt_entrega seja igual a 10//20 / Update cliente Set nome = Carla From pedido Where cliente.codigo = pedido.codigo and pedido.dt_entrega = 10//20 Prof. Flavio Augusto C. Correia 14

Permite a exclusão de registros em uma tabela. Sintaxe: Delete From <tabela> Delete Exemplo: Cliente Pedido Código nome Paula Marcia Carlos Numero 100 200 300 dt_entrega 10//20 15//20 17//20 codigo / exclui todos os clientes da tabela / Delete From cliente / exclui todos os clientes da tabela cujo nome seja igual a Paula / Delete From cliente Where nome = Paula / exclui todos os cliente cuja dt_entrega seja igual a 15//20 / Delete From cliente, pedido Where cliente.codigo = pedido.codigo and pedido.dt_entrega = 10//20 Prof. Flavio Augusto C. Correia 15

Select Selecionar informações armazenadas em uma ou mais tabelas. Sintaxe: Select <atributos> From <tabela> Exemplo: Produto descricao Queijo Chocolate unidade Kg Bar vlr_unitario 0,97 0,87 /listar todos os produtos da tabela produto/ / listar todos os produtos da tabela produto / Select descrição, unidade, vlr_unitário Select * Prof. Flavio Augusto C. Correia 16

Comparações na cláusula Where Operadores Relacionais = igual <> diferente < menor > maior <= menor ou igual >= maior ou igual Operadores Lógicos And e Or ou Not não Operadores Aritiméticos + soma - subtração * multiplic. / divisão ^ exponenc. Sintaxe: Select <atributo> From <tabela> Where <atributo> <operador> <valor> / listar todos os produtos da tabela produto cuja unidade seja igual a Kg / Select descrição, unidade, vlr_unitário Where unidade = Kg Prof. Flavio Augusto C. Correia 17

Comparações na cláusula Where Produto descricao Queijo Chocolate unidade Kg Bar vlr_unitario 0,97 0,87 / listar todos os produtos da tabela produto cujo vlr_unitário seja maior do que 0,90/ Select * Where vlr_unitário > 0,90 / listar todos os produtos da tabela produto cujo vlr_unitário seja menor do que 0,90 ou descricao seja igual a queijo / Select * Where vlr_unitário < 0,90 or descricao = queijo Prof. Flavio Augusto C. Correia 18

Between e Not Between Pesquisa um determinado atributo que esteja entre um intervalo de valores. Sintaxe: Select <atributo> From <tabela> Where <atributo> [between] [not between] <valor 1> and <valor 2> Exemplo: / listar todos os produtos da tabela produto cujo vlr_unitário esteja entre 0,00 e 1,00 / Select descrição, unidade, vlr_unitário Where vlr_unitário between 0,00 and 1,00 / listar todos os produtos da tabela produto cujo vlr_unitário não esteja entre 0,70 e 1,50 / Select descrição, unidade, vlr_unitário Where vlr_unitário not between 0,70 and 1,50 Prof. Flavio Augusto C. Correia 19

Like e Not Like Pesquisa um determinado atributo que seja do tipo CHAR e têm praticamente o mesmo funcionamento dos operadores = e <>. O operador LIKE ainda possui um símbolo de % (percentual), que permite a busca a partir de um pedaço de uma palavra. Sintaxe: Select <atributo> From <tabela> Where <atributo> [like] [not like] <valor 1> Exemplo: Produto Código Descricao Queijo Chocolate / listar todos os produtos da tabela produto cujo código seja como / Select codigo, descricao Where codigo like Prof. Flavio Augusto C. Correia 20

Like e Not Like Código Descricao Queijo Chocolate / listar todos os produtos da tabela produto cujo código não seja como / Select codigo, descricao Where codigo not like / listar todos os produtos da tabela produto cuja descricao seja como Qu / Select codigo, descricao Where descricao like ( Qu% ) / listar todos os produtos da tabela produto cuja descricao contenha os caracteres Qu / Select codigo, descricao Where descricao like ( %Qu% ) Prof. Flavio Augusto C. Correia 21

In e Not In Pesquisa um determinado atributo que seja contido ou não contidos no conjunto de valores. Estes operadores minimizam o uso dos operadores =, <>, AND e OR. Sintaxe: Select <atributo> From <tabela> Where <atributo> [in] [not in] <valor 1> Exemplo: Produto Código Descricao Queijo Chocolate / listar todos os produtos da tabela produto cujo código esteja em / Select codigo, descricao Where codigo in ( ) Prof. Flavio Augusto C. Correia 22

In e Not In Código Descricao Queijo Chocolate / listar todos os produtos da tabela produto cujo código esteja em e / Select codigo, descricao Where codigo in (, ) / listar todos os produtos da tabela produto cujo código não esteja em e / Select codigo, descricao Where codigo not in (, ) Prof. Flavio Augusto C. Correia 23

Sintaxe: Is Null e Is Not Null Select <atributo> From <tabela> Where <atributo> [is null] [is not null] Exemplo: Produto Código descricao Queijo Chocolate / listar todos os produtos da tabela produto cuja descricao seja nula / Select codigo, descricao Where descricao is null / listar todos os produtos da tabela produto cuja descricao não seja nula / Select codigo, descricao Where descricao is not null Prof. Flavio Augusto C. Correia 24

Ordenando os dados selecionados Order by Caracteriza a ordem de aparição da informação ASC ascendente ou DESC descendente, quando nenhuma das duas opções é informada a prioridade é do ASC. Sintaxe: Select <atributo> From <tabela> Order by <atributo> [ASC] [DESC] Exemplo: Produto codigo descricao Queijo Minas Chocolate Queijo Prato / listar todos os produtos da tabela produto ordenados por descricao ascendente / Select codigo, descricao Order by descricao / listar todos os produtos da tabela produto ordenado por descricao descendente e código ascendente/ Select codigo, descricao Order by descricao desc, codigo asc Prof. Flavio Augusto C. Correia 25

Realizando cálculos com campos selecionados Com o SQL podemos criar um campo que não pertença à tabela, e que seja fruto do cálculo sobre alguns campos da tabela. Exemplo: Produto Código descricao Queijo Minas valor 2,00 Chocolate 1,50 Queijo Prato 2,10 / calcular o valor dos produtos com um acréscimo de 5% / Select descricao, valor * 1,05 / calcular o valor dos produtos com um acréscimo de 5% e subtrair menos 1,00 / Select descricao, ((valor * 1,05) 1,00) Prof. Flavio Augusto C. Correia 26

Utilizando funções sobre conjuntos (Max e Min) Retorna o maior e o menor valor de um atributo dentro de toda a tabela. Sintaxe: Select Max(<atributo>) Select Min(<atributo>) Exemplo: Código Descrição Queijo Minas Valor 2,00 Produto Chocolate Queijo Prato 1,50 2,10 / selecionar o maior valor da tabela produto / Select Max(valor) / selecionar o menor valor da tabela produto / Select Min(valor) / selecionar o maior e o menor valor da tabela produto / Select Max(valor), Min(valor) Prof. Flavio Augusto C. Correia 27

Contando os registros - Count Retorna a quantidade de registros de uma tabela. Sintaxe: Select Count(<atributo>) From <tabela> Exemplo: Produto Código Descricao Queijo Minas Valor 2,00 Chocolate 1,50 Queijo Prato 2,10 / selecionar quantos registros possui a tabela produto / Select count(*) Prof. Flavio Augusto C. Correia 28

Utilizando a cláusula Distinct Normalmente, vários registros dentro de uma tabela podem conter os mesmos valores, com exceção da chave primária. Com isso, muitas consultas podem trazer informações erradas. A cláusula DISTINCT, aplicada em uma consulta, foi criada para não permitir que certas redundâncias, obviamente necessárias, causem problemas. Sintaxe: Select distinct <atributo> From <tabela> Exemplo: Produto Código Descricao Queijo Chocolate Queijo Valor 2,00 1,50 2,10 / selecionar a descricao da tabela produto / Select distinct descricao / selecionar o código e a descricao da tabela produto / Select distinct codigo, descricao Prof. Flavio Augusto C. Correia 29

Agrupando informações selecionadas Group by É possível organizar a seleção de dados em grupos determinados. O atributo especificado no GROUP BY deve estar explicito na linha do comando SELECT. Sintaxe: Select <atributo> From <tabela> Group by <atributo> Exemplo: Produto Código Descricao Queijo Valor 2,00 Chocolate 1,50 Queijo 2,10 / selecionar a descricao da tabela produto / Select descricao Group by descricao / selecionar quantas vezes aparece o conteúdo queijo / Select descricao, count(*) Group by descricao Prof. Flavio Augusto C. Correia 30

Agrupando de forma condicional - Having Determina uma condição. Sintaxe: Select <atributo> From <tabela> Group by <atributo> Having <operador> <valor> Exemplo: Produto Código Descricao Queijo Valor 2,00 Chocolate 1,50 Queijo 2,10 / selecionar a descricao da tabela produto com mais de uma ocorrencia/ Select descricao, count(*) Group by descricao Having count(*) > 1 Prof. Flavio Augusto C. Correia 31

Recuperando dados de várias tabelas Join = Para que possamos trabalhar com informações de tabelas distintas é necessário usar a junção. Sintaxe: Select <tabela 1>.<atributo>, <tabela 2>.<atributo> From <tabela 1>, <tabela 2> Where <tabela 1>.<atributo> = <tabela 2>.<atributo> devem ser usada as chaves na junção Exemplo: Cliente Pedido Código Nome Numero dt_entrega codigo Paula 100 10//20 Márcia 200 15//20 Carlos 300 17//20 / selecionar o nome do cliente e o numero de seus pedidos / Select cliente.nome, pedido.numero From cliente, pedido Where cliente.codigo = pedido.codigo / selecionar o código e nome do cliente e o numero e dt_entrega de seus pedidos / Select cliente.código, cliente.nome, pedido.numero, pedido.dt_entrega From cliente, pedido Where cliente.codigo = pedido.codigo Prof. Flavio Augusto C. Correia 32

Utilizando consultas encadeadas (Subqueries) É a utilização de uma consulta dentro de outra consulta, mas também pode ser aplicado com outros comandos SQL como: INSERT, DELETE e UPDATE. Sintaxe: Select <atributo> From <tabela> Where <atributo> <condição> ( Exemplo: Cliente Código Nome Paula Márcia Carlos Select <atributo> From <tabela> ) Numero 100 200 300 Pedido dt_entrega 10//20 15//20 17//20 / selecionar o nome do cliente cujo codigo esteja contido na tabela de pedido / Select nome From cliente Where codigo in ( Select codigo From pedido ) codigo / selecionar o nome do cliente cujo codigo não esteja contido na tabela de pedido / Select nome From cliente Where codigo not exists ( Select codigo From pedido ) Prof. Flavio Augusto C. Correia 33

Views As Views não são mais do que comandos SELECT armazenados. São por vezes denominadas tabelas temporárias. Note-se que o resultado de uma execução de uma view (os registos que ela devolve) depende dos registos armazenados no momento nas tabelas de suporte à view. As views podem ser utilizadas dentro de comandos SELECT. Cliente Pedido Código Nome Numero dt_entrega codigo Paula 100 10//20 Márcia 200 15//20 Carlos 300 17//20 CREATE VIEW Clientes AS Select cliente.nome, pedido.numero From cliente, pedido Where cliente.codigo = pedido.codigo As views não podem conter a cláusula ORDER BY e apenas permitem a inserção, remoção e alteração de registos caso não contenham as cláusulas GROUP BY e UNION. Prof. Flavio Augusto C. Correia 34

Comando para criar um índice tabela: Indices CREATE [UNIQUE] INDEX nome índice ON nome tabela (nome coluna [ASC DESC]) Cliente Código Nome Paula Márcia Carlos create unique index Index_codigo on clientes ( Codigo ASC, Nome ASC ); Prof. Flavio Augusto C. Correia 35