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



Documentos relacionados
Comandos de Manipulação

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

Linguagem de Consulta Estruturada SQL- DML

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

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

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

Linguagem SQL Sub-linguagem DDL

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

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

EXEMPLOS DE COMANDOS NO SQL SERVER

Structured Query Language (SQL)

Banco de Dados. Prof. Antonio

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

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

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

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

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

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

Comandos DDL. id_modulo = id_m odulo

LINGUAGEM SQL. SQL Server 2008 Comandos iniciais

Linguagem de Consulta Estruturada (SQL)

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

SQL Structured Query Language

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

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

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

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

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

O que são Bancos de Dados?

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

EXERCÍCIOS PRÁTICOS. Banco de Dados

Programação SQL. Introdução

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

ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL. Carga horária: 32 Horas

SQL (Structured Query Language)

1. SQL Instrumental Select Delete Update Insert Group by Having Unnion All...

Structured Query Language (SQL) Ambiente Simplificado de um SGBD

PHP INTEGRAÇÃO COM MYSQL PARTE 1

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

Introdução à linguagem SQL

4.6. SQL - Structured Query Language

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

Principais Instruções em SQL

SQL. Prof. Márcio Bueno.

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

Linguagem de Consulta - SQL

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

Linguagem SQL. Comandos Básicos

Structured Query Language (SQL) Aula Prática

Banco de Dados Oracle 10g: Introdução à Linguagem SQL

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

SQL (Linguagem de Consulta Estruturada)

SQL - Criação de Tabelas

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

SQL Structured Query Language. SQL Linguagem de Definição de Dados. SQL Structured Query Language. SQL Structured Query Language

Banco de Dados. Maurício Edgar Stivanello

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

A linguagem SQL

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

Exercícios de Lógica Exercícios de Fixação 08

SQL. Autor: Renata Viegas

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

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

Bases de Dados 2005/2006. Aula 5

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

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

BANCO DE DADOS. info 3º ano. Prof. Diemesleno Souza Carvalho

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

f. Vocês podem selecionar todos os campos indicando-os, ou seja, sem usar * (boa prática) g. Muito relevante na manutenção de BD e de aplicações.

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

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

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

Principais Instruções em SQL. Contidas nesta apostila as principais instruções em SQL para a manutenção em Bancos de Dados.

Fundamentos do Sistema Gerenciador de Banco de Dados

DML - SELECT Agrupando Dados

Introdução ao SQL Avançado

Junções e Índices em Tabelas

Projeto e Implementação

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

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

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

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

SQL DML. Frederico D. Bortoloti

António Rocha Nuno Melo e Castro

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

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

1. Domínio dos Atributos

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

Principais Comandos SQL Usados no MySql

SQL DDL. Frederico D. Bortoloti

Prof.: Clayton Maciel Costa

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

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

Linguagem SQL (Parte I)

SQL (Tópicos) Structured Query Language

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

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

LINGUAGEM SQL. DML - Linguagem de Manipulação de Dados

NOME SEXO CPF NASCIMENTO SALARIO

BANCO DE DADOS Parte 4

Transcrição:

SQL BÁSICO Prof. Suelane Garcia Introdução 2 Linguagem SQL (Structured Query Language) Linguagem de Consulta Estruturada padrão para acesso a Banco de Dados. Usada em inúmeros Sistemas de Gerenciamento de Banco de Dados Relacional (SGBDR), como: MySQL; SQL Server; Oracle; Sybase; ACCESS; DB2; PostgreSQL. Cada gerenciador de banco de dados pode usar um "dialeto" do SQL, como: T-SQL (Transaction Structured Query Language) utilizado no SQL Server; PL/SQL utilizado pelo Oracle, JET SQL utilizado pelo Access)

Introdução 3 Modelo de Banco de Dados Este modelo de banco de dados que será utilizado ao longo do curso como base para a realização dos exercícios práticos. Modelo Conceitual - Sistema de Controle de Vinícola Introdução 4 Modelo Físico Tabelas Modelo Físico - Sistema de Controle de Vinícola

5 Grupos de Comandos SQL Linguagem SQL 6 Grupos de Comandos DDL (Data Definition Language) DML (Data Manipulation Language) CREATE DATABASE DROP DATABASE CREATE TABLE DROP TABLE ALTER TABLE CREATE INDEX DROP INDEX ALTER INDEX TRUNCATE INSERT UPDATE DELETE DQL (Data Query Language) DCL (Data Control Language) SELECT GRANT REVOKE

7 Criando e Eliminando Banco de Dados Criando e Eliminando Banco de Dados 8 CREATE DATABASE: comando utilizado para criar um banco de dados. CREATE DATABASE <nome-banco> CREATE DATABASE VINICOLA DROP DATABASE: comando utilizado para excluir um banco de dados. DROP DATABASE <nome-banco> DROP DATABASE VINICOLA

