Visão geral do SQL Server



Documentos relacionados
Revisão / Exercícios. Prof. Márcio Bueno. {bd2tarde,bd2noited}@marciobueno.com

Comandos de Manipulação

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

Structured Query Language (SQL)

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

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

Tarefa Orientada 19 Triggers

Programação SQL. Introdução

Linguagem SQL (Parte I)

EXEMPLOS DE COMANDOS NO SQL SERVER

Banco de Dados. Prof. Antonio

ADMINISTRAÇÃO DE BANCO DE DADOS

Linguagem SQL Parte I

A linguagem SQL

SQL Structured Query Language

Tarefa Orientada 15 Manipulação de dados

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

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

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

Tarefa Orientada 16 Vistas

Linguagem de Consulta Estruturada SQL- DML

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

Projeto de Banco de Dados: Empresa X

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

Tarefa Orientada 14 Subconsultas

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

SQL (Structured Query Language)

O que são Bancos de Dados?

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

Bases de Dados 2007/2008. Aula 1. Referências

DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS. Fábio Roberto Octaviano

SQL Linguagem de Manipulaçã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:

Noções de. Microsoft SQL Server. Microsoft SQL Server

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

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

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

Bases de Dados 2007/2008. Aula 9

APOSTILA BANCO DE DADOS INTRODUÇÃO A LINGUAGEM SQL

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

UNIDADE 1 - SQL LINGUAGEM DE PROGRAMAÇÃO TRANSACT-SQL ELEMENTOS DE SINTAXE DO TRANSACT-SQL DIRETIVAS EM LOTES

Histórico de revisões

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

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

Gatilhos (Triggers) Prof. Márcio Bueno Elaborado por Maria Lígia B. Perkusich

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. Autor: Renata Viegas

Figura 1. Figura 2. Prova Escrita de Base de Dados 5 Novembro V2 Número do Aluno: Nome do Aluno: 1º Teste (90 Minutos)

8. Outros tipos de Transação (Modo de Transação de Autoconfirmação e Modo Implícito)

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

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

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

EXERCÍCIOS PRÁTICOS. Banco de Dados

SQL. Prof. Márcio Bueno.

Structured Query Language (SQL) Ambiente Simplificado de um SGBD

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

Formação em Banco de Dados. Subtítulo

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

Tarefa Orientada 10 Obter informação a partir de uma tabela

Linguagem de Consulta Estruturada (SQL)

Prof. Carlos Majer Aplicações Corporativas UNICID

Tarefa Orientada 18 Procedimentos armazenados

SQL. Structured Query Language

Tarefa Orientada 13 Agrupamento e sumário de dados

Operação de União JOIN

MODELO DE DADOS VS ESQUEMA

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

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

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

Oracle PL/SQL Overview

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

SQL. Structured Query Language. Copyright Prof. Edison Andrade Martins Morais

PROGRAMA. Objectivos Gerais :

SQL - Criação de Tabelas

Bases de Dados 2005/2006. Aula 5

Linguagem SQL Sub-linguagem DDL

Sumário Introdução Breve História da Linguagem SQL l 0.3 Características da Linguagem SQL A Composição deste Livro 3

PHP INTEGRAÇÃO COM MYSQL PARTE 1

Treinamento sobre SQL

António Rocha Nuno Melo e Castro

Banco de Dados. Maurício Edgar Stivanello

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

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

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

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

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

SQL SQL BANCO DE DADOS 2. Componentes do SQL (1) Componentes do SQL (2) DDL Criação de banco de dados. Padrões de SQL

INTRODUÇÃO À LINGUAGEM SQL CRIAÇÃO DE BANCO DE DADOS E OTIMIZAÇÃO DE CONSULTAS

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

CIÊNCIA E TECNOLOGIA DO RIO

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

UFCD 787. Administração de base de dados. Elsa Marisa S. Almeida

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

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

Principais Instruções em SQL

Formação em Banco de Dados

PROGRAMA. Aquisição dos conceitos teóricos mais importantes sobre bases de dados contextualizados à luz de exemplos da sua aplicação no mundo real.

PostgreSQL. André Luiz Fortunato da Silva Analista de Sistemas CIRP / USP alf@cirp.usp.br

Bases de Dados 1º semestre

Introdução ao SQL Avançado

Transcrição:

Visão geral do SQL Server

Visão geral O que é o SQL Server? Integração do SQL Server Bases de dados do SQL Server Segurança do SQL Server Trabalhando com o SQL Server

O que é o SQL Server? Introdução ao SQL Server Componentes cliente-servidor Processo de comunicação cliente-servidor Serviços do SQL Server

