Você está na página 1de 7

Aprendendo

SQL
Alan Beaulieu

Novatec
Sumrio

Prefcio..............................................................................................................................11

CAPTULO 1 Uma breve introduo.....................................................................................17


Introduo aos bancos de dados............................................................................. 17
Sistemas de banco de dados no-relacional........................................................ 18
O modelo relacional..........................................................................................20
Um pouco de terminologia................................................................................ 23
O que SQL?........................................................................................................ 24
Classes de instrues SQL................................................................................. 24
SQL: uma linguagem no-procedural................................................................26
Exemplos em SQL............................................................................................. 27
O que MySQL?...................................................................................................30
O que vem em seguida............................................................................................31

CAPTULO 2 Criando e populando um banco de dados.........................................................33


Criando um banco de dados MySQL...................................................................... 33
Usando a ferramenta de linha de comando mysql.................................................... 35
Tipos de dados do MySQL.....................................................................................36
Dados do tipo caractere.....................................................................................36
Dados de texto.................................................................................................. 39
Dados numricos..............................................................................................40
Dados temporais...............................................................................................42
Criao de tabelas..................................................................................................44
Passo 1: Projeto.................................................................................................44
Passo 2: Refinamento........................................................................................ 45
Passo 3: Construindo instrues de esquema SQL............................................. 47
Povoando e modificando tabelas..............................................................................51
Inserindo dados.................................................................................................51
Atualizando dados............................................................................................56
Excluso de dados............................................................................................56
Quando boas instrues se do mal........................................................................ 57
Chaves primrias no-nicas............................................................................. 57
Chave estrangeira no-existente......................................................................... 57
Violaes dos valores das colunas......................................................................58
Converses de data invlidas.............................................................................58

5
6 Aprendendo SQL

Esquema bank (bank schema)................................................................................ 59

CAPTULO 3 Introduo a consultas....................................................................................62


Funcionamento das consultas................................................................................. 62
Clusulas de consulta............................................................................................64
Clusula select....................................................................................................... 65
Aliases de colunas............................................................................................. 67
Removendo duplicatas......................................................................................68
Clusula from........................................................................................................ 70
Tabelas............................................................................................................. 70
Vnculos de tabela............................................................................................ 73
Definindo aliases de tabela................................................................................ 74
Clusula where...................................................................................................... 75
Clusulas group by e having...................................................................................77
Clusula order by................................................................................................... 78
Ordenao ascendente versus ordenao descendente........................................80
Ordenao por meio de expresses.................................................................... 81
Ordenando por meio de referncias numricas...................................................82
Teste seu conhecimento..........................................................................................83

CAPTULO 4 Filtragem........................................................................................................85
Avaliao de condies........................................................................................... 85
Usando parnteses............................................................................................86
Usando o operador not.....................................................................................87
Construindo uma condio....................................................................................88
Tipos de condies.................................................................................................89
Condies de igualdade....................................................................................89
Condies de intervalo...................................................................................... 91
Condies de adeso.........................................................................................94
Condies de correspondncia..........................................................................96
Null: aquela palavra de quatro letras..................................................................... 100
Teste seu conhecimento........................................................................................ 103

CAPTULO 5 Consultando mltiplas tabelas....................................................................... 105


O que uma juno?........................................................................................... 105
Produto cartesiano.......................................................................................... 106
Junes internas............................................................................................. 108
A sintaxe ANSI de juno.................................................................................110
Juntando trs ou mais tabelas................................................................................ 113
Usando subconsultas como tabelas..................................................................116
Usando a mesma tabela duas vezes................................................................... 117
Autojunes.......................................................................................................... 118
Sumrio 7

Junes equivalentes versus no-equivalentes......................................................... 119


Condies de juno versus condies de filtro..................................................... 122
Teste seu conhecimento.........................................................................................123

CAPTULO 6 Trabalhando com conjuntos........................................................................... 125


Introduo teoria dos conjuntos......................................................................... 125
Teoria dos conjuntos na prtica............................................................................ 128
Operadores de conjunto....................................................................................... 129
Operador union.............................................................................................. 130
Operador intersect...........................................................................................132
Operador except............................................................................................. 134
Regras das operaes de conjunto..........................................................................135
Ordenando resultados de consultas compostas.................................................135
Precedncia das operaes de conjunto............................................................ 136
Teste seu conhecimento.........................................................................................139

CAPTULO 7 Gerao, converso e manipulao de dados.................................................. 140


Trabalhando com strings...................................................................................... 140
Gerao de strings........................................................................................... 141
Manipulao de strings................................................................................... 146
Trabalhando com dados numricos...................................................................... 154
Realizando funes aritmticas.........................................................................155
Controlando a preciso numrica.................................................................... 156
Tratando dados sinalizados............................................................................. 159
Trabalhando com dados temporais....................................................................... 159
Trabalhando com fusos horrios..................................................................... 160
Gerando dados temporais............................................................................... 162
Manipulando dados temporais.........................................................................167
Funes de converso............................................................................................ 171
Teste seu conhecimento.........................................................................................173