9 Criando a Estrutura de Tabelas CREATE TABLE Criando a Estrutura de Tabelas 10 CREATE TABLE: comando utilizado para criar uma tabela no banco de dados. CREATE TABLE <nome-tabela> ( <nome-coluna1><tipo-de-dado><constraint-coluna>, <nome-coluna2><tipo-de-dado><constraint-coluna>, <constraints-de-tabela>)

Criando a Estrutura de Tabelas 11 Tipos de Dados Criando a Estrutura de Tabelas 12 CREATE TABLE Reserva( CPF INTEGER NOT NULL, Num_Vinho INTEGER NOT NULL, Ano INTEGER, qtde varchar(4), Valor FLOAT, PRIMARY KEY(CPF, Num_Vinho), FOREIGN KEY (CPF) REFERENCES cliente(cpf), FOREIGN KEY (Num_Vinho) REFERENCES vinho(num_vinho) )

Criando a Estrutura de Tabelas 13 Tipos de Constraints (Restrições) Tipos de Constraints (Restrições) 14 CHAVE PRIMÀRIA (Primary Key): é a coluna, ou grupo de colunas, que permite identificar um único registro na tabela. A chave primária pode ser simples (contem um campo) ou composta (contem dois campos ou mais). 1- Chave primária simples CREATE TABLE CLIENTE ( CPF INTEGER NOT NULL PRIMARY KEY, Nome_Cliente VARCHAR(50) NULL ) 2 Chave primária simples CREATE TABLE CLIENTE ( CPF INTEGER NOT NULL, Nome_Cliente VARCHAR(50) NULL, PRIMARY KEY (CPF) )

Tipos de Constraints (Restrições) 15 CHAVE PRIMÁRIA 3 Chave primária composta CREATE TABLE Reserva( CPF INTEGER NOT NULL, Num_Vinho INTEGER NOT NULL, Ano INTEGER, qtde varchar(4), Valor FLOAT, PRIMARY KEY (CPF, Num_Vinho), FOREIGN KEY (CPF) REFERENCES Clientes(CPF), FOREIGN KEY (Num_Vinho) REFERENCES Vinhos(Num_Vinho)) Tipos de Constraints (Restrições) 16 CHAVE ESTRANGEIRA (Foreign Key): é o campo que estabelece o relacionamento entre duas tabelas. FOREIGN KEY (nome-coluna) REFERENCES <nome-tabela>(nome-coluna-referenciada) ON UPDATE <acao> ON DELETE <acao> Obs.: A opção acao determina qual ação o banco de dados deve tomar quando for excluída ou alterada uma linha da tabela que contém referência a esta chave. Pode ser: - SET NULL: altera o conteúdo da coluna para nulo, perdendo a referência, sem deixar valores inconsistentes; - SET DEFAULT: altera o conteúdo da coluna para o valor especificado na cláusula DEFAULT se houver; - CASCADE: exclui ou altera todos os registros que se relacionam a eles; - NO ACTION: em caso de alteração, não modifica os valores que se relacionam a eles; - RESTRICT: não permite a exclusão da chave primária.

Tipos de Constraints (Restrições) 17 CHAVE ESTRANGEIRA 1 Chave estrangeira CREATE TABLE Reserva( CPF INTEGER NOT NULL, Num_Vinho INTEGER NOT NULL, Ano INTEGER, qtde varchar(4), Valor FLOAT, PRIMARY KEY (CPF, Num_Vinho), FOREIGN KEY (CPF) REFERENCES Clientes(CPF), FOREIGN KEY (Num_Vinho) REFERENCES Vinhos(Num_Vinho)) Tipos de Constraints (Restrições) 18 CHAVE ESTRANGEIRA - A Cláusula ON DELETE CASCADE e ON UPDATE CASCADE A utilização de uma cláusula ON DELETE CASCATE em uma declaração de constraint de FOREIGN KEY especifica que se houver uma tentativa de apagar uma linha com uma chave primária referenciada por chaves estrangeiras em linhas existentes em outras tabelas, também serão apagadas todas as linhas que contém essas chaves estrangeiras. 2 Chave estrangeira com cláusula CASCADE CREATE TABLE Reserva( CPF INTEGER NOT NULL, Num_Vinho INTEGER NOT NULL, Ano INTEGER, qtde varchar(4), Valor FLOAT, PRIMARY KEY (CPF, Num_Vinho), FOREIGN KEY (CPF) REFERENCES Clientes(CPF), FOREIGN KEY (Num_Vinho) REFERENCES Vinhos(Num_Vinho) ON DELETE CASCADE, ON UPDATE CASCADE )