Introdução ao SQL Server Cliente SQL Server Resultados Consulta OLTP OLAP Aplicação cliente Sistema de gestão de bases de dados relacionais

Componentes cliente-servidor Aplicação cliente SQL Server API de bases de dados (OLE DB, ODBC, DB-Library) Net-Libraries do servidor Open Data Services Cliente Net-Library do cliente Mecanismo relacional Servidor Mecanismo de armazenamento Processador Memória Base de dados local

Processo de comunicação cliente-servidor Cliente 1 2 Aplicação cliente Consulta Conjunto de resultados API de base de dados (OLE DB, ODBC, DB-Library) Net-Library do cliente 3 SQL Server Net-Libraries do servidor 5 Consulta ODS Conjunto de resultados Mecanismo relacional Mecanismo de armazenamento 4 Servidor Processador Memória Base de dados local

Serviços do SQL Server Servidor Serviço MSSQLServer Serviço SQLServerAgent Microsoft Distributed Transaction Coordinator Microsoft Search Gestão de dados Processamento de transacções e pesquisas Integridade dos dados Trabalhos Alertas Operadores Gestão de transacções distribuídas Catálogos de texto Índices de texto

Integração do SQL Server Integrando o SQL Server com sistemas operativos Integrando o SQL Server com o Windows 2000 Integrando o SQL Server com outras aplicações de servidor da Microsoft

Integrando o SQL Server com sistemas operativos Windows 2000 Windows NT Windows Me, 98 e 95 Outro fabricante Navegadores Internet Cliente Servidor Windows 2000 Windows NT Windows Me Windows 98 Windows CE

Integrando o SQL Server com o Windows 2000 Active Directory Segurança Suporte a vários processadores Microsoft Event Viewer Component Services do Windows 2000 System Monitor do Windows 2000 Microsoft Internet Information Services Windows Clustering

Integrando o SQL Server com outras aplicações de servidor da Microsoft Internet Microsoft Windows 2000 Server com soluções de aumento de desempenho (SA) para o Internet Storefront Microsoft Systems Management Server SQL Server Host IBM Microsoft Exchange Server Microsoft Host Integration Server 2000 Dados e aplicações

Bases de dados do SQL Server Tipos de bases de dados Objectos de bases de dados Fazendo referência aos objectos do SQL Server Tabelas do sistema Recuperação de metadados

Tipos de bases de dados Bases de dados de sistema master model tempdb msdb distribution pubs Northwind User1 Bases de dados de utilizador

Objectos de base de dados PK Índice agrupado Anderson Anderson Barr... FK Procedimento armazenado UpdatePhone Trigger EmpNum LastName FirstName CtryCode Extension integer longstring varchar(20) char(2) char(6) LastMod longstring 10191 Labrie Angela FR x19891 \HR\KarlD 10192 Labrie Eva FR x19433 \HR\KarlD 10202 Martin Jose SP x21467 \HR\AmyL EmployeePhoneView SELECT lastname, firstname, extension FROM employee Check x#####

Fazendo referência aos objectos do SQL Server Nomes totalmente qualificados servidor.base_de_dados.proprietário.objeto Nomes especificados parcialmente O servidor padrão é a ocorrência actual no servidor local A base de dados padrão é a base de dados actual O proprietário padrão é o nome do utilizador contido na base de dados CREATE TABLE Northwind.dbo.OrderHistory...

Tabelas do sistema As tabelas do sistema armazenam informações (metadados) sobre o sistema e objectos de base de dados O catálogo da base de dados armazena metadados sobre uma base de dados específica O catálogo do sistema armazena metadados sobre o sistema inteiro e todos as outras bases de dados

Recuperação de metadados Procedimentos armazenados do sistema EXEC sp_help Employees Funções do sistema e dos metadados SELECT USER_NAME(10) Views do esquema de informações SELECT * FROM INFORMATION_SCHEMA.TABLES

Segurança do SQL Server Autenticação de login Contas de utilizador e cargos do base de dados Tipos de cargos Validação de permissões

Autenticação de login AUTENTICAÇÃO Utilizador ou grupo do Windows 2000 Windows 2000 OU O SQL Server verifica a conexão confiável SQL Server Conta de login do SQL Server O SQL Server verifica o nome e a senha

Contas de utilizador e cargos da base de dados Utilizador ou grupo do Windows 2000 Windows 2000 O SQL Server verifica a conexão confiável O SQL Server atribui logins a contas de utilizadores e cargos Utilizador da base de dados OU SQL Server Cargo de base de dados Conta de login do SQL Server O SQL Server verifica o nome e a senha

