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
Serviços de dados
Apresentação de dados
Serviços de dados
Lógica de aplicação
Apresentação de dados
IIS Componentes
Modelo de duas camadas
Modelo de várias camadas
Lógica de aplicativo
Acedendo a dados
Aplicações e componentes Navegador
IIS
ActiveX Data Objects
Consumidores
de dados
Fornecedor
de dados
Access Excel
Cliente
personalizado
Fornecedores de dados OLE DB (serviços)
Cursores
Processadores
de consulta
Serviços
comerciais
Fornecedores de dados OLE DB (dados)
ODBC Exchange
Active
Directory
Jet
SQL Server 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
 Funções escalares
 Funções de conjunto de registros
SELECT *
FROM OPENQUERY
(OracleSvr, 'SELECT ENAME, EMPNO FROM SCOTT.EMP')
SELECT AVG (UnitPrice) FROM Products
SELECT DB_NAME() AS 'database'
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
ANSI:
European:
Japanese:
Style
1
1
2000.03.22
22 Mar 2000 14:20:00:010
2000/03/22
Region
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
 Expressão CASE
IF USER_NAME() <> 'dbo'
BEGIN
RAISERROR('Must be sysadmin
to Perform Operation',
10, 1)
RETURN
END
ELSE
DBCC CHECKDB(Northwind)
Comentários
 Comentários em linha
 Comentários em bloco
SELECT ProductName
,(UnitsInStock + UnitsOnOrder) AS Max -- Calcula o inventário
, SupplierID
FROM Products
/*
** 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
Use a sintaxe do ANSI SQL
Use a sintaxe do ANSI SQL
Mantenha a lógica comercial no servidor como procedimentos
armazenados
Mantenha a lógica comercial no servidor como procedimentos
armazenados
Salve as instruções como scripts e faça um comentário
completo delas
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
Formate as instruções Transact-SQL de modo que os
outros utilizadores as consigam ler
Escolha uma convenção de nomeação adequada
Escolha uma convenção de nomeação adequada
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

O SQL Server é um sistema de gestão de banco de dados relacional, desenvolvido pela Microsoft. É uma ferramenta que permite armazenar, processar, proteger e gerir dados.

  • 1.
  • 2.
    Visão geral  Criandoa 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
  • 3.
     Criando aarquitetura de aplicativos empresariais  Identificando camadas lógicas  Criando camadas físicas  Acedendo a dados
  • 4.
    Identificando camadas lógicas Camadade 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
  • 5.
    Criando camadas físicas Serviçosde dados Apresentação de dados Serviços de dados Lógica de aplicação Apresentação de dados IIS Componentes Modelo de duas camadas Modelo de várias camadas Lógica de aplicativo
  • 6.
    Acedendo a dados Aplicaçõese componentes Navegador IIS ActiveX Data Objects Consumidores de dados Fornecedor de dados Access Excel Cliente personalizado Fornecedores de dados OLE DB (serviços) Cursores Processadores de consulta Serviços comerciais Fornecedores de dados OLE DB (dados) ODBC Exchange Active Directory Jet SQL Server Excel Outros fornecedores OLE DB
  • 7.
    Ferramentas de programaçãodo 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
  • 8.
    Linguagem de programaçãoTransact-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
  • 9.
     Elementos doTransact-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
  • 10.
    Instruções de DataControl 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
  • 11.
    Instruções de DataDefinition 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
  • 12.
    Instruções de DataManipulation Language  Operam com os dados contidos na base de dados  SELECT  INSERT  UPDATE  DELETE
  • 13.
    Nomes de objectosdo 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 (" ")
  • 14.
    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
  • 15.
     Outros elementosde linguagem  Variáveis locais  Operadores  Funções  Exemplos de funções  Elementos de linguagem de controle de fluxo  Comentários
  • 16.
    Variáveis locais  Definidaspelo 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
  • 17.
    Operadores  Tipos deoperadores  Aritmético  Comparação  Concatenação de sequências de caracteres  Lógico  Níveis de precedência dos operadores
  • 18.
    Funções  Funções agregadas Funções escalares  Funções de conjunto de registros SELECT * FROM OPENQUERY (OracleSvr, 'SELECT ENAME, EMPNO FROM SCOTT.EMP') SELECT AVG (UnitPrice) FROM Products SELECT DB_NAME() AS 'database'
  • 19.
    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 ANSI: European: Japanese: Style 1 1 2000.03.22 22 Mar 2000 14:20:00:010 2000/03/22 Region
  • 20.
    Elementos de linguagemde controle de fluxo  Nível de instrução  Blocos BEGIN…END  Blocos IF…ELSE  Construções com WHILE  Nível de registro  Expressão CASE IF USER_NAME() <> 'dbo' BEGIN RAISERROR('Must be sysadmin to Perform Operation', 10, 1) RETURN END ELSE DBCC CHECKDB(Northwind)
  • 21.
    Comentários  Comentários emlinha  Comentários em bloco SELECT ProductName ,(UnitsInStock + UnitsOnOrder) AS Max -- Calcula o inventário , SupplierID FROM Products /* ** 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
  • 22.
     Maneiras deexecutar 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
  • 23.
    Construindo instruções deforma 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)
  • 24.
    Usando lotes  Umaou 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
  • 25.
    Usando scripts  Contêminstruçõ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
  • 26.
    Usando transações  Processadascomo 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
  • 27.
    Usando a ExtensibleMarkup 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
  • 28.
    Práticas recomendadas Use asintaxe do ANSI SQL Use a sintaxe do ANSI SQL Mantenha a lógica comercial no servidor como procedimentos armazenados Mantenha a lógica comercial no servidor como procedimentos armazenados Salve as instruções como scripts e faça um comentário completo delas 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 Formate as instruções Transact-SQL de modo que os outros utilizadores as consigam ler Escolha uma convenção de nomeação adequada Escolha uma convenção de nomeação adequada
  • 29.
    Laboratório A: Visãogeral do Transact-SQL
  • 30.
    Revisão  Criando aarquitectura 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