Tipos de Constraints (Restrições) 19 DEFAULT: utilizada para atribuir um conteúdo-padrão a uma coluna da tabela, sempre que for incluída uma nova linha da tabela. CREATE TABLE Vinho ( Num_Vinho INTEGER NOT NULL, Nome_Vinho VARCHAR(50) NOT NULL, Cod_Tipo_Vinho integer DEFAULT 5, PRIMARY KEY (Num_Vinho) ) UNIQUE: Indica que não pode haver repetição no conteúdo da coluna. CREATE TABLE Vinicola ( Cod_Vinicola integer PRIMARY KEY, Nome_Vinicola varchar(50) UNIQUE, End_Vinicola varchar (100) ) Tipos de Constraints (Restrições) 20 NOT NULL: Indica que o conteúdo de uma coluna não poderá ser Nulo. CREATE TABLE Vinho ( Num_Vinho INTEGER NOT NULL, Nome_Vinho VARCHAR(50) NULL, Cod_Tipo_Vinho integer, PRIMARY KEY (Num_Vinho) ) CHECK: utilizada para criar um domínio para uma coluna. CREATE TABLE Vinho ( Num_Vinho INTEGER NOT NULL, Nome_Vinho VARCHAR(50) NOT NULL, Cod_Tipo_Vinho Integer CHECK (Cod_Tipo_Vinho = 1 OR Cod_Tipo_Vinho) = 5), PRIMARY KEY (Num_Vinho))

21 Excluindo a Estrutura de Tabelas DROP TABLE Excluindo a Estrutura de Tabelas 22 DROP TABLE: comando utilizado para excluir uma tabela do banco de dados. DROP TABLE <nome_tabela> DROP TABLE CLIENTE

23 Alteração de Estrutura de Tabela ALTER TABLE Alteração de Estrutura da Tabela 24 ALTER TABLE: utilizado para alterar a estrutura de uma tabela, como inclusão/exclusão de campos e constraints e alteração de tipo de dados. 1. Adicionando uma coluna ALTER TABLE <nome-tabela> ADD <nome-coluna> <tipo-de-dado><constraints> ALTER TABLE cliente ADD email VARCHAR (80) 2. Excluindo uma coluna ALTER TABLE <nome-tabela> DROP COLUMN <nome-coluna> ALTER TABLE cliente DROP COLUMN email

Alteração de Estrutura da Tabela 25 ALTER TABLE 3. Alterando uma coluna ALTER TABLE <nome-tabela> ALTER COLUMN <nome-coluna><tipo-dado><constraints> ALTER TABLE cliente ALTER COLUMN nome_cliente VARCHAR (60) NULL 4. Adicionando uma restrição (constraint) ALTER TABLE <nome-tabela> ADD <constraint> ALTER TABLE Cliente ADD PRIMARY KEY (cod_cliente) Alteração de Estrutura da Tabela 26 ALTER TABLE 5. Excluindo uma restrição (constraint) ALTER TABLE <nome-tabela> DROP CONSTRAINT <constraint> ALTER TABLE Cliente DROP CONSTRAINT PK CLIENTE 7C8480AE 6. Renomeia uma coluna sp_rename '<nome-tabela>.<nome-coluna>', 'nome-coluna-novo', 'COLUMN' sp_rename 'Vinho.tipo_vinho', 'cod_tipo_vinho', 'COLUMN'

Alteração de Estrutura da Tabela 27 ALTER TABLE 7. Renomeia uma tabela sp_rename '<nome-tabela-atual>.'<nome-tabela-novo>' sp_rename 'Vinho', 'VinhoNovo' 8. Renomeia o banco de dados sp_renamedb '<nome-banco-atual>.'<nome-banco-novo>' sp_renamedb 'Vinicola', 'Vinicola_Nova' 28 Criando, Excluindo e Alterando Índice CREATE INDEX DROP INDEX ALTER INDEX

Criando, Excluindo e Alterando Índice 29 CREATE INDEX: recurso físico que visa otimizar a recuperação de uma informação por um método de acesso. O índice serve para prover um acesso rápido a linhas das tabelas. CREATE [UNIQUE] INDEX <nome-indice> ON tabela (coluna [, coluna,...] [ASC I DESC]) Opção Descrição UNIQUE Nome-indice Tabela Coluna Identifica que esse índice não permite repetição de conteúdo da chave (lista de colunas) Nome do objeto que será criado Nome da tabela que contém a(s) coluna(s) Lista de colunas que compõem a chave de indexação ASC Determina que a ordem de indexação será ascendente. É o padrão. DESC Determina que a ordem de indexação será descendente. Criando, Excluindo e Alterando Índice 30 CREATE INDEX 1 cria índice para um campo. CREATE INDEX xcliente ON Cliente (nome_cliente) 2 cria índice com UNIQUE CREATE UNIQUE INDEX xcliente ON Cliente (nome_cliente) 3 cria índice com ordenação definida CREATE INDEX xcodcliente ON Cliente (codcliente DESC) 4 cria índice com dois campos CREATE INDEX xcidade ON Cidade (SGESTADO, CDCIDADE)