Tipos de cargos Cargos fixos de servidor Grupos de privilégios administrativos no nível do servidor Cargos fixos de base de dados Grupos de privilégios administrativos no nível da base de dados Cargos de base de dados definidos pelo utilizador Representam o trabalho executado por um grupo de funcionários de sua organização

Validação de permissões 1 2 3 Permissões OK; o comando é executado O utilizador da base de dados executa o comando SELECT * FROM Members O SQL Server verifica as permissões Permissões não OK; retorno de Erro

Trabalhando com o SQL Server Administrando uma base de dados do SQL Server Implementando uma base de dados do SQL Server Seleccionando uma arquitectura de aplicação para o SQL Server Criando aplicações com APIs de base de dados

Administrando uma base de dados do SQL Server Tarefas administrativas comuns SQL Server Enterprise Manager Assistentes e ferramentas de administração do SQL Server Ferramentas de gestão do prompt de comando do SQL Server Help e Books Online do SQL Server

Implementando uma base de dados do SQL Server Criando a base de dados Criando a base de dados e seus objectos Testando e ajustando a aplicação e a base de dados Planeando a implementação

Seleccionando uma arquitectura de aplicação para o SQL Server Servidor Inteligente (2 camadas) Cliente Inteligente (2 camadas) N camadas Internet Apresentação Cliente do navegador Apresentação Apresentação Apresentação Negócios Negócios Negócios Negócios Dados Dados Dados Dados

Criando aplicações com APIs de base de dados Interfaces de objectos de dados ADO Application Programming Interfaces OLE DB Outras fontes de dados Bases de dados relacionais

Laboratório A: Visão geral do SQL Server

Revisão O que é o SQL Server? Integração do SQL Server Bases de dados do SQL Server Segurança do SQL Server Trabalhando com o SQL Server

Visão geral da programação do SQL Server

Visão geral Criando a arquitectura de aplicações empresariais Ferramentas de programação do SQL Server Linguagem de programação Transact-SQL Elementos do Transact-SQL Outros elementos de linguagem Maneiras de executar as instruções Transact-SQL

Criando a arquitetura de aplicativos empresariais Identificando camadas lógicas Criando camadas físicas Acedendo a dados

Identificando camadas lógicas Camada de apresentação de dados Aplicações personalizadas do Windows Navegadores da Web Camada lógica de aplicação Componentes personalizados Aplicações e serviços integrados Regras comerciais Regras de dados Camada de serviços de dados Lógica de acesso a dados Armazenamento de dados

Criando camadas físicas Modelo de duas camadas Apresentação de dados Lógica de aplicativo Serviços de dados Modelo de várias camadas IIS Componentes Apresentação de dados Lógica de aplicação Serviços de dados

Acedendo a dados Aplicações e componentes Access Excel Cliente personalizado Navegador IIS Consumidores de dados Fornecedor de dados ActiveX Data Objects Fornecedores de dados OLE DB (serviços) Cursores Processadores de consulta Serviços comerciais Fornecedores de dados OLE DB (dados) ODBC SQL Server Jet Active Directory Exchange Excel Outros fornecedores OLE DB

Ferramentas de programação do SQL Server SQL Query Analyzer Efectua a sintaxe de codificação por cores automaticamente Várias janelas de consulta Visualizações personalizáveis de conjuntos de resultados Planos gráficos de execução Executa partes de scripts Utilitário osql Utilitário de linha de comando

Linguagem de programação Transact-SQL Implementação do padrão ISO ANSI-SQL no SQL Server Pode ser executada em qualquer produto compatível com nível de entrada Contém funcionalidade exclusiva adicional

Elementos do Transact-SQL Instruções de Data Control Language Instruções de Data Definition Language Instruções de Data Manipulation Language Nomes de objectos do SQL Server Orientações de nomeação

Instruções de Data Control Language Definem ou alteram permissões GRANT DENY REVOKE Por omissão, somente os participantes do cargo sysadmin, dbcreator, db_owner ou db_securityadmin podem executar

Instruções de Data Definition Language Definem os objectos da base de dados CREATE tipo_de_objeto nome_do_objeto ALTER tipo_de_objeto nome_do_objeto DROP tipo_de_objeto nome_do_objeto

Instruções de Data Manipulation Language Operam com os dados contidos na base de dados SELECT INSERT UPDATE DELETE

Nomes de objectos do SQL Server Identificadores padrão O primeiro carácter deve ser um carácter alfabético Outros caracteres podem incluir letras, números ou símbolos Os nomes de identificadores que começam com um símbolo têm utilizações especiais Identificadores delimitados Use quando os nomes contiverem espaços incorporados Use quando palavras reservadas forem partes de nomes Delimite-os por parêntesis rectos ([ ]) ou aspas duplas (" ")

