1.264 Aula 7. Introdução ao SQL



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

Comandos de Manipulação

Tarefa Orientada 15 Manipulação de dados

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

1.264 Aula 8. SQL (continuação) ODBC

Tarefa Orientada 16 Vistas

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

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

Treinamento sobre SQL

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

Structured Query Language (SQL)

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

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

Memória de aula Semanas 15 e 16

Banco de Dados. Aula 1 - Prof. Bruno Moreno 16/08/2011

Tarefa Orientada 13 Agrupamento e sumário de dados

Principais Instruções em SQL

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

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

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

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

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

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

Tarefa Orientada 11 Junção Interna

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

Sistemas de Bases de Dados Relacionais Introdução ao SQL. Interrogações diversas sobre a Base de Dados Northwind

Bases de Dados 2005/2006. Aula 5

MODELO DE DADOS VS ESQUEMA

Linguagem de Banco de Dados DML Exercícios

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

Introdução ao SQL Avançado

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

Tarefa Orientada 14 Subconsultas

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

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

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

BDII SQL Junção Revisão 8

Projeto de Banco de Dados

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

Banco de Dados. Maurício Edgar Stivanello

Linguagem de Consulta Estruturada SQL- DML

SQL DML. Frederico D. Bortoloti

PHP INTEGRAÇÃO COM MYSQL PARTE 1

4.6. SQL - Structured Query Language

SQL. Autor: Renata Viegas

Sumário. Introdução O Problema... 3

Programação SQL. Introdução

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

Tarefa Orientada 12 Junção Externa, Auto-Junção e União

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

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

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

NOME SEXO CPF NASCIMENTO SALARIO

SQL consulta com operadores

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

A linguagem SQL

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

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

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

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

Consultas SQL Parte II

Linguagem de Consulta Estruturada (SQL)

SQL UMA ABORDAGEM INTERESSANTE

Banco de Dados. Prof. Leonardo Barreto Campos 1

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.

Introdução ao SQL. Aécio Costa

TRANSAÇÕES. Considerando que estes comandos fazem parte de uma TRANSAÇÃO (veremos como indicar isso):

Junções e Índices em Tabelas

EXERCÍCIOS PRÁTICOS. Banco de Dados

Integridade dos Dados

SQL Structured Query Language

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

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

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

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

SQL. Prof. Márcio Bueno.

O que são Bancos de Dados?

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

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

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

EXEMPLOS DE COMANDOS NO SQL SERVER

Banco de Dados I. SQL SELECT Parte 1 - Básico. Prof. Moser Fagundes. Curso TSI Instituto Federal Sul-Rio-Grandense (IFSul) Campus Charqueadas

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

LINGUAGEM SQL PARA CONSULTAS EM MICROSOFT ACCESS

Principais Comandos SQL Usados no MySql

Prof.: Clayton Maciel Costa

Projeto e Implementação

LINGUAGEM SQL PARA CONSULTAS EM MICROSOFT ACCESS

Banco de dados 1. Linguagem DML SQL Select Avançado. Professor: Victor Hugo L. Lopes

LINGUAGEM SQL. SQL Server 2008 Comandos iniciais

Faça um Site PHP 5.2 com MySQL 5.0 Comércio Eletrônico

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

Linguagem de Consulta - SQL

Structured Query Language (SQL) Ambiente Simplificado de um SGBD

BANCO DE DADOS Parte 4

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

IMPLEMENTAÇÃO DE BANCO DE DADOS

Índice. Introdução 31. Tutorial 1: O Microsoft Access como Sistema de Gestão de Bases de Dados Relacionais 35

Programação em Banco de Dados. Dailton Trevisan

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

Transcrição:

1.264 Aula 7 Introdução ao SQL

Linguagem Estruturada de Consulta (SQL) Aula 7 SELECT, INSERT, DELETE, UPDATE Junções Aula 8 Subconsultas Visões (tabelas virtuais) Índices Transações Segurança Desempenho

SQL A linguagem estruturada de consulta (SQL) é utilizada para: Definição de dados: tabelas e visões (tabelas virtuais) Recuperação de dados: pelo usuário (consultas ad hoc ) ou programa Manipulação de dados: o usuário ou programa pode adicionar, excluir ou alterar os dados Controle de acesso Compartilhamento de dados: pelos usuários concorrentes Integridade de dados: pela definição de restrições de integridadeessas características são combinadas para obter Não é uma linguagem completa como Java, Visual Basic ou C++ A SQL é uma sublinguagem com cerca de 30 comandos Normalmente incorporada em outra linguagem ou ferramenta para acesso a bancos de dados A SQL tem várias inconsistências; NULLs são problemáticos Portável entre sistemas operacionais e entre fornecedores (parcial)