Criando, Excluindo e Alterando Índice 31 DROP INDEX: Exclui o índice de uma tabela. DROP INDEX <nome-tabela>.<nome-indice> DROP INDEX Cliente.xCliente ALTER INDEX: Altera o índice de uma tabela. 1 Recriando um índice ALTER INDEX xcliente ON Cliente.Cod_Cliente REBUILD; 2 Desabilitando um índice ALTER INDEX xcliente ON Cliente.Cod_Cliente DISABLE 32 Controle de Permissão de Acesso GRANT REVOKE

Controle de Permissão de Acesso 33 GRANT: garantia de privilégios de acesso. GRANT {ALL lista-privilegios} ON { nome-tabela/view [lista-colunas]} TO {public lista-usuarios} [WITH GRANT OPTION] Controle de Permissão de Acesso 34 GRANT 1: Permite só consultas ao usuário Felipe na tabela Cliente. GRANT SELECT ON Cliente TO Felipe WITH GRANT OPTION 2: Concede ao usuário sa os privilégios de seleção, inclusão e alteração na tabela Cliente. GRANT SELECT, INSERT, UPDATE ON Cliente TO sa 3: Permite todos os privilégios a todos os usuários sobre a tabela cliente. GRANT ALL PRIVILEGES ON cliente TO public 4: Concede aos usuários Felipe e Mauricio o privilégio de seleção na tabela Cliente. GRANT SELECT ON cliente TO Felipe, Mauricio

Controle de Permissão de Acesso 35 REVOKE: revoga os privilégios de acesso. REVOKE [lista-privilegios] ON [nome-tabela/view] FROM [lista-usuários] 1: Retirar o privilégio de seleção sobre a tabela Cliente do usuário Mauricio REVOKE select ON Cliente FROM Mauricio 2: Revogar os privilégios de selecionar concedidos a todos os usuários sobre a tabela Cliente. REVOKE select ON Cliente FROM public 3: Retirar os privilégios de atualização e inserção concedidos ao usuário sa sobre a tabela Cliente. REVOKE insert, update ON Cliente FROM sa 36 Manipulando dados INSERT DELETE UPDATE

Manipulação de Dados - INSERT 37 INSERT: Inclui registros (linhas) em tabelas INSERT INTO <nome-tabela> (<lista-colunas>) VALUES (<lista-valores) 1: INSERT INTO Cliente VALUES (1, Mariana Ximenes, '25251454') 2: INSERT INTO Clientes (CPF, Nome_Cliente, Tel_Cliente) VALUES (1, 'Mariana Ximenes', '25251454') Manipulação de Dados - INSERT 38 INSERT Inserindo Registros Usando um SELECT INSERT INTO <nome-tabela> (<lista-de-colunas>) SELECT <lista-de-colunas> FROM <nome-tabela> WHERE <condicao-de-selecao>; 1 INSERT INTO tmpvinho SELECT * FROM Vinho 2 INSERT INTO tmpvinho (Num_Vinho, Nome_Vinho) SELECT Num_Vinho, Nome_Vinho FROM Vinho 3 INSERT INTO tmpvinho SELECT Num_vinho, valor * 1.33 FROM Reserva

39 Manipulando dados DELETE TRUNCATE Manipulação de Dados - DELETE 40 DELETE: Permite excluir linhas da tabela. DELETE FROM <nome-tabela> WHERE <condicao-de-selecao> Quando utiliza-se a cláusula WHERE, as linhas especificadas serão excluídas 1: DELETE FROM cliente WHERE cod_cliente = 10 Quando a cláusula WHERE é omitida, todas as linhas da tabela serão excluídas. 2: DELETE FROM cliente

Manipulação de Dados - TRUNCATE 41 TRUNCATE TABLE Remove todas as linhas de uma tabela sem registrar as exclusões de linhas individuais. TRUNCATE TABLE é mais rápida e utiliza menos recursos de sistema e log de transações. TRUNCATE TABLE <nome-tabela> TRUNCATE TABLE Cliente Obs.: O TRUNCATE é um comando de definição de estrutura de dados (DDL). 42 Manipulando dados UPDATE

Manipulação de Dados - UPDATE 43 UPDATE: Permite alterar o conteúdo de um campo ou mais campos. UPDATE <nome-tabela> SET {<nome-coluna> = <expressao>} WHERE <condicao-de-selecao>; 1: alterando um campo UPDATE Reserva SET Valor = 50 WHERE Ano = 2013 2: alterando três campos UPDATE Reserva SET Valor = 50, qtde = 30, ano = '2012' WHERE Ano = 2013 3: alterando o campo com valor calculado UPDATE Reserva SET Valor = Valor * 2.5 WHERE Ano = 2013 4: alterando um campo com valor calculado de dois campos UPDATE Reserva SET Valor = Valor * Qtde WHERE Ano = 2013 44 Recuperando dados com a instrução SELECT