Orientações de nomeação Quando possível, usar nomes significativos Manter nomes curtos Usar convenções de nomeação simples e claras Escolher um identificador que diferencie tipos de objecto Views Procedimentos armazenados Manter a exclusividade dos nomes de objectos e utilizadores

Outros elementos de linguagem Variáveis locais Operadores Funções Exemplos de funções Elementos de linguagem de controle de fluxo Comentários

Variáveis locais Definidas pelo utilizador com a instrução DECLARE Recebem valores através de uma instrução SET ou SELECT USE Northwind DECLARE @vlastname char(20), @vfirstname varchar(11) SET @vlastname = 'Dodsworth' SELECT @vfirstname = FirstName FROM Northwind..Employees WHERE LastName = @vlastname PRINT @vfirstname + ' ' + @vlastname GO

Operadores Tipos de operadores Aritmético Comparação Concatenação de sequências de caracteres Lógico Níveis de precedência dos operadores

Funções Funções agregadas SELECT AVG (UnitPrice) FROM Products Funções escalares SELECT DB_NAME() AS 'database' Funções de conjunto de registros SELECT * FROM OPENQUERY (OracleSvr, 'SELECT ENAME, EMPNO FROM SCOTT.EMP')

Exemplos de funções SELECT 'ANSI:' AS Region, CONVERT(varchar(30), GETDATE(), 102) AS Style UNION SELECT 'European:', CONVERT(varchar(30), GETDATE(), 113) UNION SELECT 'Japanese:', CONVERT(varchar(30), GETDATE(), 111) Resultado Region ANSI: European: Japanese: Style 2000.03.22 1 22 Mar 1 2000 14:20:00:010 2000/03/22

Elementos de linguagem de controle de fluxo Nível de instrução Blocos BEGIN END Blocos IF ELSE Construções com WHILE Nível de registro IF USER_NAME() <> 'dbo' BEGIN RAISERROR('Must be sysadmin to Perform Operation', 10, 1) RETURN END ELSE DBCC CHECKDB(Northwind) Expressão CASE

Comentários Comentários em linha SELECT ProductName,(UnitsInStock + UnitsOnOrder) AS Max -- Calcula o inventário, SupplierID FROM Products Comentários em bloco /* ** Este código recupera todos os registros da tabela products ** e exibe o preço unitário, o preço unitário com aumento ** de 10% e o nome do produto. */ SELECT UnitPrice, (UnitPrice * 1.1), ProductName FROM Products

Maneiras de executar as instruções Transact-SQL Construindo instruções de forma dinâmica Usando lotes (batches) Usando scripts Usando transacções Usando a Extensible Markup Language

Construindo instruções de forma dinâmica Use EXECUTE com literais e variáveis de sequências de caracteres Use quando for necessário atribuir o valor da variável em tempo de execução As variáveis e tabelas temporárias permanecerão somente durante a execução DECLARE @dbname varchar(30), @tablename varchar(30) SET @dbname = 'Northwind' SET @tablename = 'Products' EXECUTE ('USE' + @dbname + 'SELECT * FROM' + @tablename)

Usando lotes Uma ou mais instruções Transact-SQL submetidas em conjunto Definir um lote com a instrução GO Como o SQL Server processa lotes Instruções que você não pode combinar em um lote CREATE PROCEDURE CREATE VIEW CREATE TRIGGER CREATE RULE CREATE DEFAULT

Usando scripts Contêm instruções gravadas Podem ser escritos em qualquer editor de texto Grave usando a extensão de nome de arquivo.sql São executados no SQL Query Analyzer ou no utilitário osql Use para a recriação de objectos de bases de dados ou para executar instruções várias vezes

Usando transações Processadas como um lote Integridade de dados garantida Alterações na base de dados são aplicadas juntas ou desfeitas BEGIN TRANSACTION UPDATE savings SET balance = (amount - 100) WHERE custid = 78910 <Rollback transaction if error> UPDATE checking SET balance = (amount + 100) WHERE custid = 78910 <Rollback transaction if error> COMMIT TRANSACTION

Usando a Extensible Markup Language Permitindo que um navegador cliente formate dados Especificando a opção FOR XML AUTO Especificando a opção FOR XML RAW Identificando limitações na utilização da cláusula FOR XML

Práticas recomendadas Mantenha a lógica comercial no servidor como procedimentos armazenados Use a sintaxe do ANSI SQL Escolha uma convenção de nomeação adequada Salve as instruções como scripts e faça um comentário completo delas Formate as instruções Transact-SQL de modo que os outros utilizadores as consigam ler