CAPTULO 8 Agrupamentos e agregaes......................................................................... 174


Conceitos de agrupamento....................................................................................174
Funes de agregao........................................................................................... 177
Grupos implcitos versus grupos explcitos.......................................................178
Contando valores distintos...............................................................................179
Usando expresses.......................................................................................... 180
Como nulls so tratados.................................................................................. 181
Gerando grupos................................................................................................... 182
Agrupamento por uma coluna......................................................................... 183
Agrupamento por mltiplas colunas................................................................ 183
Agrupamento por meio de expresses.............................................................. 184
8 Aprendendo SQL

Gerando resumos (rollups).............................................................................. 184


Condies de filtro de grupo................................................................................ 187
Teste seu conhecimento........................................................................................ 189

CAPTULO 9 Subconsultas................................................................................................. 190


O que uma subconsulta?................................................................................... 190
Tipos de subconsultas........................................................................................... 191
Subconsultas no-correlatas................................................................................. 192
Subconsultas de linhas mltiplas e coluna nica.............................................. 193
Subconsultas de mltiplas colunas.................................................................. 199
Subconsultas correlatas.........................................................................................201
Operador exists.............................................................................................. 203
Manipulao de dados usando subconsultas correlatas.................................... 205
Quando usar subconsultas................................................................................... 206
Subconsultas como fontes de dados................................................................. 206
Subconsultas em condies de filtro.................................................................212
Subconsultas como geradoras de expresses......................................................213
Resumo das subconsultas......................................................................................217
Teste seu conhecimento.........................................................................................218

CAPTULO 10 Junes revisitadas...................................................................................... 219


Junes externas...................................................................................................219
Juno externa esquerda versus juno externa direita..................................... 223
Junes externas de trs tabelas....................................................................... 225
Autojunes externas...................................................................................... 227
Junes cruzadas................................................................................................. 229
Junes naturais.................................................................................................. 236
Teste seu conhecimento........................................................................................ 238

CAPTULO 11 Lgica condicional....................................................................................... 240


O que lgica condicional? ................................................................................. 240
Expresso case......................................................................................................241
Expresses case pesquisadas................................................................................. 242
Expresses case simples................................................................................... 244
Exemplos de expresses case................................................................................. 245
Transformaes de conjuntos-resultados.......................................................... 245
Agregao seletiva........................................................................................... 247
Verificando a existncia................................................................................... 248
Erros de diviso por zero................................................................................. 250
Atualizaes condicionais............................................................................... 252
Tratando valores null...................................................................................... 252
Teste seu conhecimento........................................................................................ 254
Sumrio 9

CAPTULO 12 Transaes.................................................................................................. 255


Bancos de dados multiusurios............................................................................. 255
Locking.......................................................................................................... 256
Granularidade dos bloqueios.......................................................................... 256
O que uma transao? ...................................................................................... 257
Iniciando uma transao................................................................................. 259
Finalizando uma transao............................................................................. 260
Pontos de gravao de transaes.................................................................... 262
Teste seu conhecimento................................................................................... 265
Exerccio 12.1................................................................................................... 265

CAPTULO 13 ndices e restries...................................................................................... 266


ndices.................................................................................................................266
Criao de ndices........................................................................................... 267
Tipos de ndices...............................................................................................271
Como os ndices so usados............................................................................ 274
O lado negativo dos ndices............................................................................. 277
Restries............................................................................................................ 278
Criao de restries....................................................................................... 279
Restries e ndices......................................................................................... 280
Restries em cascata.......................................................................................281
Teste seu conhecimento........................................................................................ 284

CAPTULO 14 Views.......................................................................................................... 285


O que so views?.................................................................................................. 285
Por que usar as views? .........................................................................................288
Segurana de dados........................................................................................288
Agregao de dados........................................................................................ 289
Escondendo a complexidade............................................................................291
Juntando dados particionados..........................................................................291
Views atualizveis................................................................................................ 292
Atualizando views simples.............................................................................. 293
Atualizando views complexas.......................................................................... 294
Teste seu conhecimento........................................................................................ 297

CAPTULO 15 Metadados.................................................................................................. 298


Dados sobre dados............................................................................................... 298
Information_schema............................................................................................ 300
Trabalhando com metadados............................................................................... 304
Scripts de gerao de esquemas....................................................................... 304
Verificao de implantao.............................................................................. 308
Gerao dinmica de SQL............................................................................... 309
10 Aprendendo SQL

Teste seu conhecimento.........................................................................................312

APNDICE A Diagrama ER do banco de dados de exemplo.................................................. 313

APNDICE B Extenses do MySQL para a linguagem SQL.................................................... 315


Extenses para a instruo select...........................................................................315
Clusula limit..................................................................................................315
Clusula into outfile..............................................................................................319
Instrues insert/update combinadas................................................................... 322
Atualizaes e excluses ordenadas....................................................................... 323
Atualizaes e excluses em mltiplas tabelas....................................................... 325

APNDICE C Solues dos exerccios.................................................................................. 329

ndice remissivo................................................................................................................XXX