Recuperando dados com o SELECT 45 SELECT SELECT * {DISTINCT nome-coluna expressao [alias} FROM <nome-tabela> SELECT identifica as colunas a serem exibidas FROM identifica a tabela que contem essas colunas Recuperando dados com o SELECT 46 SELECT Selecionando todas as colunas 1: declarando todos os campos da tabela SELECT cpf, nome_cliente, Tel_Cliente FROM Cliente 2: utilizando o asterisco (*). SELECT * FROM Cliente Selecionando colunas específicas : declarando apenas algumas colunas da tabela. SELECT cpf, nome_cliente FROM Cliente

Recuperando dados com o SELECT 47 SELECT com DISTINCT O DISTINCT é utilizado para eliminar linhas duplicadas no resultado. 1 SELECT DISTINCT Tipo_Vinho FROM Vinho 2 SELECT DISTINCT cpf, nome_cliente FROM Cliente Recuperando dados com o SELECT 48 Ordenando o Resultado (ORDER BY) SELECT <lista-colunas> FROM <nome-tabela> WHERE <condicao-de-selecao> ORDER BY {<nome-coluna> <num-col> [ASC DESC]}

Recuperando dados com o SELECT 49 Ordenando o Resultado (ORDER BY) 1: ordenação ascendente SELECT Nome_Cliente FROM Cliente ORDER BY Nome_Cliente ASC 2: ordenação descendente SELECT Nome_Cliente FROM Cliente ORDER BY Nome_Cliente DESC 3: ordenação descendente SELECT Nome_Cliente FROM Cliente ORDER BY Nome_Cliente DESC, CPF 4: ordenação pela posição da coluna no select SELECT Nome_Cliente FROM Cliente ORDER BY 1 Obs.: Caso tenha mais de um campo para ser ordenado, o gerenciador de banco de dados primeiro ordenará pelo primeiro campo, em seguida pelo segundo e assim por diante. Recuperando dados com o SELECT 50 Usando Apelidos de Consulta (Alias) : Apelido para coluna (Campo) Sem aspas SELECT Cod_Vinicola AS Vinho, Nome_Vinicola AS Vinicola FROM vinicola Com aspas SELECT Cod_Vinicola AS "Número Vinícola", End_Vinicola END FROM vinicola : Apelido para tabela SELECT End_Vinicola END FROM vinicola AS A

Recuperando dados com o SELECT 51 Operadores Aritméticos 1 SELECT NUM_VINHO, VALOR + 200 FROM Reserva 2 SELECT NUM_VINHO, (VALOR * qtde) FROM Reserva Operador Descrição + Somar - Subtrair * Multiplicar / Dividir Operador de Concatenação Um operador de concatenação: Vincula colunas ou strings de caracteres a outras colunas; É representado por + (sinal de soma). : SELECT NOME_VINHO + ' - ' + TIPO_VINHO FROM VINHOS Recuperando dados com o SELECT 52 Filtrando as linhas retornadas usando a cláusula WHERE A cláusula WHERE é especificada após a cláusula FROM. Quando a condição definida for verdadeira, a linha será mostrada, do contrário não mostrará a linha. SELECT * {DISTINCT <nome-coluna> expressao [alias} FROM <nome-tabela> WHERE <condicao> : declarando apenas algumas colunas da tabela. SELECT cpf, nome_cliente FROM Cliente WHERE cpf > 26072418414

Recuperando dados com o SELECT 53 Operadores Relacionais Operador Significado = Igual Cod_Cliente = 1 < Menor que Cod_Cliente < 12 <= Menor ou igual a Cod_Cliente <= 12 > Maior que Cod_Cliente > 20 >= Maior ou igual a Cod_Cliente > = 20!= ou <> Diferente Cod_Cliente!= 10 Cod_Cliente <> 10 SELECT Nome_Cliente FROM Cliente WHERE (Cod_Cliente >= 10 AND Cod_Cliente <= 100) Recuperando dados com o SELECT 54 Operadores Lógicos Operador Significado AND E condição 1 AND condição 2 OR Ou condição 1 OR condição 2 NOT Não/Negação NOT condição Usando o Operador AND AND exige que as duas condições sejam verdadeiras. SELECT Num_Vinho, Ano FROM RESERVA WHERE Num_Vinho > 100 AND ANO = 2013

Recuperando dados com o SELECT 55 Usando o Operador OR OR exige que uma das condições seja verdadeira. SELECT Num_Vinho, Ano FROM RESERVA WHERE Num_Vinho > 100 OR ANO = 2013 Usando o Operador NOT NOT É utilizado para inverter o resultado de uma expressão lógica, negando o resultado da condição. SELECT Num_Vinho, Ano FROM RESERVA WHERE NOT (Num_Vinho > 100) 56 Utilizando Operadores Especiais

Utilizando Operadores Especiais 57 Operadores IS NULL e IS NOT NULL Use a condição de IS NULL para verificar se o campo é nulo (vazio) e IS NOT NULL para verificar se o campo não é nulo (possui conteúdo). WHERE <nome_coluna> IS NULL WHERE <nome_coluna> IS NOT NULL 1: SELECT Nome_Cliente WHERE Tel_Cliente IS NULL 2: SELECT Nome_Cliente WHERE Tel_Cliente IS NOT NULL Utilizando Operadores Especiais 58 Operador BETWEEN e NOT BETWEEN O BETWEEN serve para determinar um intervalo de busca. Utilizada para realizar buscas que indiquem um intervalo de números, datas, etc. O NOT BETWEEN serve para buscar todos os registros que não estejam no intervalo definido. WHERE <nome-coluna> BETWEEN <valor1> AND <valor2> WHERE <nome-coluna> NOT BETWEEN <valor1> AND <valor2> 1: SELECT CPF, num_vinho FROM Reserva WHERE num_vinho BETWEEN 20550 AND 23500 2: SELECT CPF, num_vinho FROM Reserva WHERE num_vinho NOT BETWEEN 20550 AND 23500

Utilizando Operadores Especiais 59 Operadores IN e NOT IN O IN compara se o valor está contido no conjunto de valores definidos e o NOT IN verifica se o valor não está contido no conjunto. WHERE <nome-coluna> IN <lista-valores> WHERE <nome-coluna> NOT IN (<lista-valores>) 1: SELECT Nome_Vinho FROM Vinho WHERE num_vinho IN (10,20,30) 2: SELECT Nome_Vinho FROM Vinho WHERE num_vinho NOT IN (10,20,30) Utilizando Operadores Especiais 60 Operadores LIKE e NOT LIKE Permite comparar cadeias de caracteres utilizando padrões de comparação para um ou mais caracteres. WHERE <nome-coluna> LIKE <valor> WHERE <nome-coluna> NOT LIKE <valor> Expressão Explicação LIKE 'A%' Todas as palavras que iniciem com a letra A. LIKE '%A' Todas as palavras que terminem com a letra A. LIKE '%A%' LIKE 'A_' LIKE '_A' LIKE '_A_' LIKE '%A_' LIKE '_A%' Todas que tenham a letra A em qualquer posição String de dois caracteres que tenha a primeira letra A e o segundo caractere seja qualquer outro. String de dois caracteres cujo primeiro caractere seja qualquer um e a ultima letra seja A String de três caracteres cuja segunda letra seja A, independentemente, do primeiro ou do último caractere. Todos que tenham a letra A na penúltima posição e a última seja qualquer outro caractere. Todos que tenham a letra A na segunda posição e o primeiro caractere seja qualquer um.

Utilizando Operadores Especiais 61 LIKE / NOT LIKE 1: Busca os clientes com o nome que inicie com R. SELECT * FROM Cliente WHERE Nome_Cliente LIKE R% 2: Busca os clientes que tenham a letra b na segunda posição do nome. SELECT * FROM Cliente WHERE Nome_Cliente LIKE _b% 3: Busca os clientes com a letra C no início e a letra R na terceira posição do nome. SELECT * FROM AUTOR WHERE Nome_Autor LIKE C_r% Utilizando Operadores Especiais 62 LIKE / NOT LIKE 4: Busca apenas os preços que comecem com o algarismo 1 e tenham apenas um algarismo após o 1. SELECT CPF, Num_Vinho FROM Reserva WHERE Valor LIKE 1_% 5: Busca os clientes com o nome que não iniciem com R. SELECT * FROM Cliente WHERE Nome_Cliente NOT LIKE R%

63 Funções de Agregação Funções de Agregação 64 Existem diversas funções de grupo que são implementadas pelo padrão SQL. Essas funções auxiliam a computar uma variedade de medidas baseadas em valores dos campos do banco de dados. As principais funções de grupo são: Função Ação COUNT Retorna o número de linhas afetadas pelo comando. SUM Retorna o somatório do valor dos campos especificados AVG Retorna a média aritmética dos valores dos campos MIN Retorna o menor valor do campo de um grupo de linhas. MAX Retorna o maior valor do campo de um grupo de linhas Obs.: Os campos com funções de agregação devem receber um apelido.

Funções de Agregação 65 MAX : Retorna o valor máximo para tipos de dados numéricos, de caractere e de data. : retorna maior código do cliente SELECT MAX (Cod_Cliente) FROM Cliente MIN: Retorna o valor mínimo. : retorna menor código do cliente SELECT MIN (Cod_Cliente) FROM Cliente AVG: Extrai a média aritmética de um determinado grupo de linhas. : retorna a média aritmética do valor do vinho SELECT AVG (VALOR) FROM Reserva Funções de Agregação 66 SUM: Retorna o valor total de um determinado campo em um determinado grupo de linhas. 1: SELECT SUM (Valor) FROM Reserva 2: SELECT SUM (Preco_Venda) * 1.2 FROM CD COUNT: Retorna o número de linhas que atende a uma determinada condição. 1: retorna o número de linhas de uma tabela SELECT COUNT (*) FROM CLiente 2: retorna o número de linhas com valores não nulos para o campo especificado. SELECT COUNT (nome_cliente) FROM CLiente

67 Conversão de Tipo de Dado Conversão de Tipos de Dado 68 CAST: Permite realizar a conversão entre tipos de dados. CAST (tipo-dado-origem AS tipo_dado_destino) 1: SELECT CAST (AVG(Valor) AS Decimal (10,2)) preco FROM Reserva 2: SELECT CAST ( 11/02/2002 AS Date) Coluna 3: SELECT CAST ( 12 AS Integer) * 5 Coluna FROM Reserva

69 Agrupamento de Dados Agrupamento de Dados 70 GROUP BY: Permite dividir as linhas de uma tabela em grupos menores. Todas as colunas da lista SELECT que não são funções de grupo devem estar incluídas na cláusula GROUP BY. SELECT <Nome-Coluna>, Funcao-Grupo (Nome-Coluna) FROM <Nome-Tabela> WHERE <condicao> GROUP BY <expressao-grupo> ORDER BY <nome-colunas> 1: Usando o GROUP BY para uma coluna. SELECT num_vinho, SUM (valor) FROM Reserva GROUP BY num_vinho 2: Usando o GROUP BY para várias colunas. SELECT num_vinho, Ano, SUM (valor) FROM Reserva GROUP BY num_vinho, Ano

Agrupamento de Dados 71 HAVING: Permite dividir as linhas de uma tabela em grupos menores. SELECT <Nome-Coluna>, Funcao_Grupo (Nome-Coluna) FROM <Nome-Tabela> WHERE <condicao> GROUP BY <expressao-grupo> HAVING <condicao> ORDER BY <nome-colunas> 1: SELECT num_vinho, SUM (valor) FROM Reserva GROUP BY num_vinho HAVING Sum (Valor) < 1000 2: SELECT count(*) as total_vinho FROM Reserva GROUP BY num_vinho HAVING count (*) > 10 72 Consulta em Múltiplas Tabelas

Consulta em Múltiplas Tabelas 73 União de Tabelas (JOIN) Para realizar a união de tabelas, basta acrescentarmos após a cláusula FROM do comando SELECT as tabelas que queremos unir. Devemos colocar na cláusula WHERE a condição de união das tabelas, ou seja, as respectivas chaves primárias e estrangeiras. INNER JOIN: junção entre tabelas onde são incluídas somente as linhas que satisfazem a condição do join. SELECT tabela1.campo, tabela2.campo FROM tabela1 INNER JOIN tabela2 ON (tabela1.chaveprimaria = tabela2.chaveprimaria) Sintaxe ANSI SELECT Reserva.Num_Vinho, Vinho.Nome_Vinho FROM Reseva INNER JOIN Vinho ON (Reserva.Num_VInho = Vinho.Num_Vinho) Sintaxe SQL Server SELECT Reserva.Num_Vinho, Vinho.Nome_Vinho FROM Reseva, Vinho WHERE Reserva.Num_VInho = Vinho.Num_Vinho Consulta em Múltiplas Tabelas 74 de junção (JOIN) com três tabelas Sintaxe ANSI SELECT Reserva.Num_Vinho, Vinho.Nome_Vinho FROM Reseva INNER JOIN Vinho ON (Reserva.Num_Vinho = Vinho.Num_Vinho) INNER JOIN Cliente ON (Reserva.Cod_Cliente = Cliente.Cod_Cliente) Sintaxe SQL Server SELECT Reserva.Num_Vinho, Vinho.Nome_Vinho FROM Reseva, Vinho, Cliente WHERE Reserva.Num_VInho = Vinho.Num_Vinho AND Reserva.Cod_Cliente = Cliente.Cod_Cliente

Consulta em Múltiplas Tabelas 75 CROSS JOIN: junção entre tabelas que inclui cada uma das combinações de todas as linhas entre as tabelas. Apresenta o produto cartesiano. SELECT tabela1.campo, tabela2.campo FROM tabela1 CROSS JOIN tabela2 Sintaxe ANSI SELECT Reserva.Num_Vinho, Vinho.Nome_Vinho FROM Reseva CROSS JOIN Vinho Sintaxe SQL Server SELECT Reserva.Num_Vinho, Vinho.Nome_Vinho FROM Reseva, Vinho Consulta em Múltiplas Tabelas 76 União de Tabelas Externas (OUTER JOIN) Quando uma linha não satisfaz a condição de união entre as tabelas, a linha não será mostrada no resultado da busca. Isso acontece porque o banco de dados, não podendo estabelecer a relação entre as colunas que estão sendo unidas na busca, coloca NULL onde o dado não existe. LEFT OUTER JOIN: são incluídas todas as linhas da tabela à esquerda. SELECT tabela1.campo, tabela2.campo FROM tabela1 LEFT OUTER JOIN tabela2 ON (tabela1.chaveprimaria = tabela2.chaveprimaria) Sintaxe ANSI SELECT Reserva.Num_Vinho, Vinho.Nome_Vinho FROM Vinho LEFT OUTER JOIN Vinho ON (Vinho.Num_VInho = Reserva.Num_Vinho) Sintaxe SQL Server SELECT Reserva.Num_Vinho, Vinho.Nome_Vinho FROM Vinho, Reserva WHERE Vinho.Num_VInho *= Reserva.Num_Vinho

Consulta em Múltiplas Tabelas 77 RIGHT OUTER JOIN: são incluídas todas as linhas da tabela à direita. SELECT tabela1.campo, tabela2.campo FROM tabela1 RIGHT OUTER JOIN tabela2 ON (tabela1.chaveprimaria = tabela2.chaveprimaria) Sintaxe ANSI SELECT Reserva.Num_Vinho, Vinho.Nome_Vinho FROM Vinho RIGHT OUTER JOIN Vinho ON (Vinho.Num_VInho = Reserva.Num_Vinho) Sintaxe SQL Server SELECT Reserva.Num_Vinho, Vinho.Nome_Vinho FROM Vinho, Reserva WHERE Vinho.Num_VInho =* Reserva.Num_Vinho Obs. *= Inclui todas as linhas da tabela à esquerda = * Inclui todas as linhas da tabela à direita Consulta em Múltiplas Tabelas 78 FULL OUTER JOIN: são incluídas todas as linhas da tabela que satisfazem a expressão e também as que não satisfazem. SELECT tabela1.campo, tabela2.campo FROM tabela1 FULL OUTER JOIN tabela2 ON (tabela1.chaveprimaria = tabela2.chaveprimaria) Sintaxe ANSI SELECT Reserva.Num_Vinho, Vinho.Nome_Vinho FROM Vinho FULL OUTER JOIN Vinho ON (Vinho.Num_VInho = Reserva.Num_Vinho)

79 Subconsultas (subqueries) Subconsultas (subqueries) 80 SUBQUERY: é quando o resultado de uma consulta é utilizado por outra consulta de forma encadeada e no mesmo comando SQL. SUBCONSULTA utilizando EXISTS/NOT EXISTS SELECT Nome_Cliente FROM Cliente WHERE EXISTS (SELECT cod_cliente FROM Reserva WHERE Cliente.cod_Cliente = Reserva.Cod_Cliente) SELECT Nome_Cliente FROM Cliente WHERE NOT EXISTS (SELECT cod_cliente FROM Reserva WHERE Cliente.cod_Cliente = Reserva.Cod_Cliente)

81 SUBCONSULTA utilizando IN/NOT IN SELECT Nome_Cliente FROM Cliente WHERE cod_cliente IN (SELECT DISTINCT cod_cliente FROM Reserva) SELECT Nome_Cliente FROM Cliente WHERE cod_cliente NOT IN (SELECT DISTINCT cod_cliente FROM Reserva) ' 82 EXERCÍCIOS

83 BIBLIOGRAFIA HEUSER, Carlos Alberto. Projeto de banco de dados. 6.ed. Porto Alegre: Bookman, 2010. 282p. ISBN 9788577803828. Número de Chamada: 681.3.061.1 H524p 6.ed. SILBERSCHATZ, Abraham; KORT, Henry F.; SUDARSHAN, S. (Coaut.). Sistema de banco de dados. 5.ed. Rio de Janeiro: Elsevier, Campus 2006. 781 p. ISBN 9788535211078. Número de Chamada: 681.3.061.1 S576dP 5.ed. ELMASRI, Ramez; NAVATHE, Shamkant B. Sistemas de bancos de dados. 4.ed. São Paulo: Pearson/Addison Wesley, 2005. 724 p. ISBN 9788588639171. Número de Chamada: 681.3.061.1 E43fP 4.ed. MACHADO, Felipe Nery Rodrigues; ABREU, Mauricio Pereira de. Projeto de banco de dados: uma visão prática. 15 ed. São Paulo: Érica, 2007. 300 p. ISBN 9788571943124. Número de Chamada: 681.3.061.1 M131p 15.ed. DATE, C. J. Introdução a sistemas de bancos de dados. Rio de Janeiro: Campus, 2000. 803p. ISBN 85-352-0560-8. Número de Chamada: 681.3.061.1 D257inP CARDOSO, Virginia. Sistema de Banco de Dados: uma abordagem introdutória e aplicada. São Paulo. Editora Saraiva, 2012.143p.ISBN: 9788502162822 GUIMARAES, Célio Cardoso. Fundamentos de Banco de dados: modelagem, projeto e linguagem SQL.Campinas, SP.Editora da Unicamp,2003.269p.ISBN: 8526806335