Laboratório A: Visão geral do Transact-SQL

Revisão Criando a arquitectura de aplicações empresariais Ferramentas de programação do SQL Server Linguagem de programação Transact-SQL Elementos do Transact-SQL Outros elementos de linguagem Maneiras de executar as instruções Transact-SQL

Introdução ao Transact-SQL

Visão geral Linguagem de programação Transact-SQL Tipos de instruções Transact-SQL Elementos de sintaxe do Transact-SQL

Linguagem de programação Transact-SQL Implementa o padrão SQL-92 em nível de acesso publicado pelo ANSI e pela ISO Pode ser executada em qualquer produto compatível com nível de acesso Contém funcionalidade exclusiva adicional

Tipos de instruções Transact-SQL Instruções de DDL Instruções de DCL Instruções de DML

Instruções de DDL Definem os objectos da base de dados CREATE nome_do_objeto ALTER nome_do_objeto DROP nome_do_objeto Devem ter as permissões apropriadas USE northwind CREATE TABLE customer (cust_id int, company varchar(40), contact varchar(30), phone char(12) ) GO

Instruções de DCL Definem ou alteram permissões GRANT DENY REVOKE Devem ter as permissões apropriadas USE northwind GRANT SELECT ON products TO public GO

Instruções de DML Alteram dados ou recuperam informações SELECT INSERT UPDATE DELETE Devem ter as permissões apropriadas SELECT categoryid, productname, productid, unitprice USE northwind SELECT categoryid, productname, productid, unitprice FROM products GO

Elementos de sintaxe do Transact-SQL Directivas em lotes Comentários Identificadores Tipos de dados Variáveis Funções do sistema Operadores Expressões Elementos de linguagem de controle de fluxo Palavras-chave reservadas

Directivas em lotes GO Define os lotes de instruções Transact-SQL para ferramentas e utilitários Não é uma instrução Transact-SQL real EXEC Executa uma função definida pelo utilizador, um procedimento do sistema, um procedimento armazenado definido pelo utilizador ou um procedimento armazenado estendido Controla a execução de uma sequência de caracteres num lote do Transact-SQL

Comentários Comentários em linha Exemplo 1 USE northwind SELECT productname, (unitsinstock - unitsonorder) -- Calcula o inventário, supplierid FROM products GO Comentários em bloco Exemplo 3 /* Este código recupera todas as linhas da tabela products e exibe o preço unitário, o preço unitário aumentado em 10% e o nome do produto. */ USE northwind SELECT unitprice, (unitprice * 1.1), productname FROM products GO

Identificadores Identificadores padrão O primeiro carácter deve ser um carácter alfabético Outros caracteres podem incluir letras, numerais ou símbolos Os nomes de identificadores que começam com um símbolo têm utilizações especiais Identificadores delimitados Use quando os nomes contiverem espaços incorporados Use quando palavras reservadas forem partes de nomes Delimite-os por parêntesis rectos ([ ]) ou aspas duplas (" ")

Directrizes de nomeação de identificadores Mantenha os nomes curtos Quando possível, empregue nomes significativos Use convenções de nomeação simples e fáceis Use um identificador que diferencie tipos de objecto Views Procedimentos armazenados Mantenha a exclusividade dos nomes de objectos e utilizadores Tabela Sales e cargo sales

Tipos de dados Numbers Dates Characters Binary Unique Identifiers SQL Variants Image e Text Tables Cursors Tipos de dados definidos pelo utilizador

Variáveis Definidas pelo utilizador com a instrução DECLARE precedida de um símbolo @ Recebem valores através de uma instrução SET ou SELECT precedida de um símbolo @ Têm âmbito local USE northwind DECLARE @EmpID varchar(11),@vlname char(20) SET @vlname = 'Dodsworth' SELECT @EmpID = employeeid FROM employees WHERE LastName = @vlname SELECT @EmpID AS EmployeeID GO

Funções do sistema Funções agregadas USE northwind SELECT AVG (unitprice) AS AvgPrice FROM products GO Funções escalares USE northwind SELECT DB_NAME() AS 'database GO Funções de definição de registros SELECT * FROM OPENQUERY (OracleSvr, 'SELECT name, id FROM owner.titles')

Exemplos de funções do sistema Exemplo 1 SELECT 'ANSI:', CONVERT(varchar(30), GETDATE(), 102) AS Style UNION SELECT 'Japanese:', CONVERT(varchar(30), GETDATE(), 111) UNION SELECT 'European:', CONVERT(varchar(30), GETDATE(), 113) GO Resultado ANSI: Japanese: European: Style 1998.11.20 11/20/98 20 Nov 1998 16:44:12:857

