SQL Server 2005 para Desenvolvedores

Propaganda
SQL Server 2005 para
Desenvolvedores
Robin Dewson
Rio de Janeiro . 2006
SQL Server 2005 para Desenvolvedores
Do original Beginning SQL Server 2005 for Developers Copyright © 2006 da Editora Alta Books Ltda.
Authorized translation from English language edition, entitled Beginning SQL Server 2005 for Developers, by
Robin Dewson, published by Apress L.P. Copyright © 2006 by Apress L.P. PORTUGUESE language edition published
by Editora Alta Books, Copyright © 2006 by Editora Alta Books.
Todos os direitos reservados e protegidos pela Lei 5988 de 14/12/73. Nenhuma parte deste livro, sem autorização
prévia por escrito da editora, poderá ser reproduzida ou transmitida sejam quais forem os meios empregados:
eletrônico, mecânico, fotográfico, gravação ou quaisquer outros. Todo o esforço foi feito para fornecer a mais completa
e adequada informação, contudo a editora e o(s) autor(es) não assumem responsabilidade pelos resultados e usos
da informação fornecida. Recomendamos aos leitores testar a informação, bem como tomar todos os cuidados
necessários (como o backup), antes da efetiva utilização. Este livro não contém CD-ROM, disquete ou qualquer
outra mídia.
Erratas e atualizações: Sempre nos esforçamos para entregar a você, leitor, um livro livre de erros técnicos ou de
conteúdo; porém, nem sempre isso é conseguido, seja por motivo de alteração de software, interpretação ou
mesmo quando alguns deslizes constam na versão original de alguns livros que traduzimos. Sendo assim, criamos
em nosso site, www.altabooks.com.br, a seção Erratas, onde relataremos, com a devida correção, qualquer erro
encontrado em nossos livros.
Avisos e Renúncia de Direitos: Este livro é vendido como está, sem garantia de qualquer tipo, seja expressa ou
implícita.
Marcas Registradas: Todos os termos mencionados e reconhecidos como Marca Registrada e/ou comercial são
de responsabilidade de seus proprietários. A Editora informa não estar associada a nenhum produto e/ou fornecedor
apresentado no livro. No decorrer da obra, imagens, nomes de produtos e fabricantes podem ter sido utilizados, e
desde já a Editora informa que o uso é apenas ilustrativo e/ou educativo, não visando ao lucro, favorecimento ou
desmerecimento do produto/fabricante.
Produção Editorial: Editora Alta Books
Coordenação Editorial: Fernanda Silveira
Tradução: Betina Macêdo
Revisão: Carolina Menegassi
Diagramação: Parêntese Design Editorial (www.parentese.com.br)
Impresso no Brasil
O código de propriedade intelectual de 1º de Julho de 1992 proíbe expressamente o uso coletivo sem autorização
dos detentores do direito autoral da obra, bem como a cópia ilegal do original. Esta prática generalizada nos
estabelecimentos de ensino, provoca uma brutal baixa nas vendas dos livros a ponto de impossibilitar os autores
de criarem novas obras.
Rua Viúva Cláudio, 291 – Jacaré
Rio de Janeiro – RJ. CEP: 20970-031
Tel: 21 3278-8069/ Fax: 3277-1253
www.altabooks.com.br
e-mail: [email protected]
Este livro é dedicado à minha família, que sofre comigo há anos, especialmente à minha esposa, Julie, que teve de agüentar o
meu stress e a minha total falta de apoio nos assuntos domésticos, o cansaço, os maus modos e meu estilo de vida anti-social,
e aos meus três filhos: Cameron, um astro do rúgbi, finalmente o primeiro da lista; Ellen (outro astro do rúgbi) – sinto pena do
homem que se casar com ela –; e Scott, o futuro piloto da Força Aérea e o pé grande da família.
Obrigado por agüentarem tudo.
Avante, Blues.
www.fat-belly.com
Sobre o autor
ROBIN DEWSON está envolvido com programação desde que comprou seu primeiro computador em
1980, um Sinclair ZX80. Fez seu primeiro aplicativo em Visual FoxPro, e ele poderia ser usado para
gerenciar um sistema da Fantasy League. Foi nesse momento, na Step One Technologies, que Robin
conheceu um grande apoio em sua vida de desenvolvimento para PC: Jon Silver, a quem ajudou em
alguns aplicativos em Visual FoxPro em troca de treinamento. Então, percebendo que o mercado para
Visual FoxPro era limitado, decidiu aprender Visual Basic e SQL Server.
Começando pelo SQL Server 6.5, Robin logo mudou para o SQL Server 7 e Visual Basic 5 e se envolveu
com o desenvolvimento de vários aplicativos para clientes, tanto no Reino Unido como nos Estados
Unidos. A partir daí, adotou o SQL Server 2000 e agora o SQL Server 2005, e o Visual Basic 6 virou VS
.NET, especializando-se em C# e VB .NET. Robin também é o co-autor de Pro SQL Server 2005 Assemblies, além de outros livros da
Apress, e também contribui para o ASPToday (www.asptoday.com). Você pode entrar em contato com ele pelo e-mail [email protected] ou no site www.fat-belly.com.
Sobre o revisor técnico
JASPER SMITH é um MVP da Microsoft e trabalha com o SQL Server há sete anos. Com freqüência, ele faz palestras nas
conferências da PASS (Professional Association for SQL Server) e também gerencia
e produz o conteúdo do site www.sqldbatips.com, incluindo alguns utilitários bem populares, como o Reporting Services Scripter
e o SQL 2005 Service Manager. Ele também passa muito tempo respondendo a perguntas nos grupos de discussão da Microsoft
sobre SQL Server.
Agradecimentos
Primeiro, meu muito obrigada aos “heróis não-reconhecidos” do clube Bedford Rugby (www.bedfordrugby.co.uk), que há muitos
anos tornam meus sábados tão especiais. Desde o grande Colin Jackson, cuja época como diretor de rúgbi afastou o fantasma do
rebaixamento em sua primeira temporada, até os jogadores que vieram e deram seu melhor pelo clube e nos fizeram muito felizes
em Twickenham. Agradeço também aos muitos amigos no clube, como Bernie McGee, Lee Smith, Nigel Rudgard, Nigel e Sarah
Crowe e Sam Roberts, para mencionar apenas alguns. Também aos meus colegas técnicos do Junior Blues, Alan Grosvenor,
Richard Porter e Rob Robson, que entenderam quando tive de me afastar por um tempo para trabalhar neste e em outros livros
da Apress.
Então, agradeço às pessoas que trabalham comigo e que tornaram minha vida um inferno com ligações às 5 da manhã (estou
brincando!), Martin Price, Henry Williams, Bill Cotton, Rakesh Juneja, assim como Jack Mason; mas foi Anthony Jawad que tornou
estes últimos nove anos possíveis. Eu não sei como te agradecer, Jock. Ah, e obrigado também aos meus parceiros de treinamento
que sofrem há muito tempo, Andrew Lockwood e Paul Goodwin... Prometo dormir cedo, perder um pouco de peso para parar de
mantê-los acordados em nosso caminho para o trabalho com o meu ronco ensurdecedor!
Quando preciso me concentrar, a música é brilhante e não há nada melhor do que o 6Music da BBC (www.bbc.co.uk/6Music).
Especialmente os seguintes apresentadores, que diariamente tocam músicas excelentes: Phill Jupitus e Phil Wilding no engraçadíssmo
show da manhã, Gideon Coe e seu mau humor e a brilhante Vic McGlynn, que me mantém acordado durante as tardes.
Além disso, quando preciso relaxar, obrigado a Debbie e Charlie Roberts do Sandy Hills Amusements em Sea Palling, Norfolk, por
terem o melhor parque de diversões da Inglaterra! Obrigado também a Axis (www.axis.com), por criar as melhores webcams do
mundo. E, finalmente, obrigado ao Friends Reunited, por me permitir entrar em contato com meu melhor amigo da faculdade,
Robert “Toad” McMillan.
Para minha sogra, Jean. Obrigado a Lanzarote por ajudar Julie em várias coisas diferentes, tanto na família como na casa. E, é
claro, ao meu sogro David, de quem todos nós sentimos saudades e a quem nunca poderemos agradecer o bastante por sua
ajuda e orientação inestimáveis. Para meus pais, Laura e Scott. Por não serem capazes de assistir televisão, já que eu a usava para
o meu ZX80, e por encontrarem as faculdades para mim; sem vocês em minha vida e me ajudando pelo caminho, eu não teria
tanta sorte e esta vida maravilhosa. Nunca poderei agradecer o suficiente, e ambos são pais maravilhosos. Para minha irmã, Carol
e seus filhos, Eleanor, Erin e Lucas, espero que agora a gente possa ir à Austrália.
Meus agradecimentos mais merecidos vão para todos da Apress, especialmente Dan Appleman, por fazer tanto para ajudar os
muitos autores; além disso, é claro, obrigado a Beth Christmas, Kylie Johnson, Tina Nielsen, Matt Moodie, Nicole Le Clerc, Ami Knox,
Kelly Winquist e ao sofredor Tony Davis, assim como todos os indexadores etc., que oferecem um trabalho inestimável ao tornarem
possível a publicação de um livro.
Obrigado também a Christian Lester por sua assistência no Capítulo 14 deste livro. Em cima da hora, devido à limitação de tempo,
ele gentilmente me ajudou neste capítulo. Não tenho como agradecer a Jasper Smith pela revisão técnica deste livro. É muito fácil
cometer um simples erro ou uma omissão, e a valiosa contribuição de alguém com a capacidade e o conhecimento de Jasper fez
deste um grande livro.
Não há dúvida de que me esqueci de muitos outros, e peço desculpas a todos.
Robin Dewson
Sumário
Capítulo
1 - Visão Geral e Instalação do SQL Server 2005 ............................................1
Por que o SQL Server 2005? .............................................................................................................................................................. 1
A evolução do SQL Server .................................................................................................................................................................. 2
Requisitos de hardware ....................................................................................................................................................................... 3
CPU ................................................................................................................................................................................... 3
Memória ............................................................................................................................................................................ 4
Espaço em disco rígido ....................................................................................................................................................... 4
Requisitos do sistema operacional ..................................................................................................................................... 4
O exemplo ........................................................................................................................................................................................... 4
Instalação ............................................................................................................................................................................................ 5
Uma Instalação Padrão ....................................................................................................................................................................... 5
Prepare-se para instalar ............................................................................................................................................................................ 5
Escolha dos componentes para instalação .......................................................................................................................... 6
Nomeie a instância ............................................................................................................................................................ 7
Contas de serviço .............................................................................................................................................................. 9
Modo de autenticação ....................................................................................................................................................... 9
Configurações de Classificação .......................................................................................................................................... 9
O banco de dados dos Reporting Services ......................................................................................................................... 10
Configurações de relatórios de erro e de uso .................................................................................................................... 11
Segurança ............................................................................................................................................................................................... 11
Contas de serviços ........................................................................................................................................................... 12
Procurando o modo de autenticação ....................................................................................................................................................... 12
Modo de autenticação do Windows ................................................................................................................................................... 12
Experimente – Modo de Autenticação do Windows ........................................................................................................... 13
Modo misto ..................................................................................................................................................................... 14
O login sa ........................................................................................................................................................................................... 15
Resumo ............................................................................................................................................................................................. 16
Capítulo
2 - SQL Server Management Studio ............................................................... 17
Uma rápida visão geral do SSMS ............................................................................................................................................................ 17
Experimente: um tour pelo SQL Server Management Studio ............................................................................................................ 18
Examine as opções do SSMS .................................................................................................................................................................. 23
O nó Environment .............................................................................................................................................................................. 23
O nó General ................................................................................................................................................................... 23
O nó Fonts and Colors ...................................................................................................................................................... 24
O nó Keyboard ................................................................................................................................................................. 24
O nó Help ........................................................................................................................................................................ 25
O nó Source Control .......................................................................................................................................................................... 25
O nó Text Editor ................................................................................................................................................................................ 26
File Extensions ................................................................................................................................................................. 26
All Languages > General .................................................................................................................................................. 26
All Languages > Tabs ....................................................................................................................................................... 26
O nó Query Execution .............................................................................................................................................................................. 27
SQL Server > General ...................................................................................................................................................... 27
SQL Server > Advanced .................................................................................................................................................... 28
SQL Server > ANSI ........................................................................................................................................................... 29
O nó Query Results .................................................................................................................................................................................. 29
SQL Server > General ...................................................................................................................................................... 29
SQL Server > Results to Grid ............................................................................................................................................ 29
SQL Server > Results to Text ............................................................................................................................................ 30
Query Editor ............................................................................................................................................................................................. 31
A ferramenta Surface Area Configuration ............................................................................................................................................... 32
Experimente: use a ferramenta Surface Area Configuration ............................................................................................... 32
Resumo ................................................................................................................................................................................................... 34
Capítulo
3 - Análise e criação de banco de dados ...................................................... 37
Definição de um banco de dados ............................................................................................................................................................. 37
Os bancos de dados do SQL Server ........................................................................................................................................................ 38
master ............................................................................................................................................................................................... 39
model ................................................................................................................................................................................................. 40
msdb .................................................................................................................................................................................................. 40
AdventureWorks/AdventureWorksDW ............................................................................................................................................... 40
Escolha o tipo do sistema de banco de dados ......................................................................................................................................... 40
OLTP ................................................................................................................................................................................................. 40
Backups ........................................................................................................................................................................... 41
Índices ............................................................................................................................................................................. 41
OLAP ....................................................................................................................................................................................................... 41
Opção do sistema de exemplo ........................................................................................................................................................... 41
Coleta de dados ....................................................................................................................................................................................... 42
Determinação das informações que devem ser armazenadas no banco de dados ................................................................................. 43
Financial Products .................................................................................................................................................................................... 43
Customers ............................................................................................................................................................................................... 44
Customer Addresses ............................................................................................................................................................................... 44
Shares ............................................................................................................................................................................................... 44
Transactions ...................................................................................................................................................................................... 44
Informações externas e ignoradas ........................................................................................................................................................... 44
Criação de relacionamentos .................................................................................................................................................................... 45
Utilização de chaves .......................................................................................................................................................................... 45
Chave primária .................................................................................................................................................................................. 45
Chave estrangeira/de referência ....................................................................................................................................................... 45
Chave candidata/alternativa .............................................................................................................................................................. 45
Um limite exclusivo em vez de uma chave primária ........................................................................................................................... 46
Criação de relacionamentos .................................................................................................................................................................... 46
Os relacionamentos e a integridade referencial ................................................................................................................................. 46
Tipos de relacionamentos .................................................................................................................................................................. 47
Um-para-Um .................................................................................................................................................................... 47
Um-para-Muitos .............................................................................................................................................................. 47
Muitos-para-Muitos ......................................................................................................................................................... 47
Mais sobre chaves estrangeiras ........................................................................................................................................................ 48
Normalização ........................................................................................................................................................................................... 49
Cada entidade deve ter um identificador exclusivo ............................................................................................................................ 50
Armazene apenas as informações que estejam diretamente relacionadas à entidade ..................................................................... 50
Evite repetir valores ou colunas ......................................................................................................................................................... 50
Formas de normalização ......................................................................................................................................................................... 50
Primeira forma normal (1NF) ............................................................................................................................................................ 50
Customers ....................................................................................................................................................................... 50
Shares ............................................................................................................................................................................. 50
Segunda forma normal ...................................................................................................................................................................... 50
Terceira forma normal ....................................................................................................................................................................... 51
Desnormalização ............................................................................................................................................................................... 51
Criação do banco de dados de exemplo .................................................................................................................................................. 52
Criação de um banco de dados no SQL Server Management Studio ............................................................................................... 52
Experimente: criação de um banco de dados no SQL Server Management Studio .............................................................. 52
Remoção de um banco de dados no SQL Server Management Studio ............................................................................................ 60
Experimente: remoção de um banco de dados no SQL Server Management Studio ............................................................ 60
Criação de um banco de dados no painel Query ............................................................................................................................... 62
Experimente: criação de um banco de dados no painel Query ........................................................................................... 62
Como funciona: criação de um banco de dados no Query Editor ............................................................................................................ 62
Resumo ................................................................................................................................................................................................... 64
C a p í t u l o 4 - Segurança ..................................................................................................... 65
Logins ...................................................................................................................................................................................................... 65
Experimente: criação de um grupo .......................................................................................................................................................... 65
Experimente: programação de um login ............................................................................................................................ 69
Logins do servidor e usuários do banco de dados ............................................................................................................................. 71
Roles ........................................................................................................................................................................................................ 71
Roles fixos do servidor ....................................................................................................................................................................... 71
Roles do banco de dados .................................................................................................................................................................. 72
Roles da aplicação ............................................................................................................................................................................. 73
Experimente: criação de um novo role de aplicação ................................................................................................................................ 74
Esquemas ................................................................................................................................................................................................ 75
Experimente: criação de esquemas e adição de objetos .................................................................................................... 76
Antes de prosseguir com a sua solução ................................................................................................................................................... 77
Experimente: como verificar quem é o proprietário do banco de dados .............................................................................. 77
Experimente: permitir que um usuário crie uma tabela ..................................................................................................... 78
Resumo ................................................................................................................................................................................................... 78
C a p í t u l o 5 - Definição de tabelas .................................................................................... 79
O que é uma tabela? ............................................................................................................................................................................... 79
Definição de uma tabela: SQL Server Management Studio ..................................................................................................................... 80
Tipos de dados diferentes ................................................................................................................................................................. 80
char ................................................................................................................................................................................. 80
nchar ............................................................................................................................................................................... 80
varchar ............................................................................................................................................................................ 81
nvarchar .......................................................................................................................................................................... 81
text ................................................................................................................................................................................. 81
ntext ................................................................................................................................................................................ 81
image .............................................................................................................................................................................. 81
int ................................................................................................................................................................................... 81
bigint ............................................................................................................................................................................... 81
smallint ........................................................................................................................................................................... 81
tinyint .............................................................................................................................................................................. 82
decimal/numeric .............................................................................................................................................................. 82
float ................................................................................................................................................................................ 82
real ................................................................................................................................................................................. 82
money ............................................................................................................................................................................. 82
smallmoney ..................................................................................................................................................................... 82
datetime .......................................................................................................................................................................... 82
smalldatetime ................................................................................................................................................................. 82
timestamp ....................................................................................................................................................................... 82
uniqueidentifier ............................................................................................................................................................... 82
binary .............................................................................................................................................................................. 83
varbinary ......................................................................................................................................................................... 83
bit ................................................................................................................................................................................... 83
XML ................................................................................................................................................................................ 83
Tipos de dados de programa diferentes ............................................................................................................................................ 83
cursor .............................................................................................................................................................................. 83
table ................................................................................................................................................................................ 83
sql_variant ...................................................................................................................................................................... 83
As colunas são mais do que simples repositórios de dados ..................................................................................................................... 83
Valores padrão .................................................................................................................................................................................. 83
Geração de valores IDENTITY .......................................................................................................................................................... 83
O uso de valores NULL ..................................................................................................................................................................... 84
Por que definir uma coluna para que ela permita um NULL? ........................................................................................................... 84
Armazenamento de imagens e de textos grandes no SQL Server .......................................................................................................... 84
Criação de uma tabela no SQL Server Management Studio ................................................................................................................... 85
Experimente: definição de uma tabela .............................................................................................................................. 85
Definição de uma tabela por meio do Query Editor ................................................................................................................................. 89
Experimente: definição de uma tabela por meio do Query Editor ....................................................................................... 89
Como funciona: definição de uma tabela por meio do painel Query ........................................................................................................ 90
Definição de uma tabela: uso de um modelo ........................................................................................................................................... 90
Experimente: criação de uma tabela usando um modelo ................................................................................................... 91
Criação e alteração de um modelo .......................................................................................................................................................... 93
Experimente: criação de um modelo a partir de um modelo existente ............................................................................... 93
O comando ALTER TABLE ..................................................................................................................................................................... 94
Experimente: adição de uma coluna ................................................................................................................................. 94
Definição das tabelas restantes ............................................................................................................................................................... 94
Definição de uma chave primária ............................................................................................................................................................. 95
Experimente: definição de uma chave primária ................................................................................................................. 95
Criação de um relacionamento ................................................................................................................................................................ 96
Experimente: criação de um relacionamento .................................................................................................................... 96
Verificar dados existentes na criação ................................................................................................................................................. 98
Force os limites de chave estrangeira ............................................................................................................................................... 98
Regra de exclusão/regra de atualização ........................................................................................................................................... 98
Uso da declaração ALTER TABLE do SQL ............................................................................................................................................. 99
Experimente: uso do SQL para a criação de um relacionamento ...................................................................................... 100
Resumo ................................................................................................................................................................................................. 100
Capítulo
6 - Criação de índices e diagramação do banco de dados...................... 101
O que é um índice? ................................................................................................................................................................................ 101
Tipos de índices ............................................................................................................................................................................... 102
Agrupado ....................................................................................................................................................................... 102
Não-agrupado ............................................................................................................................................................... 102
XML primário e secundário ............................................................................................................................................ 103
Exclusividade ................................................................................................................................................................. 103
Como determinar se um índice é bom ................................................................................................................................................... 103
Uso de colunas com pouca manutenção ......................................................................................................................................... 103
Chaves primária e estrangeira ........................................................................................................................................................ 104
Encontre registros específicos ......................................................................................................................................................... 104
Uso de índices de cobertura ............................................................................................................................................................ 104
À procura de um conjunto de informações ...................................................................................................................................... 104
Mantenha os dados em ordem ........................................................................................................................................................ 105
Como determinar se um índice é ruim ................................................................................................................................................... 105
Uso de colunas inadequadas ........................................................................................................................................................... 105
Escolha de dados inadequados ....................................................................................................................................................... 105
Inclusão de várias colunas em um índice ......................................................................................................................................... 105
Pequeno número de registros na tabela ......................................................................................................................................... 105
Revisão dos índices para melhora do desempenho .............................................................................................................................. 106
Criação de um índice ............................................................................................................................................................................. 106
Criação de um índice – Table Designer .......................................................................................................................................... 106
Experimente – criação de um índice graficamente .......................................................................................................... 107
Índices e estatísticas ........................................................................................................................................................................ 108
A sintaxe de CREATE INDEX ......................................................................................................................................................... 109
IGNORE_DUP_KEY ........................................................................................................................................................................ 109
DROP_EXISTING ........................................................................................................................................................................... 110
Criação de um índice no Query Editor – modelo ................................................................................................................................... 110
Experimente: use um modelo do Query Editor para criar um índice ................................................................................. 110
Criação de um índice – Query Editor– código SQL ......................................................................................................................... 112
Experimente: criação de um índice no Query Editor ........................................................................................................ 112
Retirada de um índice ............................................................................................................................................................................ 114
Experimente: retirada de um índice no Query Editor ....................................................................................................... 114
Alteração de um índice no Query Editor .......................................................................................................................................... 115
Experimente: alteração de um índice no Query Editor ..................................................................................................... 115
Diagramação do banco de dados .......................................................................................................................................................... 116
Fundamentos básicos da diagramação de banco de dados ............................................................................................................ 116
A ferramenta Database Diagram do SQL Server ............................................................................................................................ 116
O diagrama de banco de dados padrão .......................................................................................................................................... 117
Experimente: criação de um diagrama de banco de dados .............................................................................................. 118
A barra de ferramentas Database Diagram .................................................................................................................................... 119
Resumo ................................................................................................................................................................................................. 121
Capítulo
7 - Backup e recuperação de banco de dados e manutenção ............... 123
Logs de transações ................................................................................................................................................................................ 124
Estratégias de backup ............................................................................................................................................................................ 125
Quando pode haver problemas ............................................................................................................................................................. 126
Desative um banco de dados (off-line) ............................................................................................................................................ 126
Experimente: desativação de um banco de dados ........................................................................................................... 127
Faça backup dos dados ......................................................................................................................................................................... 127
Experimente: backup dos dados ..................................................................................................................................... 128
Faça backup do banco de dados usando o T-SQL ......................................................................................................................... 131
Experimente: backup do BD com T-SQL para backup FULL ou DIFFERENTIAL ..................................................................... 133
Experimente: faça backup do log de transações usando o T-SQL ........................................................................................................ 136
Restauração de um banco de dados ..................................................................................................................................................... 137
Faça uma restauração usando o SQL Server Management Studio ................................................................................................ 137
Experimente: restauração do banco de dados ................................................................................................................. 138
Faça uma restauração usando o T-SQL ......................................................................................................................................... 139
Experimente: faça uma restauração usando o T-SQL ........................................................................................................ 141
Detach e attach de um banco de dados ................................................................................................................................................ 142
Experimente: detach de um banco de dados ................................................................................................................... 143
Experimente: attach de um banco de dados .................................................................................................................... 144
Detach e attach usando T-SQL ....................................................................................................................................................... 146
Experimente: detach e attach de um banco de dados ...................................................................................................... 147
Produza um script SQL para o banco de dados .............................................................................................................................. 147
Experimente: produção do SQL do banco de dados ......................................................................................................... 147
Manutenção do seu banco de dados ..................................................................................................................................................... 152
Criação de um plano de manutenção para o banco de dados .............................................................................................................. 153
Experimente: criação de um plano de manutenção para o banco de dados ...................................................................... 153
Resumo ................................................................................................................................................................................................. 162
A sintaxe do comando T-SQL INSERT .................................................................................................................................................. 163
Capítulo
8 - Trabalhe com os dados ............................................................................ 163
O comando INSERT SQL ...................................................................................................................................................................... 164
Experimente: scripts do Query Editor .............................................................................................................................. 164
Valores padrão ................................................................................................................................................................................ 166
Uso de valores NULL ...................................................................................................................................................................... 166
Experimente: Valores Null e SQL Server Management Studio Comparado ao T-SQL .......................................................... 167
DBCC CHECKIDENT ..................................................................................................................................................................... 169
Limites de coluna ............................................................................................................................................................................. 170
ADD CONSTRAINT ......................................................................................................................................................... 170
Experimente: alteração de uma tabela para o valor padrão no Query Editor .................................................................... 171
Como lidar com vários registros ao mesmo tempo .......................................................................................................................... 174
Inserção de vários registros em uma consulta em lote .................................................................................................... 174
Experimente: inserção de vários registros de uma só vez ................................................................................................ 175
Recuperação de dados .......................................................................................................................................................................... 175
Uso do SQL Server Management Studio para a recuperação de dados ............................................................................................... 176
Experimente: recuperação de dados no SQL Server Management Studio ......................................................................... 176
A declaração SELECT ........................................................................................................................................................................... 178
Nomeie as colunas ................................................................................................................................................................................. 179
As primeiras buscas ............................................................................................................................................................................... 179
Experimente: o primeiro conjunto de buscas ................................................................................................................... 179
Exiba a saída de maneira diferente ....................................................................................................................................................... 181
Experimente: coloque os resultados em texto e em um arquivo ....................................................................................... 181
Limite a busca: o uso de WHERE .......................................................................................................................................................... 182
Experimente: a declaração WHERE ................................................................................................................................. 182
SET ROWCOUNT n ........................................................................................................................................................................ 185
Experimente: SET ROWCOUNT ....................................................................................................................................... 185
TOP n .............................................................................................................................................................................................. 185
TOP n PERCENT ............................................................................................................................................................................ 186
Funções de string .................................................................................................................................................................................. 186
Experimente: funções de string ...................................................................................................................................... 186
Ordem! Ordem! ...................................................................................................................................................................................... 187
Experimente: alteração da ordem ................................................................................................................................... 188
O operador LIKE .................................................................................................................................................................................... 188
Experimente: o operador LIKE ........................................................................................................................................ 189
Criação de dados: SELECT INTO ......................................................................................................................................................... 190
Experimente: SELECT INTO ............................................................................................................................................. 190
Quem pode adicionar, excluir e selecionar os dados ............................................................................................................................. 191
Experimente: refinamento de permissões ....................................................................................................................... 191
Securables ....................................................................................................................................................................................... 193
Atualização de dados ....................................................................................................................................................................... 194
O comando UPDATE ...................................................................................................................................................................... 195
Atualização de dados no Query Editor ............................................................................................................................................. 195
Experimente: atualização de uma linha de dados ............................................................................................................ 196
Transações ............................................................................................................................................................................................ 198
BEGIN TRAN .................................................................................................................................................................. 199
COMMIT TRAN .............................................................................................................................................................. 199
ROLLBACK TRAN ........................................................................................................................................................... 199
Bloqueio de dados ........................................................................................................................................................................... 199
Atualização de dados: uso de transações ........................................................................................................................................ 200
Experimente: uso de uma transação ............................................................................................................................... 200
Transações aninhadas .................................................................................................................................................... 201
Exclusão de dados ................................................................................................................................................................................. 202
Sintaxe de DELETE ......................................................................................................................................................................... 203
O uso da declaração DELETE ......................................................................................................................................................... 203
Experimente: exclusão de registros ................................................................................................................................ 203
Truncamento de uma tabela ........................................................................................................................................................... 205
Remoção de uma tabela ................................................................................................................................................................. 205
Resumo ................................................................................................................................................................................................. 206
Capítulo
9 - Criação de uma visualização ................................................................... 207
O que é uma visualização? .................................................................................................................................................................... 207
O uso das visualizações como segurança ........................................................................................................................................ 208
Como criptografar as visualizações ................................................................................................................................................. 209
Criação de uma visualização – SQL Server Management Studio .................................................................................................... 209
Experimente: criação de uma visualização no SQL Server Management Studio ................................................................ 209
Criação de uma visualização – usando uma visualização ...................................................................................................................... 214
Experimente: criar uma visualização usando uma visualização ........................................................................................ 214
A sintaxe de CREATE VIEW ........................................................................................................................................................... 218
Criação de uma visualização – painel do Query Editor .......................................................................................................................... 219
Experimente: criação de uma visualização no painel do Query Editor .............................................................................. 219
Criação de uma visualização – SCHEMABINDING ............................................................................................................................... 220
Experimente: criar uma visualização usando SCHEMABINDING ....................................................................................... 220
Indexação de uma visualização .............................................................................................................................................................. 221
Experimente: indexação de uma visualização .................................................................................................................. 222
Resumo ................................................................................................................................................................................................. 223
Capítulo
10 - Procedimentos Armazenados ............................................................... 225
O que é um procedimento armazenado? .............................................................................................................................................. 225
A sintaxe de CREATE PROCEDURE .................................................................................................................................................... 226
Returno de um conjunto de registros ..................................................................................................................................................... 228
Criação de um procedimento armazenado – Management Studio ........................................................................................................ 228
Experimente: Criando uma Stored Procedure usando SQL Server Management Studio ..................................................... 228
Métodos de execução diferentes ........................................................................................................................................................... 231
Sem EXEC ...................................................................................................................................................................................... 231
Com EXEC ...................................................................................................................................................................................... 231
Uso do RETURN ................................................................................................................................................................................... 231
Experimente: Uso de RETURN e dos parâmetros de saída ............................................................................................... 232
Controle de fluxo .................................................................................................................................................................................... 234
IF … ELSE ............................................................................................................................................................................................. 234
BEGIN…END ........................................................................................................................................................................................ 235
A declaração WHILE...BREAK ............................................................................................................................................................... 235
Experimente: WHILE...BREAK .......................................................................................................................................... 235
A declaração CASE ............................................................................................................................................................................... 237
Experimente: O uso da declaração CASE ........................................................................................................................ 238
Vamos juntar tudo ........................................................................................................................................................................... 239
Experimente: Vamos juntar tudo ..................................................................................................................................... 239
Resumo ................................................................................................................................................................................................. 240
Capítulo
11 - Fundamentos básicos do T-SQL .......................................................... 241
Use mais de uma tabela ........................................................................................................................................................................ 241
Experimente: Associando duas tabelas ........................................................................................................................... 242
Variáveis ................................................................................................................................................................................................ 245
Experimente: declaração e trabalho com variáveis .......................................................................................................... 245
Tabelas temporárias .............................................................................................................................................................................. 246
Experimente: tabelas temporárias .................................................................................................................................. 247
Combinações ......................................................................................................................................................................................... 248
COUNT/COUNT_BIG ..................................................................................................................................................................... 248
Experimente: contar linhas ............................................................................................................................................. 248
SUM ................................................................................................................................................................................................ 249
Experimente: soma de valores ........................................................................................................................................ 249
MAX/MIN ......................................................................................................................................................................................... 249
Experimente: MAX e MIN ............................................................................................................................................... 249
AVG ................................................................................................................................................................................................. 250
Experimente: fazendo a média ....................................................................................................................................... 250
GROUP BY ...................................................................................................................................................................................... 250
Experimente: GROUP BY ................................................................................................................................................ 250
HAVING ........................................................................................................................................................................................... 251
Experimente: HACING .................................................................................................................................................... 251
Valores distintos ..................................................................................................................................................................................... 252
Experimente: valores distintos ....................................................................................................................................... 252
Funções ................................................................................................................................................................................................. 252
Data e hora ..................................................................................................................................................................................... 252
DATEADD() ..................................................................................................................................................................... 253
Experimente: DATEADD() ................................................................................................................................................ 253
DATEDIFF() ..................................................................................................................................................................... 253
DATENAME() .................................................................................................................................................................. 254
DATEPART() .................................................................................................................................................................................. 254
Experimente: Parte de uma data .................................................................................................................................... 254
GETDATE() ..................................................................................................................................................................... 255
String ............................................................................................................................................................................ 255
ASCII() ........................................................................................................................................................................... 255
Experimente: ASCII() ....................................................................................................................................................... 255
CHAR() ........................................................................................................................................................................... 255
Experimente: CHAR() ...................................................................................................................................................... 255
LEFT() ............................................................................................................................................................................................. 256
Experimente: LEFT() ........................................................................................................................................................ 256
LOWER() ........................................................................................................................................................................ 256
Experimente: LOWER() ................................................................................................................................................... 256
LTRIM() .......................................................................................................................................................................... 256
Experimente: LTRIM() ..................................................................................................................................................... 256
RIGHT() .......................................................................................................................................................................... 257
Experimente: RIGHT() ..................................................................................................................................................... 257
RTRIM() ......................................................................................................................................................................... 257
Experimente: RTRIM() ..................................................................................................................................................... 257
STR() .............................................................................................................................................................................. 257
Experimente: STR() ......................................................................................................................................................... 257
SUBSTRING() ................................................................................................................................................................. 258
Experimente: SUBSTRING() ............................................................................................................................................ 258
UPPER() ......................................................................................................................................................................... 258
Experimente: UPPER() ..................................................................................................................................................... 258
Funções do sistema ......................................................................................................................................................................... 259
CASE WHEN...THEN...ELSE...END .................................................................................................................................... 259
Experimente: CASE ........................................................................................................................................................ 259
CAST()/CONVERT() .......................................................................................................................................................... 259
Experimente: CAST()/CONVERT ...................................................................................................................................... 260
ISDATE() ......................................................................................................................................................................... 260
Experimente: ISDATE() .................................................................................................................................................... 260
ISNULL() ......................................................................................................................................................................... 261
Experimente: ISNULL() .................................................................................................................................................... 261
ISNUMERIC() .................................................................................................................................................................. 261
Experimente: ISNUMERIC() ............................................................................................................................................. 261
RAISERROR ......................................................................................................................................................................................... 262
Experimente: RAISERROR .............................................................................................................................................. 263
Manipulação de erros ............................................................................................................................................................................ 264
@@ERROR .......................................................................................................................................................................................... 264
Experimente: uso de @@ERROR .................................................................................................................................... 264
TRY...CATCH ........................................................................................................................................................................................ 265
Experimente: TRY...CATCH .............................................................................................................................................. 266
Resumo ................................................................................................................................................................................................. 268
Capítulo
12 - T-SQL avançado ...................................................................................... 269
Subconsultas .......................................................................................................................................................................................... 269
IN ..................................................................................................................................................................................................... 270
EXISTS ............................................................................................................................................................................................ 271
O operador APPLY ................................................................................................................................................................................ 271
CROSS APPLY ............................................................................................................................................................................... 272
OUTER APPLY ............................................................................................................................................................................... 272
Expressões comuns de tabela ............................................................................................................................................................... 273
CTE recursiva .................................................................................................................................................................................. 274
Agrupamento de dados ......................................................................................................................................................................... 275
PIVOT .............................................................................................................................................................................................. 275
Funções de classificação ........................................................................................................................................................................ 277
ROW_NUMBER .............................................................................................................................................................................. 278
RANK .............................................................................................................................................................................................. 279
DENSE_RANK ................................................................................................................................................................................ 280
NTILE .............................................................................................................................................................................................. 281
Uso do tipo de dados MAX .................................................................................................................................................................... 281
Experimente: trabalhe com dados de texto no LOB ......................................................................................................... 282
LOB de Imagens .............................................................................................................................................................................. 283
Experimente: trabalhe com dados de imagem no LOB .......................................................................................................................... 283
Resumo ................................................................................................................................................................................................. 284
C a p í t u l o 13 - Gatilhos ..................................................................................................... 285
O que é um gatilho? ............................................................................................................................................................................... 285
O gatilho DML ........................................................................................................................................................................................ 285
A sintaxe de CREATE TRIGGER para gatilhos DML ............................................................................................................................ 286
Por que não usar um limite? .................................................................................................................................................................. 287
Tabelas lógicas excluídas e inseridas ..................................................................................................................................................... 288
Criação de um gatilho DML FOR ........................................................................................................................................................... 288
Experimente: criação de um gatilho no Query Editor ....................................................................................................... 288
Verificação de colunas específicas ......................................................................................................................................................... 291
O uso do UPDATE() ........................................................................................................................................................................ 291
Experimente: função UPDATE() ........................................................................................................................................ 291
Uso de COLUMNS_UPDATED() .................................................................................................................................................... 294
Experimente: COLUMNS_UPDATE() ................................................................................................................................. 295
Gatilhos DDL .......................................................................................................................................................................................... 296
DDL_DATABASE_LEVEL_EVENTS ............................................................................................................................................... 296
Declarações DDL com escopo de servidor ...................................................................................................................................... 297
Remoção de um gatilho DDL ................................................................................................................................................................. 297
EVENTDATA() ...................................................................................................................................................................................... 297
Experimente: gatilho DDL ............................................................................................................................................... 298
Resumo ................................................................................................................................................................................................. 299
Capítulo
14 - Reporting Services do SQL Server 2005.............................................. 301
O que é Reporting Services? ................................................................................................................................................................. 301
Visão geral da arquitetura do Reporting Services .................................................................................................................................. 301
Arquitetura do Reporting Services: um exame mais detalhado ............................................................................................................. 302
A camada de aplicação .................................................................................................................................................................... 302
Browser da Web ............................................................................................................................................................. 302
Ferramentas de relatório ................................................................................................................................................ 303
Business Intelligence Management Studio ..................................................................................................................... 303
Ferramentas de configuração ......................................................................................................................................................... 303
SQL Server Configuration Manager ................................................................................................................................. 303
Surface Area Configuration ............................................................................................................................................. 303
Report Manager ............................................................................................................................................................ 303
Reporting Services Configuration Tool ............................................................................................................................ 303
SQL Server Management Studio ..................................................................................................................................... 303
Ferramentas de linha de comando .................................................................................................................................. 304
Aplicativos personalizados ............................................................................................................................................................... 304
A camada de servidor ...................................................................................................................................................................... 304
Serviço Web ................................................................................................................................................................... 304
Serviço do Windows ....................................................................................................................................................... 304
Interfaces de programação ............................................................................................................................................. 304
Processadores ............................................................................................................................................................... 305
Extensões ...................................................................................................................................................................... 305
Extensões de autenticação .............................................................................................................................................................. 305
Extensões de processamento de dados .......................................................................................................................................... 305
Extensões de execução .................................................................................................................................................. 305
Extensões de processamento de relatórios ..................................................................................................................................... 305
Extensões de entrega ..................................................................................................................................................... 305
A camada de dados ......................................................................................................................................................................... 305
Bancos de dados do servidor de relatórios ...................................................................................................................... 305
Fontes de dados .............................................................................................................................................................................. 305
Criação do seu primeiro relatório usando o Report Wizard ................................................................................................................... 305
Experimente: uso do Report Wizard ................................................................................................................................ 306
Criação de um relatório a partir do zero ................................................................................................................................................ 308
Elementos relacionados aos dados ................................................................................................................................................. 308
Fontes de dados .............................................................................................................................................................................. 308
Conjunto de dados .......................................................................................................................................................................... 309
Campos ........................................................................................................................................................................................... 309
Campos personalizados .................................................................................................................................................................. 309
Itens do relatório .............................................................................................................................................................................. 309
Regiões de dados .......................................................................................................................................................... 309
Itens independentes ...................................................................................................................................................... 309
Estrutura dos relatórios ................................................................................................................................................................... 309
Try It Out: Creating a Report Structure ........................................................................................................................... 310
Experimente: aperfeiçoe o relatório ................................................................................................................................ 312
Experimente: implementação do relatório (opcional) ....................................................................................................... 313
Resumo ................................................................................................................................................................................................. 314
Introdução
SQL Server 2005 para Desenvolvedores é para aquelas pessoas que querem se tornar desenvolvedores, administradores de
bancos de dados ou uma mistura de ambos, mas que ainda não trilharam esse caminho com o SQL Server 2005. Caso você não
conheça bancos de dados, ou conheça os bancos de dados de estação de trabalho, como o MS Access, ou mesmo tenha vindo
de um ambiente baseado em servidor como Oracle, este livro oferecerá a base necessária para que você utilize o SQL Server 2005.
Desde o início, seu conhecimento básico será expandido e você logo estará passando de um total iniciante a um desenvolvedor
competente e profissional. O objetivo deste livro é informar um grande número de desenvolvedores, desde aqueles que preferem
utilizar a interface gráfica para quase todo o trabalho até aqueles que querem se tornar adeptos da linguagem de programação
do SQL Server 2005, o T-SQL. Durante as práticas, cada método de uso do SQL Server 2005 será demonstrado, explicado e
estendido para que você possa avaliar o que funciona melhor em cada situação.
Há vários exemplos neste livro sobre cada ação, junto com detalhes sobre a segurança dos seus dados. Você aprenderá também
a melhor maneira de completar uma tarefa e até mesmo como tomar a decisão correta quando houver duas ou mais opções que
possam ser feitas.
Quando chegar ao final do livro, você será capaz de projetar e criar soluções de banco de dados sólidas e confiáveis de maneira
competente e profissional.
Download