Aspectos variáveis entre as implementações de SQL Códigos de erro Tipos de dados suportados (data/hora, moeda, variações de strings ) Tabelas do sistema, sobre a estrutura do próprio banco de dados SQL interativa Interface de programação: nenhum fornecedor segue o padrão SQL dinâmica, utilizada em geradores de relatórios e ferramentas de consulta Variações definidas pelo implementador dentro do padrão Inicialização, abertura e conexão do banco de dados.

Tipos dos comandos básicos de SQL Tipos básicos SELECT INSERT UPDATE DELETE SELECT é o mais importante e complexo. Utilizado para: Recuperação de dados (em formulários, relatórios, consultas e programas) Como parte do INSERT, para produzir novas linhas Como parte do UPDATE, para atualizar linhas Como parte do DELETE, para remover linhas

SQL SELECT O comando SELECT é construído com cláusulas para obter colunas e linhas de uma ou mais tabelas e visões. As cláusulas devem estar nessa ordem: SELECT colunas FROM tabela ou visão INTO nova tabela WHERE linhas específicas ou uma junção são(é) criada(s) GROUP BY condições de agrupamento (colunas) HAVING propriedade do grupo (linhas específicas) ORDER BY critério de ordenação

Exemplos de tabelas

Exemplo de esquema

Consultas em SQL: SELECT Listar os representantes de vendas SELECT Name, Sales, Quota FROM SalesReps; Localizar o valor de cada representante acima ou abaixo da quota SELECT Name, Sales, Quota, (Sales-Quota) FROM SalesReps; Localizar os folgados SELECT Name, Sales, Quota, (Sales-Quota) FROM SalesReps WHERE Sales < Quota;É possível listar o cliente somente uma vez?

Consultas em SQL: cálculo, inserção, exclusão, atualização Calcular Valor Médio de Vendas SELECT AVG(Amt) FROM Orders; Calcular o valor médio das vendas a um Cliente SELECT AVG(Amt) FROM Orders WHERE Cust = 211; Incluir um escritório INSERT INTO Offices (OfficeNbr, City, Region, Target, Sales) VALUES ( 55, Dallas, West, 200000, 0); Excluir um cliente DELETE FROM Customers WHERE Company = Connor Co ; Aumentar um limite de crédito SET CreditLimit = 75000 WHERE Company = Amaratunga Enterprises ;

SELECT: * e duplicidades Seleção de todas as colunas (campos) SELECT * FROM Offices; Linhas duplicadas: a consulta obterá duas instâncias de West SELECT Region FROM Offices; Eliminação de duplicidades: (Os assistentes do MS Access utilizam a palavra-chave não-padrão DISTINCTROW, a qual é diferente de DISTINCT, quando houver junções)

NULLs Os valores NULL são avaliados como NOT TRUE em todos os casos. Inserir NewRep com quota NULL (em branco ou vazia) As duas consultas a seguir não fornecem todos os representantes de vendas: SELECT Name FROM SalesReps WHERE Sales > Quota; SELECT Name FROM SalesReps WHERE Sales <= Quota; Um novo representante com quota NULL não aparecerá em nenhuma lista Verificar NULLs com: SELECT Name FROM SalesReps WHERE Quota IS NULL;

Operadores de SELECT WHERE Disc*Amt > 50000; (Orders) WHERE Quota BETWEEN 50000 AND 100000; (SalesReps) A faixa inclui os valores extremos (>=50000 e <=100000) WHERE State IN ( CO, UT, TX ); (Offices) WHERE RepNbr IS NOT NULL; (SalesReps) WHERE Phone NOT LIKE 21% ; (Offices) O padrão SQL tem somente dois caracteres curinga % qualquer string com zero ou mais caracteres (* no Access) _ qualquer caractere isolado (? no Access) A maior parte dos bancos de dados têm caracteres curinga diferentes. O MS Access tem:? (qualquer caractere isolado) * (qualquer número de caracteres) # (qualquer dígito isolado) [lista] qualquer caractere isolado na lista [!lista]

SELECT: COUNT, GROUP BY Número de peças do fornecedor A SELECT COUNT(*) FROM Parts WHERE Vendor = A ; Resultado: 4 Número de peças de cada fornecedor SELECT Vendor, COUNT(*) AS PartsCount FROM Part GROUP BY Vendor; Resultado:

Exercícios Qual é o limite médio de crédito dos clientes cujo limite de crédito é menor que $1.000.000? Quantos escritórios de vendas estão na região Oeste (West)? Aumente em 30% o preço das escavadoras (bulldozers) em todos os pedidos. Exclua todos os representantes de vendas com quota NULA (NULL).

Exercícios Qual é o limite médio de crédito dos clientes cujo limite de crédito é menor que $1.000.000? SELECT AVG(CreditLimit) FROM Customers WHERE CreditLimit < 1000000; Quantos escritórios de vendas estão na região Oeste (West)? SELECT Count(*) FROM Offices WHERE Region= West ; Aumente em 30% o preço das escavadoras (bulldozers) em todos os pedidos. UPDATE Orders SET Amt= Amt*1.3 WHERE Prod= Bulldozer ; Exclua todos os representantes de vendas com quota NULA (NULL). DELETE FROM SalesReps WHERE Quota is NULL;