Operadores Tipos de operadores Aritmético Comparação Concatenação de sequências de caracteres Lógico Níveis de precedência dos operadores

Expressões Combinação de símbolos e operadores Avaliação como um único valor escalar Resultado de tipo de dados dependentes dos elementos na expressão USE northwind SELECT OrderID, ProductID,(UnitPrice * Quantity) as ExtendedAmount FROM [Order Details] WHERE (UnitPrice * Quantity) > 10000 GO

Elementos de linguagem de controle de fluxo Exemplo 2 Nível de instrução Blocos BEGIN END Blocos IF ELSE Construções com WHILE Nível de registro Expressão CASE DECLARE @n tinyint SET @n = 5 IF (@n BETWEEN 4 and 6) BEGIN WHILE (@n > 0) BEGIN SELECT @n AS 'Number',CASE WHEN (@n % 2) = 1 THEN 'EVEN' ELSE 'ODD' END AS 'Type' SET @n = @n - 1 END END ELSE PRINT 'SEM ANÁLISE' GO

Palavras-chave reservadas Nomes de identificadores que têm significado especial Palavras-chave do Transact-SQL Palavras-chave do ANSI SQL-92 Palavras-chave reservadas do ODBC Não use palavras-chave reservadas para nomes de identificadores

Laboratório A: Usando o Books Online do SQL Server

Revisão Linguagem de programação Transact-SQL Tipos de instruções Transact-SQL Elementos de sintaxe do Transact-SQL

Obtenção de dados

Visão geral Obtendo dados usando a instrução SELECT Filtrando dados Formatando conjuntos de resultados Como as consultas são processadas Como as consultas são colocadas em cache automaticamente Considerações sobre o desempenho

Visão geral Obtendo dados usando a instrução SELECT Filtrando dados Formatando conjuntos de resultados Considerações sobre o desempenho

Obtendo dados usando a instrução SELECT Usando a instrução SELECT Especificando colunas Usando a cláusula WHERE para especificar registos

Usando a instrução SELECT A lista de selecção especifica as colunas A cláusula WHERE especifica a condição que restringe a consulta A cláusula FROM especifica a tabela Sintaxe parcial SELECT [ALL DISTINCT] <lista_de_selecção> FROM {<origem_da_tabela>} [, n] WHERE <condição_de_pesquisa>

Especificando colunas USE northwind SELECT employeeid, lastname, firstname, title FROM employees GO employeeid lastname firstname title 1 Davolio Nancy Sales Representative 2 Fuller Andrew Vice President, Sales 3 Leverling Janet Sales Representative 4 Peacock Margaret Sales Representative 5 Buchanan Steven Sales Manager 6 Suyama Michael Sales Representative 7 King Robert Sales Representative 8 Callahan Laura Inside Sales Coordinator 9 Dodsworth Anne Sales Representative

Usando a cláusula WHERE para especificar registos USE northwind SELECT employeeid, lastname, firstname, title FROM employees WHERE employeeid = 5 GO employeeid lastname firstname title 5 Buchanan Steven Sales Manager

Filtrando dados Usando operadores de comparação Usando comparações de sequências Usando operadores lógicos Recuperando um intervalo de valores Usando uma lista de valores como critérios de pesquisa Recuperando valores desconhecidos

Usando operadores de comparação USE northwind SELECT lastname, city FROM employees WHERE country = 'USA GO Exemplo 1 lastname Davolio Fuller Leverling Peacock Callahan city Seattle Tacoma Kirkland Redmond Seattle

Usando comparações de sequências USE northwind SELECT companyname FROM customers WHERE companyname LIKE '%Restaurant% GO companyname GROSELLA-Restaurante Lonesome Pine Restaurant Tortuga Restaurante

Usando operadores lógicos Exemplo 1 USE northwind SELECT productid, productname, supplierid, unitprice FROM products WHERE (productname LIKE 'T%' OR productid = 46) AND (unitprice > 16.00) GO productid productname supplierid unitprice 14 Tofu 6 23.25 29 Thüringer Rostbratwurst 12 123.79 62 Tarte au sucre 29 49.3

Recuperando um intervalo de valores USE northwind SELECT productname, unitprice FROM products WHERE unitprice BETWEEN 10 AND 20 GO Exemplo 1 productname unitprice Chai 18 Chang 19 Aniseed Syrup 10 Genen Shouyu 15.5 Pavlova 17.45 Sir Rodney s Scones 10

Usando uma lista de valores como critérios de pesquisa USE northwind SELECT companyname, country FROM suppliers WHERE country IN ('Japan', 'Italy') GO Exemplo 1 companyname Tokyo Traders Mayumi s Formaggi Fortini s.r.l. Pasta Buttini s.r.l. country Japan Japan Italy Italy

Recuperando valores desconhecidos USE northwind SELECT companyname, fax FROM suppliers WHERE fax IS NULL GO companyname Exotic Liquids New Orleans Cajun Delights Tokyo Traders Cooperativa de Quesos Las Cabras fax NULL NULL NULL NULL

Formatando conjuntos de resultados Classificando dados Ocultando registos duplicados Alterando nomes de colunas Usando literais

Classificando dados Exemplo 1 USE northwind SELECT productid, productname, categoryid, unitprice FROM products ORDER BY categoryid, unitprice DESC GO productid productname categoryid unitprice 38 Cote de Blaye 1 263.5000 43 Ipoh Coffee 1 46.0000 2 Chang 1 19.0000 63 Vegie-spread 2 43.9000 8 Northwoods Cranberry Sauce 2 40.0000 61 Sirop d'érable 2 28.5000

Ocultando registos duplicados USE northwind SELECT DISTINCT country FROM suppliers ORDER BY country GO Exemplo 1 country Australia Brazil Canada Denmark Finland France Germany Italy Japan Netherlands Norway Singapore Spain Sweden UK USA

Alterando nomes de colunas USE northwind SELECT firstname AS First, lastname AS Last,employeeid AS 'Employee ID:' FROM employees GO First Last Employee ID: Nancy Davolio 1 Andrew Fuller 2 Janet Leverling 3 Margaret Peacock 4 Steven Buchanan 5 Michael Suyama 6 Robert King 7 Laura Callahan 8 Anne Dodsworth 9

Usando literais USE northwind SELECT firstname, lastname, 'Identification number:', employeeid FROM employees GO firstname lastname employeeid Nancy Davolio Identification Number: 1 Andrew Fuller Identification Number: 2 Janet Leverling Identification Number: 3 Margaret Peacock Identification Number: 4 Steven Buchanan Identification Number: 5 Michael Suyama Identification Number: 6 Robert King Identification Number: 7 Laura Callahan Identification Number: 8 Anne Dodsworth Identification Number: 9

Como as consultas são processadas Consultas sem cache (ad hoc) Analisar Resolver Otimizar Compilar Executar Consultas em cache Primeira execução Analisar Resolver Otimizar Compilar Executar Execução posterior Cache de procedimentos Executar

Como as consultas são colocadas em cache automaticamente Lotes ad hoc USE northwind SELECT * FROM products WHERE unitprice = $12.5 SELECT * FROM products WHERE unitprice = 12.5 SELECT * FROM products WHERE unitprice = $12.5 GO Atribuição automática de parâmetros USE library SELECT * FROM member WHERE member_no = 7890 SELECT * FROM member WHERE member_no = 1234 SELECT * FROM member WHERE member_no = 7890 GO

Considerações sobre o desempenho Condições de pesquisa NOT atrasam a recuperação de dados Condições de pesquisa LIKE atrasam a recuperação de dados Correspondências exactas ou intervalos aceleram a recuperação de dados A cláusula ORDER BY atrasa a recuperação de dados

Práticas recomendadas Use a cláusula DISTINCT para ocultar registos duplicados em conjuntos de resultados Facilite a leitura dos conjuntos de resultados, alterando os nomes de coluna ou usando literais Em listas de colunas de várias linhas, coloque vírgulas antes dos nomes de colunas, excluindo a primeira coluna

Laboratório A: Recuperando dados e manipulando conjuntos de resultados

Revisão Recuperando dados usando a instrução SELECT Filtrando dados Formatando conjuntos de resultados Como as consultas são processadas Como as consultas são colocadas em cache automaticamente Considerações sobre o desempenho

Agregação de dados

Visão geral Listando os primeiros n valores com TOP n Usando funções agregadas Noções básicas sobre a cláusula GROUP BY Gerando valores agregados em conjuntos de resultados Usando as cláusulas COMPUTE e COMPUTE BY

Listando os primeiros n valores com TOP n Lista apenas os n primeiros registros de um conjunto de resultados Especifica o intervalo de valores na cláusula ORDER BY Retorna correspondências se WITH TIES for usada Exemplo 1 USE northwind SELECT TOP 5 orderid, productid, quantity FROM [order details] ORDER BY quantity DESC GO Exemplo 2 USE northwind SELECT TOP 5 WITH TIES orderid, productid, quantity FROM [order details] ORDER BY quantity DESC GO