Junções O modelo relacional permite o agrupamento de dados de tabelas separadas em novos e não-previstos relacionamentos. Os relacionamentos tornam-se explícitos quando os dados são manipulados: ao consultar o banco de dados e não durante sua criação. Isso é crítico; esse recurso permite a extensão dos bancos de dados. O FAA nunca imaginou que seus dados seriam utilizados em 1.264 juntamente com os dados da transportadora DOT, uma tabela de CEPs e algumas novas tabelas de pedidos. Isso é reutilização! Você pode unir dados a partir de quaisquer colunas nas tabelas, desde que os tipos dos dados sejam iguais e a operação faça sentido. Esses dados não precisam ser chaves, apesar de normalmente o serem. Boas junções A coluna de junção normalmente é a coluna de chave: primária ou estrangeira As colunas de junção devem ter tipos de dados compatíveis NULLs nunca participam de junções

Junções Listar todos os pedidos, mostrando número do pedido e quantidade, além do nome e limite de crédito do cliente A tabela Orders contém o número do pedido e a quantidade, mas não contém os nomes dos clientes e seus limites de crédito A tabela Customers contém os nomes dos clientes e sues limites de crédito, mas não contém informações do pedido SELECT OrderNbr, Amt, Company, CreditLimit FROM Customers, Orders WHERE Cust=CustNbr; (SQL Padrão) SELECT OrderNbr, Amt, Company, CreditLimit FROM Customers INNER JOIN Orders ON Customers.CustNbr=Orders.Cust; (Access)

Junção com 3 tabelas Listar os pedidos acima de $25.000, incluindo o nome do vendedor que obteve o pedido e o nome do cliente que colocou o pedido. SELECT OrderNbr, Amt, Company, Name FROM Orders, Customers, SalesReps WHERE Cust = CustNbr AND CustRep = RepNbr AND Amt >= 25000; (SQL Padrão);

Notas sobre junção Sintaxe do MS Access para o exemplo anterior: SELECT OrderNbr, Amt, Company, Name FROM SalesReps INNER JOIN (Customers INNER JOIN Orders ON Customers).CustNbr = Orders.Cust) ON SalesReps.RepNbr = Customers.CustRep WHERE Amt >= 25000; Isso é complicado; utilizaremos a ferramenta de consulta do MS Access para construir SQL Utilize * com cuidado em junções Ele fornece todas as colunas de todas as tabelas sendo unidas. Se um campo tiver o mesmo nome nas tabelas sendo unidas, qualifique esse nome: Use tabela1.nome_do_campo, tabela2.nome_do_campo Customers.CustNbr, Orders.Amt, etc.

Auto-junções Queremos listar os analistas e seus gerentes O gerente poderia ser uma chave estrangeira na tabela de gerentes, mas ele deve ser uma chave estrangeira na própria tabela de funcionários nesse caso Tentativa 1 SELECT Name, Name FROM Employee, Employee WHERE Mgr = EmpNbr; (SQL padrão) Vai falhar, pois referencia duas vezes a tabela Employee A remoção da 2a. referência também vai falhar; a consulta busca as linhas nas quais a pessoa é seu próprio gerente, o que não desejamos.

Auto-junções Tentativa 2: Suponha a existência de 2 cópias da tabela Employee, uma chamada Emp e a outra Mgr: SELECT Emp.Name, Mgr.Name FROM Emp, Mgr WHERE Emp.Mgr = Mgr.EmpNbr; (SQL padrão); O SQL essencialmente nos permite fazer isso por meio de sinônimos (aliases). Válido: SELECT Emp.Name, Mgr.Name FROM Employee Emp, Employee Mgr WHERE Emp.Mgr = Mgr.EmpNbr; (SQL padrão); SELECT Emp.Name, Mgr.Name FROM Employee AS Emp INNER JOIN Employee AS Mgr ON Emp.Mgr = Mgr.EmpNbr; (Access); Na realidade, precisamos utilizar somente 1 sinônimo (alias) (Mgr)

Exercícios Liste os nomes dos clientes cujo limite de crédito é maior que a quota de seus representantes de vendas. Liste também o limite de crédito e a quota. Liste o nome e telefone de cada representante

Exercícios Liste os nomes dos clientes cujo limite de crédito é maior que a quota de seus representantes de vendas. Liste também o limite de crédito e a quota. SELECT CreditLimit, Quota, Company FROM SalesReps INNER JOIN Customers ON SalesReps.RepNbr = Customers.CustRep WHERE CreditLimit>Quota; Liste o nome e telefone de cada representante SELECT Name, Phone FROM Offices INNER JOIN SalesReps ON Offices.OfficeNbr = SalesReps.RepOffice;