Usando funções agregadas Funções agregadas Descrição AVG COUNT COUNT (*) MAX MIN SUM STDEV STDEVP VAR VARP Média de valores em uma expressão numérica Número de valores em uma expressão Número de registros selecionados Maior valor da expressão Menor valor da expressão Valores totais em uma expressão numérica Desvio padrão de todos os valores Desvio padrão da população Variância estatística de todos os valores Variância estatística de todos os valores da população

Usando funções agregadas com valores nulos A maioria das funções agregadas ignora valores nulos A função COUNT (*) conta todos os registos com valores nulos USE northwind SELECT COUNT (*) FROM employees GO USE northwind SELECT COUNT(reportsto) FROM employees GO Exemplo 1 Exemplo 2

Noções básicas sobre a cláusula GROUP BY Usando a cláusula GROUP BY Usando a cláusula GROUP BY com a cláusula HAVING

Usando a cláusula GROUP BY USE northwind SELECT productid, orderid,quantity FROM orderhist GO productid orderid quantity 1 1 5 1 1 10 2 1 10 2 2 25 3 1 15 3 2 30 USE northwind SELECT productid,sum(quantity) AS total_quantity FROM orderhist GROUP BY productid GO Apenas os registos que satisfazem às condições da cláusula WHERE serão agrupados productid total_quantity 1 15 2 35 3 45 productid total_quantity 2 35 USE northwind SELECT productid,sum(quantity) AS total_quantity FROM orderhist WHERE productid = 2 GROUP BY productid GO

Usando a cláusula GROUP BY com a cláusula HAVING USE northwind SELECT productid, orderid,quantity FROM orderhist GO productid orderid quantity 1 1 5 1 1 10 2 1 10 2 2 25 USE northwind SELECT productid, SUM(quantity) AS total_quantity FROM orderhist GROUP BY productid HAVING SUM(quantity)>=30 GO productid total_quantity 2 35 3 45 3 1 15 3 2 30

Gerando valores agregados em conjuntos de resultados Usando a cláusula GROUP BY com o operador ROLLUP Usando a cláusula GROUP BY com o operador CUBE Usando a função GROUPING

Usando a cláusula GROUP BY com o operador ROLLUP USE northwind SELECT productid, orderid, SUM(quantity) AS total_quantity FROM orderhist GROUP BY productid, orderid WITH ROLLUP ORDER BY productid, orderid GO productid orderid total_quantity NULL NULL 95 1 NULL 15 1 1 5 1 2 10 2 NULL 35 2 1 10 2 2 25 3 NULL 45 3 1 15 3 2 30 Descrição Total geral Resume apenas os registros de productid 1 Valores de detalhe de productid 1, orderid 1 Valores de detalhe de productid 1, orderid 2 Resume apenas os registros de productid 2 Valores de detalhe de productid 2, orderid 1 Resume apenas os registros de productid 3 Valores de detalhe de productid 3, orderid 1 Valores de detalhe de productid 3, orderid 2

Usando a cláusula GROUP BY com o operador CUBE USE northwind SELECT productid, orderid, SUM(quantity) AS total_quantity FROM orderhist GROUP BY productid, orderid WITH CUBE ORDER BY productid, orderid GO O operador CUBE produz dois valores de resumo a mais que o operador ROLLUP productid orderid total_quantity NULL NULL 95 NULL 1 30 NULL 2 65 1 NULL 15 1 1 5 1 2 10 2 NULL 35 2 1 10 2 2 25 3 NULL 45 3 1 15 3 2 30 Descrição Total geral Resume todos os registros de orderid 1 Resume todos os registros de orderid 2 Resume apenas os registros de productid 1 Valores de detalhe de productid 1, orderid 1 Valores de detalhe de productid 1, orderid 2 Resume apenas os registros de productid 2 Valores de detalhe de productid 2, orderid 1 Valores de detalhe de productid 2, orderid 2 Resume apenas os registros de productid 3 Valores de detalhe de productid 3, orderid 1 Valores de detalhe de productid 3, orderid 2

Usando a função GROUPING USE northwind SELECT productid, GROUPING (productid),orderid, GROUPING (orderid),sum(quantity) AS total_quantity FROM orderhist GROUP BY productid, orderid WITH CUBE ORDER BY productid, orderid GO 1 representa os valores de resumo na coluna anterior 0 representa os valores de detalhe na na coluna anterior productid NULL NULL NULL 1 1 1 2 2 2 3 3 3 1 1 1 0 0 0 0 0 0 0 0 0 orderid NULL 1 2 NULL 1 2 NULL 1 2 NULL 1 2 1 0 0 1 0 0 1 0 0 1 0 0 total_quantity 95 30 65 15 5 10 35 10 25 45 15 30