第1章 理解SQL基本知识并创建数据库文件 1
技巧1 理解数据库的定义 1
技巧2 理解平面文件 1
技巧3 理解分层的数据库模型 3
技巧4 理解网络数据库模型 5
技巧5 理解关系数据库模型 7
技巧6 理解Cood的12条关系数据库定义规则 9
技巧7 理解用于定义SQL数据库的术语 10
技巧8 理解表的组成 15
技巧9 理解表名 16
技巧10 理解列名 17
技巧11 理解视图 19
技巧12 理解架构 22
技巧13 理解SQL的系统目录 25
技巧14 理解域 26
技巧15 理解约束 27
技巧16 理解SQL的历史 28
技巧17 理解SQL和编程语言之问的差别 30
技巧18 理解数据定义语言(DDL) 31
技巧19 理解数据操作语言(DML) 34
技巧20 理解数据控制语言(DCL) 35
技巧21 理解SQL的数值整数数据类型 37
技巧22 理解SQL的浮点数值数据类型 38
技巧23 理解SQL的字符型数据类型 41
技巧24 理解使用VARCHAR数据类型的好处 43
技巧25 理解LONG(Oracle)或TEXT(MS-SQL Server)数据类型 44
技巧26 理解MS-SQL Server的IMAGE数据类型 45
技巧27 理解标准SQL的日期时间数据类型和DATEEIME数据类型 45
技巧28 理解SQL的BIT数据类型 48
技巧29 理解常数 49
技巧30 理解NULL值 50
技巧31 理解MS-SQL Selver的ISNULL()函数 51
技巧32 理解MS-SQL Server的DENTITY属性 52
技巧33 理解断言(Assertions) 54
技巧34 理解SQL DBMS的客户/服务器模型 54
技巧35 理解SQL语句的结构 56
技巧36 理解DBMS如何执行SQL语句 58
技巧37 理解SQL的关键字 59
技巧38 使用MS-SQL Server Query Analyzer执行SQL语句 60
技巧39 使用MS-SQL Server ISQL在命令行上执行SQL语句或是执行存储在ASCH文件中的语句 63
技巧40 在ISQL内使用ED命令编辑SQL语句 65
技巧41 使用CREATE DATABASE语句创建MS-SQL Server数据库和事务处理日志 66
技巧42 使用MS-SQL Server Enterprise Manager创建数据库和事务处理日志 69
技巧43 使用DROP DATABASE删除MS-SQL Server数据库和事务处理日志 71
技巧44 理解如何确定MS-SQL Server数据库及其事务处理日志的容量 71
技巧45 理解MS-SQL Server的TempDB数据库 74
第2章 使用SQL数据定义语言(DDL) 创建数据表和其他数据库对象 76
技巧46 使用CREATE TABLE语句创建表 76
技巧47 使用MS-SQL Server Enterprise Manager创建表 78
技巧48 创建MS-SQL Server的临时表 80
技巧49 使用Transact-SQL的CREATEDEFAULT语句设置列的默认值 81
技巧50 使用MS-SQL Server的存储过程sp/bindefault将用户创建的默认值绑定到表列上 83
技巧51 在CREATE TABLE语句中使用DEFAULT子句设置默认列值 83
技巧52 使用MS-SQL Server Enterprise Manager为用户定义的数据类型或表列创建默认值 85
技巧53 使用MS-SQL Server Enterprise Manager创建用户定义的数据类型 86
技巧54 使用MS-SQL Server Enterprise Manager将默认值绑定到数据类型或列表 88
技巧55 使用丁伽sact-SQL的DROP DEFAULT语句从数据库中删除默认值 91
技巧56 理解ALTER TABLE语句 92
技巧57 使用ALTER TABLE语句向表中添加列 94
技巧58 使用MS-SQe Server的ALTER TABLE、DROP COLUMN字句删除表列 95
技巧59 使用从ALER TABLE语句改变列的宽度或数据类型 96
技巧60 使用从TLTER TABLE语句改变主键和外键 97
技巧61 使用CREATE TABLE语句指定主键 99
技巧62 使用CREATE TABLE语句指定外键约束 101
技巧63 使用DROP TABLE语句从数据库中删除表 104
技巧64 使用DROP VIEW语句删除视图 104
技巧65 使用MS-SQL Server Enterprise Manager Create View Wizard创建视图 105
技巧66 理解DROP VIEW语句中的CASCADE和RESTRICT子句 108
第3章 使用SQL的数据操作语言(DML) 在SQL表内插入并操作数据 110
技巧67 使用INSERT语句向表中添加行 110
技巧68 使用INSERT语句通过视图插入行 111
技巧69 使用MS-SQL Server Enterise Manager定义或改变主控约束 113
技巧70 使用INSERT语句向行的特定列中添加数据 114
技巧71 使用SELECT语句将一个表中的行插入另一录 116
技巧72 将MS-SQL Server的SELECT/BULKCOPY数据库选项设置为TRUE以便加速从表到表的数据转移 120
技巧73 使用UPDATE语句改变列值 121
技巧74 使用带条件子句的UPDAlE语句同时改变多行中的值 122
技巧75 在UPDATE语句中使用于查询同时改变多行中的值 123
技巧76 使用UPDATE语句改变根据计算值选定行中的列值 124
技巧77 使用UPDATE语句根据另一表中的值改变表的值 125
技巧78 使用UPDATE语句通过视图改变表数据 126
技巧79 使用DELETE语句从表中删除行 127
技巧80 使用带条件子句的DELETE语句从表中删除多行 129
技巧81 使用带子查询的DELETE语句从表中删除多行 130
技巧82 使用TRUNCATE语句从MS-SQL Server表中删除所月汀 131
技巧83 使用DELETE语句根据计算值删除表行 131
技巧84 使用DELETE语句通过视图删除表行 132
第4章 处理查询、表达式和总计函数 134
技巧85 理解从SELECT语句中所期待的结果 134
技巧86 理解SELECT语句的结构 135
技巧87 理解处理SQL的SELECT语句所涉及的步骤 137
技巧88 使用SELECT语句从一个或多个表的行中显示列 141
技巧89 使用SELECT语句显示列及计算值 143
技巧90 使用SELECT语句显示所有的列值 144
技巧91 使用带WHERE子句的SELECT语句根据列值选择行 145
技巧92 使用带WHERE子句的SELECT语句根据计算值选择行 146
技巧93 使用带比较判式的SELECT语句选择有特定列或计算值的行 147
技巧94 在WHERE子句中使用布尔运算符OR、AND和NOT 148
技巧95 使用ORDER BY子句指定由SELECT语句返回行的顺序 150
技巧96 在WHERE子句中使用复合条件(AND、OR和NOT)根据多个列值(或计算值)选择行 152
技巧97 理解使用比较判式选择行时的NULL值 154
技巧98 使用行值表达式根据多个列值选择表中的行 154
技巧99 理解子查询 155
技巧100 使用行值子查询根据多个列值选择表中的行 156
技巧101 理解表达式 158
技巧102 理解数值表达式 159
技巧103 理解字符串值表达式 159
技巧104 理解日期时间值表达式 160
技巧105 理解SQL的判式 161
技巧106 理解SQL的逻辑连接符AND、OR和NOT 161
技巧107 理解集合(或列)函数 163
技巧108 理解CASE表达式 164
技巧109 使用CASE表达式更新列值 167
技巧110 使用CASE表达式避免错误条件 168
技巧111 理解NULLIF表达式 169
技巧112 使用COALESCE表达式代替NULL值 169
技巧113 使用COUNT(*)总计函数对表中的行数计数 170
技巧114 使用COUNT(*)总计函数对列中的数据值数计数 171
技巧115 使用COUNT(*)总计函数对列中的惟一和重复值计数 172
技巧116 使用MS-SQL Server的CUBE和ROLLUP运算符总计表的数据 174
技巧117 使用MAX()总计函数找出列中的最大值 176
技巧118 使用MIN()总计函数找出列中的最小值 177
技巧119 使用SUM()总计函数计算列值的总和 177
技巧120 使用AVG()总计函数计算列中值的平均值 178
技巧121 使用带AVG()函数的WHERE子句确定表中所选行的平均值 179
技巧122 理解SELECT语句中的总计函数如何产生单表结果 179
技巧123 理解带NULL值的列对集合函数的影响 180
技巧124 使用AND逻辑连接符对表行进行多条件选择 182
技巧125 使用NOT逻辑连接符对WHERE子句中的搜索条件求反 183
技巧126 使用OR逻辑连接符对表行进行多条件选择 184
第5章 理解SQL的事务处理和事务处理日志 186
技巧127 理解SQL的事务处理过程 186
技巧128 理解ANSI/ISO的事务处理模型 187
技巧129 理解何时使用COMMIT语句 188
技巧130 使用ROLLBACK语句取消对数据库对象所做的改变 190
技巧131 理解MS-SQL Server的事务处理模型 192
技巧132 在MS-SQL Server上使用命名的和嵌套的事务处理 194
技巧133 理解事务处理日志 196
第6章 使用数据控制语言(DCL)建立数据库安全性 198
技巧134 理解为什么及如何限制对各种数据库对象的访问 198
技巧135 理解单独的用户身份和认证 199
技巧136 理解MS-SQL Server标准和Windows NT的综合安全性 201
技巧137 使用MSSQL Server Enterprise Manager添加登录和用户 202
技巧138 使用MS-SQL Server Enterprise Manager删除登录和用户 205
技巧139 理解MS-SQL Server的安全角色和组用户安全性 206
技巧140 理解MS-SQL Server的权限 208
技巧14l 理解SQL的安全对象和权限 209
技巧142 使用MS-SQL Server Enterprise Manager创建数据库角色 210
技巧143 使用MS-SQL Server Enterpnse Manager指定数据库角色权限 212
技巧144 理解拥有权权限和GRanT语句 213
技巧145 使用GRANT语句的WITH GRANT OPTION允许用户给予其他用户以数据库对象访问权 214
技巧146 理解REVOKE语句 215
技巧147 使用带CASCADE选项的REVOKE语句删除权限 216
技巧148 使用REVOKE语句的GRANT OPTION FOR子句删除GRANT权限 217
技巧149 使用GRANT SElLECT(以及REVOKE SELECT)语句控制对数据库对象的访问 218
技巧150 理解MS-SQL Server对SELECT权限的列清单扩展 220
技巧15l 使用GRANT INSERT(以及REVOKE INSERT)语句控制对数据库对象的访问 221
技巧152 使用GRANT UPDATE(以及REVOKE UPDATE)语句控制对数据库对象的访问 222
技巧t53 使用GRANT REFERENCES(以及REVOKE REFERENCES)语句控制对数据库对象的访问 224
技巧154 使用GRANT DELETE(以及REVOKE DELETE)语句控制对数据库对象的访问 226
技巧155 使用GRANT ALL(以及REVOKE ALL)语句授予(GRANT)或撤消(REVOKE)对数据库对象的权限 228
技巧156 使用视图将INSERT权限限制为只对表中的特定列 230
技巧t57 使用视图将SELECT权限限制为只对表中的特定列 231
技巧158 使用视图扩展SQL安全性权限 232
第7章 创建索引加快数据引用 234
技巧159 理解索引 234
技巧160 理解MS-SQL Server如何选择用于查询的索引 236
技巧161 使用CREATE INDEX语句创建索引 237
技巧162 理解MS-SQL Server的CREATE INDEX语句选项 238
技巧163 使用MS-SQL Server Enterpeise Manager创建索引 241
技巧164 使用DROP INDEX语句删除索引 243
技巧165 理解MS-SQL Server的集群索引 243
技巧166 使用MS-SQL Server Index Tuning Wizard(索引调节向导)优化数据库索引 244
第8章 使用键字和约束保持数据库的一致姓 251
技巧167 理解数据库键字的重要性 251
技巧168 理解单列和复合键字 251
技巧169 理解MS-SQL Server的规则 253
技巧170 使用CREATEDOMAIN语句创建域 254
技巧171 理解主键 255
技巧172 使用PRIMARY列约束惟一地确定表行 257
技巧173 理解外键 258
技巧174 理解引用完整性检查和外键 260
技巧175 理解引用数据完整性检查为什么会危害安全性 262
技巧176 理解引用完整性检查如何限制删除行和表的能力 263
技巧177 理解引用完整性检查的INSERT死锁及解决办法 264
技巧178 理解和保持实体完整性 266
技巧179 理解NULL值与惟一性的相互作用 267
技巧180 理解并保持域的完整性 268
技巧181 理解和保持引用完整性 269
技巧182 理解如何应用RESTRICT规则更新和删除以帮助保持引用完整性 270
技巧183 理解如何应用CASCADE规则更新和删除以帮助保持引用完整性 271
技巧184 理解如何应用SET NULL规则更新和删除以帮助保持引用完整性 272
技巧185 理解如何应用SET DEFAULT规则更新和删除以帮助保持引用完整性 272
技巧186 理解级联删除规则的危险本质 273
技巧187 使用Enerprise Manager在已有表间添加FOREIGN关系 275
技巧188 使用MATCH FULL子句保持引用完整性 278
技巧189 理解MATCH FULL、MATCH PARTLAL和MATCH SIMPLE子句 279
技巧190 理解SET NULL规则与MATCH子句的相互作用 280
技巧191 使用NOT NULL列约束防止列中的NULL值 282
技巧192 使用UNIQUE列约束防止列中的重复值 283
技巧193 使用CHECK约束确认列值 284
技巧194 使用MS-SQL Server Enterprise Manager将规则与数据类型或列绑定在一起 285
技巧195 使用Transact-SQL的CREATERULE语句创建MS-SQL Server规则 288
技巧196 使用MS-SQL Server Enterprise Manager的Rule Properties屏幕改变规则 289
技巧197 使用Transact-SQL的DROPRULE语句永久地从数据库中删除规则 290
技巧198 使用MS-SQL Server Enterprise Manager列出并编辑视区 291
技巧199 使用CREATE ASSERTlON语句创建多表约束 292
技巧200 理解数据库的正规化 293
技巧201 理解第一种正规形式(INF) 295
技巧202 理解第二种正规形式(2NF) 296
技巧203 理解第3种正规形式(3NF) 297
技巧204 解除数据库的正规化以改善性能 298
第9章 执行多表查询并创建SQL视图 300
技巧205 使用带FROM子句的SELECT语句进行多表查询 300
技巧206 使用视图显示一个或多个表或视图中的列 301
技巧207 使用视图显示一个或多个表的特定行中的列 302
技巧208 理解DBMS如何处理视图 303
技巧209 使用视图显示表达式的结果 304
技巧210 使用UPDATE语句通过视图改变多个表中的数据 305
技巧211 在CREATE VIEW语句中使用CHECK OPTION于句将视图约束应用于INSERT和UPDATE语句 306
技巧212 使用视图只允许用户看到表中的某些行 307
技巧213 使用视图只允许用户看到表中的某些列 308
技巧214 在CREATE VIEW语句中使用GROUP BY子句创建显示总结数据的视图 309
技巧215 使用CREATE VIEW语句显示组合两个或多个表的结果 310
技巧216 使用UNION运算符选择出现在任一或全部的两个或多个表中的所有行 310
技巧217 使用UNION ALL运算符选择出现在任一或全部的两个或多个表中的所有行(包括重复的行) 312
技巧218 使用UNION CORRESPONDING运算符组合来自两个或多个与UNlON不兼容的表中的行 313
技巧219 使用UNlON运算符组合两条查询的结果 314
技巧220 使用ORDER BY子句对UNION运算符的结果排序 315
技巧221 使用UNION运算符组合3个或3个以上的表 316
技巧222 理解MS-SQL Server的事务处理日志放于何处才能改善性能 317
技巧223 理解多列的UNIQUE约束 318
第10章 使用函数、参数和数据类型 320
技巧224 理解实际值 320
技巧225 理解变量 320
技巧226 理解参数 322
技巧227 理解用户/会话和日期/时间函数与变量 323
技巧228 理解列引用 324
技巧229 使用SUBSTRING函数提取部分字符串 325
技巧230 使用UPPER函数将字符串中的所有字符转化为大写 326
技巧231 使用DISTlNCT于句消除行集中的重复 327
技巧232 使用LOWER函数将字符串中的所有字符转化为小写 328
技巧233 使用TRIM函数删除前导和结尾的空格 329
技巧234 使用Transact-SQL的STUFF函数将字符串插入另一字符串 330
技巧235 使用Transact-SQL的串接运算符"+"在另一字符串尾部添加字符串 331
技巧236 理解Transact-SQL的CONVERT函数 331
技巧237 理解UNION、INTERSECT和EXCEPT运算符 334
技巧238 使用INTERSECT运算符选择出现在所有两个或多个源表中的行 335
技巧239 使用EXCEPT运算符选择出现在一个表而不出现在另一表中的行 336
技巧240 使用POSITION函数返回字母或子字符串在字符串中的位置 337
技巧241 使用CHAR_LENGTH函数返回字符串变量的长度 338
技巧242 使用OCTET_LENGTH函数决定用于保存字符串变量或实际值所需的字节数 339
技巧243 使用BIT_LENGlH函数决定用于保存字符串变量或实际值所需的位数 340
技巧244 使用EXTRACT函数从DATETIM值中提取单个域 340
技巧245 使用CURRENT_TIME函数读取当前系统时间 341
技巧246 使用CURRENT_DATE函数读取当前系统日期 342
技巧247 使用CURRENT_TIMESTAMP函数读取当前系统日期和时间 342
技巧248 理解MS-SQL Server的日期和时间函数 343
技巧249 使用CAST函数将值从一种数据类型转化为另一种 345
技巧250 使用CASE表达式根据列的值选择实际值 346
技巧251 在搜索的CASE表达式中使用子查询 347
技巧252 使用NULLF函数将列值设置为NULL 348
技巧253 使用CAST函数比较不同数据类型列中的值 349
技巧254 使用CAST函数从SQL向宿主语言中传递值 350
技巧255 理解在Select语句中如何使用修饰于句 351
第11章 使用比较判式和组台查询 353
技巧256 理解比较判式 353
技巧257 在WHERE子句中使用BETWEEN关键词选择行 354
技巧258 在WHERE子句中使用IN或NOTIN判式选择行 355
技巧259 在LIKE判式中使用通配符 356
技巧260 在LIKE判式中使用转义字符 356
技巧261 使用LIKE和NOTLIKE比较两个字符串 357
技巧262 理解MS-SQL Server对LIKE判中的通配符的扩展 358
技巧263 使用NULL判式找出所选列中有NULL值的所有行 358
技巧264 理解WHERE子句中的ALL限定符 359
技巧265 理解WHERE子句中的SOME和ANY限定符 360
技巧266 理解UNIQUE判式 361
技巧267 使用OVERLAPS判式决定一个DATEIME是否与另一个重叠 362
技巧268 理解GROUP BY子句和组合查询 363
技巧269 理解对组合查询的限制 364
技巧270 使用GROUP BY子句根据单一列值组合行 365
技巧271 使用GROUP BY子句根据多列组合行 366
技巧272 使用ORDER BY子句改变由GROUP BY子句返回的组中的行序 367
技巧273 使用MS-SQL Transact-SQL的COMPUTE子句在同一结果表中显示明细及汇总行 368
技巧274 使用MS-SQL Transact-SQL的COMPUTE和COMPUTEBY子句显示多级分类汇总 369
技巧275 理解GROUP BY子句如何看待NULL值 371
技巧276 使用HAVING子句筛选包括在组合查询结果表中的行 372
技巧277 理解WHERE子句和HAVING子句之间的差别 373
技巧278 理解在组合查询中使用HAVING于句的SQL规则 374
技巧279 理解SQL如何处理HAVING子句的NULL结果值 374
第12章 使用SQL的联合语句和其他多表查询 377
技巧280 使用来自多个MS-SQL Server数据库中的表 377
技巧281 理解笛卡尔积 378
技巧282 使用FROM子句执行多表查询 379
技巧283 理解联合和多表查询 380
技巧284 使用WHERE子句联合与单列PRIMARY/FOREIGN KEY对相关的两个表 381
技巧285 使用WHERE子句联合与复合的PRIMARY KEY/FOREIGN KEY对相关的两个表 382
技巧286 使用WHERE子句根据父/子关系联合3个或多个表 383
技巧287 使用WHERE子句根据非键字列联合表 384
技巧288 理解非等价联合 386
技巧289 在有一个或多个相同列名的联合的多个表中多表查询中使用合格的列名 387
技巧290 使用带INTERSECT运算符的ALL关键词在查询结果表中包括重复的行 388
技巧291 在对非UNlON兼容表的INTERSECT查询中使用CORRESPONDING关键词 389
技巧292 使用没有WHERE子句的多表联合生成笛卡尔积 390
技巧293 使用别名(关联名)作为表名的简写 392
技巧294 理解一对多和多对一的联合 393
技巧295 理解多对多的联合 394
技巧296 理解NATURAL JoIN 396
技巧297 理解条件联合 397
技巧298 使用CROSS JOIN创建笛卡尔积 398
技巧299 理解列名联合 399
技巧300 使用INNER JOIN选择一个表中与另一表中的行相关的所有行 400
技巧301 理解USING子句在INNER JOIN中的作用 401
技巧302 理解OUTER JOIN 401
技巧303 理解LEFT OUTER JOIN 403
技巧304 理解RIGHT OUTER JOIN 405
技巧305 理解FULL OUTER JOIN 406
技巧306 理解MS-SQL Server的OUTER JOIN记号 407
技巧307 在单一查询中联合两个以上的表 408
技巧308 理解非相等的INNER和OUTER JOIN语句 409
技巧309 理解UNION JOIN 410
技巧310 使用COALESCE表达式改善UNION JOIN的结果 411
技巧311 理解取FROM子句在JOIN语句中的作用 412
技巧312 在多表JOIN中使用"*"运算符指明所有或只是某些表中的所有列 413
技巧313 在单表JOIN(即自我JOIN)中使用表别名 414
技巧314 理解表的别名 416
技巧315 理解ANY的模糊本质以及SQL如何使其表示SOME 418
技巧316 使用EXISTS而不使用COUNT(*)检查子查询是否至少返回一行 419
技巧317 理解为什么表达式NULL=NULL求值为FALSE 420
技巧318 理解何时使用ON子句以及何时使用WHERE子句 421
技巧319 理解如何使用嵌套的查询同时处理多个表 422
第13章 理解SQL子查询 424
技巧320 理解返回行集的嵌套查询 424
技巧321 理解于查询 425
技巧322 理解在子查询中引用时的主查询列的值 426
技巧323 理解子查询的比较测试 427
技巧324 在于查询中使用EXISTS判式来决定行中是否有满足搜索标准的列值 428
技巧325 理解子查询与联合之间的关系 429
技巧326 在于查询中使用关键词IN根据保存在另一表列中的值来选择行 430
技巧327 使用关键词IN引入子查询 431
技巧328 使用关键词NOT IN引入子查询 432
技巧329 使用ALL引入返回多个值的子查询 433
技巧330 使用SOME或ANY引入返回多个位的子查询 434
技巧331 在于查询中使用总计函数返回单值 435
技巧332 理解嵌套的于查询 436
技巧333 理解WHERE子句中子查询的作用 437
技巧334 使用嵌套查询返回TRUE或FALSE值 438
技巧335 理解关联子查询 439
技巧336 理解HAVING子句中子查询的作用 441
技巧337 理解JOIN语句中关联的和非关联的子查询的执行顺序 442
技巧338 使用关键词IN引入关联子查询来确定有特定值的表列的存在性 443
技巧339 理解用比较运算符引入的关联子查询 444
技巧340 将关联子查询用作HAVING子句中的过滤器 445
技巧341 使用关联子查询为UPDATE语句选择行 446
第14章 理解事务处理隔离级别和并发处理 448
技巧342 理解级联删除和更新的必要性 448
技巧343 使用带关联子查询的INSERT语句创建快照表 449
技巧344 理解数据库管理员(DBA)的作用 450
技巧345 理解数据库对象拥有者(DBOO)的作用 451
技巧346 GRJLb盯语句授予某人以DELETE权限 452
技巧347 理解对用作约束的域授予USAGE权限的安全性含义 453
技巧348 理解(CASCADE和非CASCADE)取消GRANT权限的效果 454
技巧349 理解如何一起使用GRANT和服VOKE语句以便在授予权限时节省时间 455
技巧350 理解并发事务处理问题和隔离级别 456
技巧351 理解READ UNCOMMTTED和作废读取 457
技巧352 理解READ COMMTTED和不可重复读取 458
技巧353 理解REPEATABLE READ和幻影插入 459
技巧354 理解表级、页级和行级锁定 459
技巧355 理解MS-SQL Server的锁定扩大 460
技巧356 理解死锁以及DBMS如何解决死锁 461
技巧357 理解SERIALIZABLE隔离级别 462
技巧358 理解REPEATABLEREAD隔离级别 463
技巧359 理解READ COMMITTED隔离级别 464
技巧360 理解READ UNCOMMTTED隔离级别 464
技巧361 使用MS-SQL Server Enterprise Manager显示阻塞和被阻塞的会话 465
技巧362 使用MS-SQL Server Enterprise Manager"杀死"对数据库对象保持锁定的进程 467
技巧363 理解MS-SQL Server与Orack上的锁定和事务处理隔离 468
技巧364 使用SET TRANSACTION语句设置事务处理的隔离级别 469
技巧365 使用COMMIT语句使数据库更新成为永久的 471
技巧366 理解何时约束是可延缓的以及何时不是 472
技巧367 使用SET CONSTRAINTS语句在提交事务处理之前延缓DEFERRABLE约束 473
第15章 编写外部应用程序来查询与操作数据库数据 475
技巧368 为开放数据库互连(ODBC)连接创建数据源名称(DSN) 475
技巧369 向Visual Basic(VB)窗体中添加数据控件组件以便提取SQL表数据 478
技巧370 向Visual Basic(VB)窗体中添加MSFLexGrid控件以显示SQL表数据 480
技巧371 向Visual Basic(VB)窗体中添加Text和Button控件创建向SQL Server发送查询的应用程序 481
技巧372 创建用于与SQL Server通讯的简单C++外壳程序 484
技巧373 使用SQL AllocEnv和SQLFreeEnv分配及释放ODBC环境资源 486
技巧374 使用SQLAllocConnect和SQLFreeConnect分配和释放连接句柄和内存资源 487
技巧375 使用SQLSetConnectOption为与SQL Server的ODBC连接设置会话选项 489
技巧376 使用SQLConnect和SQLDisconnect建立和结束DBMS会话 490
技巧377 使用SQLAllocEnv和SQLFreeEnv分配及释放SQL语句句柄和内存资源 492
技巧378 使用SQLExcDirect向DBMS发送用于执行的SQL语句 493
技巧379 使用SQLFetch函数从SQL数据库中提取数据行 494
技巧380 使用SQLExtendedFetch函数创建可更新的游标(Cursor) 496
技巧381 理解行式和列式绑定之间的差别 498
技巧382 使用SQLSetConnectOption函数选择在执行SQL语句时使用的数据库 500
技巧383 使用SQLSetPos函数设置行集中的游标位置 501
技巧384 使用SQLSetPos函数的SQL_UPDATE选项执行位更新 501
技巧385 使用SQLSetPos函数的SQL_DELETE选项执行定位删除 502
技巧386 当ODBC驱动程序不支持定位删除时使用SQLExecDirect函数删除数据库中的行 503
技巧387 在ODBC驱动程序不支持定位更新时使用SQLExecDirect函数更新数据库中的列值 504
技巧388 使用SQLError函数提取并显示ODBC错误代码和错误消息 506
技巧389 在宿主程序变量中处理NULL值 507
技巧390 理解客户/服务器环境中A门的作用 508
技巧391 向Visual Basic(VB)中添加nB函数库(DBLIB)功能 509
技巧392 在不显示窗体的情况下启动Visual Basic(VB)程序 511
技巧393 使用SqlInit()函数初始化DB函数库以及使用SqlWinExit例程释放由Sqllnit()分配的内存 512
技巧394 使用SqlOpenConnection()函数登录MS-SQL Server 513
技巧395 使用SqlClose()例程关闭单个MS-SQL Server连接或者调用SqlExit关闭所有打开的连接 514
技巧396 使用SqlSendCmd函数向MS-SQL Server发送用于执行的SQL语句 515
技巧397 使用SqlNumCols()决定由查询生成的结果集中的列数 515
技巧398 使用SqlColName()函数提取由查询生成的结果集中的列名 516
技巧399 使用SqlData()函数从游标中将查询结果提取到应用程序中 517
技巧400 使用SqlNextRow()函数在游标行中向前移动 518
技巧401 使用SqlCmd()函数建立SQL语句批处理 519
技巧402 使用SqlExec()函数将SQL语句批处理提交给MS-SQL Server执行 520
技巧403 使用SglResults()函数提取SqlExec()发送的查询结果集 521
技巧404 使用SqlSeMd()提交语句批处理而不必等待DBMS完成所有语句的执行 522
技巧405 使用SqlDataReady()函数确定MS-SQL Server是否完成了SQL语句批处理 523
技巧406 用SqlCancel()终止发送到MS-SQL Server的语句批处理并清除批结果缓冲区 524
技巧407 用SqlCanQuery()函数在当前结果集中删除剩余(未被处理的)行 525
技巧408 用SqlUse()函数为MS-SQL Server连接设置当前数据库 526
技巧409 用Vbsq11-Error()例程显示DBLIB生成的错误消息 527
技巧410 用Vbsqll_Message()例程显示MS-SQL Server生成的错误消息 528
技巧411 用SqlColType()函数确定列的数据类型 529
技巧412 用SqlDatLen()函数确定储存在DBUB缓冲区列中的数据的字节数 530
技巧413 在Visual Basic应用程序中给宿主变量指定NULL值 531
技巧414 用SqlSetOpt()设置行缓冲区的大小以使用SqlGetRow()随机提取行 532
技巧415 理解缓冲区与游标之间的区别 533
技巧416 用SqlGetRow()函数在DBLIB查询结果缓冲区中选择当前行 534
技巧417 用SqlClrBuff()函数在DBLIB查询结果缓冲区中为附加行腾出空间 535
技巧418 理解MS-SQL Server的SELECT语句中的FOR BROWSE子句 536
技巧419 理解DBLIB为什么不支持定位UPDATE和DELETE语句 537
技巧420 理解DBLIB浏览模式的函数 537
技巧421 为执行浏览模式的UPDATE或DELETE语句准备DBLIB 538
技巧422 用SqlQual()函数为DBLIB浏览模式的UPDATE或DELETE语句生成WHERE子句 539
技巧423 执行DBLIB浏览模式的DELETE语句 540
技巧424 执行DBLIB浏览模式的UPDATE语句 541
技巧425 用DBLIB API执行动态SQL查询 542
第16章 通过游标提取和维护数据 544
技巧426 理解游标的目的 544
技巧427 用DECLARE CURSOR语句定义游标 545
技巧428 用OPEN语句创建游标 546
技巧429 用ORDER BY子句改变游标中行的顺序 546
技巧430 在游标中包含计算好的值作为列 547
技巧431 用FOR UPDATE子句指定游标可修改底层表的哪些列 547
技巧432 用FETCH语句从游标中的行提取列值 548
技巧433 把游标的当前行指针预先定向到从当前行获取列值 549
技巧434 理解基于游标的定位DELETE语句 550
技巧435 理解基于游标的定位UPDATE语句 551
技巧436 用索引改变游标中行的顺序 552
技巧437 使用@@FETCH_STATUS利用WHILE循环处理游标中的行 552
技巧438 理解如何设置游标对底层表中的改变的敏感度 553
技巧439 用CLOSE语句关闭游标 554
技巧440 用DEALLOCATE语句删除游标并释放其服务器资源 555
技巧441 理解DECLARE CURSOR语句的Transact-SQL扩展句法 555
技巧442 理解异步KEYSET游标填充 557
数巧443 用⑥@CURSOR-ROWS系统变量确定游标中的行数 557
第17章 理解触发器 559
技巧444 理解何时用CHECK约束代替触发器 559
技巧445 理解嵌套游标 559
技巧446 用⑥⑥ERROR函数确定最后执行的Transact-SQL语句的错误状态 562
技巧447 理解当前日期和时间的值是在语句开始执行时设置的 562
技巧448 理解触发器 563
技巧449 用CREATE TRIGGER语句创建触发器 564
技巧450 理解INSERT触发器 566
技巧451 理解DELETE触发器 567
技巧452 理解层叠触发器 568
技巧453 理解UPDATE触发器 569
技巧454 用UPDATE触发器改变PRIMARY KEY/FOREIGN KEY对的值 571
技巧455 用触发器增强引用完整性 572
技巧456 用触发器发送E-mail消息 573
技巧457 理解嵌套触发器 574
技巧458 用MS-SQL Server Enterprise manager显示或修改触发器 575
技巧459 用DROP TRIGGER语句删除触发器 577
技巧460 用ALTER VIEW语句修改视图 577
技巧461 用ALTER TABLE语句改变列的数据类型 578
第18章 处理BIobs数据和文本 580
技巧462 理解由二进制和字符大对象(BLOB)的处理带来的挑战 580
技巧463 理解MS-SQL Server的BLOB(TEXT、NTEXT和MAGE)数据处理过程 581
技巧464 用INSERT或UPDATE语句把数据放到BLOB数据类型的列中 582
技巧465 用Transact-SQL WRITEETXT语句把数据放到TEXT、NTEXT或IMAGE列中 583
技巧466 用Transact-SQL UPDATETEXT语句改变TEXT、NTEXT或IMAGE列的内容 584
技巧467 用READTEXT()函数读取TEXT、NTEXT或IAGE列中的部分(或全部)数据 585
技巧468 用MS-SQL Server的TEXTVALID()函数确定文本指针是否有效 586
技巧469 用PATINDEX()函数返回BLOB中第一次出现的地址 586
技巧470 用DATALENGTH()函数返回BLOB中的字节数 587
技巧471 理解TEXTSIZE选项和⑥⑥TEXTSIZE()函数 588
第19章 使用MS-SQL Server信息架构视图 589
技巧472 理解信息架构 589
技巧473 理解信息架构的CHECK_CONSTRAINTS视图 589
技巧474 理解信息架构的COLUMN_DOMAIN_USAGE视图 590
技巧475 理解信息架构的COLUMN_PRIVILEGES视图 591
技巧476 理解信息架构的COLUMNS视图 591
技巧477 理解信息架构的CONSTRAINT_COLUMN_USAGE视图 593
技巧478 理解信息架构的CONSTRINT_TABLE_USAGE视图 594
技巧479 理解信息架构的DOMAIN_CONSTRAINTS视图 595
技巧480 理解信息架构的DOMAINS视图 596
技巧481 理解信息架构的KEY_COLUMN_USAGE视图 597
技巧482 理解信息架构的PARAMETERS视图 597
技巧483 理解信息架构的REFERENTIAL_CONSTRAINTS视图 599
技巧484 理解信息架构的ROUTNES视图 600
技巧485 理解信息架构的SCHEMATA视图 603
技巧486 理解信息架构的TABLE_CONSTRAINTS视图 603
技巧487 理解信息架构的TABLE_PRIVILEGES视图 604
技巧488 理解信息架构的TABLES视图 605
技巧489 理解信息架构的VIEW_COLUMN_USAGE视图 606
技巧490 理解信息架构的VIEW_TABLE_USAGE视图 606
技巧491 理解信息架构的ROUTINE_COLUMNS视图 607
技巧492 理解信息架构的VIEWS视图 608
技巧493 用MS-SQL Server Enterprise Manager查看信息架构视图的内容 609
技巧494 理解MS-SQL Server系统数据库表 611
技巧495 定义数据库的物理位置 612
技巧496 向已有数据库添加文件和文件组 614
技巧497 用MS-SQL Server Enterprise Manager向已有数据库添加文件和文件组 615
技巧498 理解使用单或多数据库结构的优点与缺点 616
技巧499 通过创建联接表视图简化多表查询 618
技巧500 理解CREATE VIEW语句中的WITH SCHEMABING子句 619
第20章 监测及提高MS-SQLServer的性能 621
技巧501 理解多处理器Windows NT系统上的MS-SQLServer多任务与多线程 621
技巧502 用MS-SQL Server的PRIORTY BOOST配置选项把服务器线程的优先权从7增加到13 622
技巧503 理解NT Server的性能监视器图表视图 623
技巧504 理解NT Server性能监视器的报告视图 625
技巧505 理解NT Server性能监视器的警报视图 626
技巧506 用CREATE SCHEMA语句创建表并授予对此表的访问权限 628
技巧507 建立NT Server性能监视器日志以帮助优化MS-SQL Server 629
技巧508 用NT性能监视器查看性能日志文件 631
技巧509 配置WindowsNT的应用程序事件日志 632
技巧510 显示Windows NT应用程序事件详情并清除应用程序事件日志 633
技巧511 用MS-SQL Server服务管理器启动MS-SQL Server 635
技巧512 从命令提示符启动MS-SQL Server 636
技巧513 用Windows控制面板使MS-SQL Server自动启动 636
技巧514 理解MS-SQL Server的客户软件 638
技巧515 安装MS-SQL Server客户软件 639
技巧516 理解MS-SQL Server系统目录 640
技巧517 理解SQL Server备份 643
技巧518 创建MS-SQL Server备份(转储)设备 644
技巧519 执行MS-SQL Server数据库的手工备份 646
技巧520 安排MS-SQL Server自动备份的时间 649
技巧521 理解如何恢复MS-SQL Server数据库 651
技巧522 理解MS-SQL Server优化器提示 657
技巧523 用MS-SQL Server的SHOWPLAN_TEXT选项显示语句的执行计划 658
技巧524 理解显示语句执行计划和状态的MS-SQL Server SHOWPLAN_ALL选项 660
技巧525 使用MS-SQL Server SQL Query Analyzer的SHOWPLAN选项 661
技巧526 理解MS-SQL Server 2000的硬件和操作系统需求 663
技巧527 安装MS-SQL Server 664
技巧528 用MS-SQL Server SETUSER语句测试用户对数据库对象的访问权限 670
技巧529 理解MS-SQL Server的MODEL数据库 670
第21章 使用存储过程 672
技巧530 理解存储过程 672
技巧531 使用CREATE PROCEDURE语句创建存储过程 674
技巧532 用EXECUTE语句调用存储过程 675
技巧533 理解如何在存储过程中声明变量 676
技巧534 使用存储过程参数返回值 677
技巧535 用关键词RETURN从存储函数中返回一个值 679
技巧536 在存储过程中使用游标 682
技巧537 使用CREATE FUNCTION语句创建存储函数 684
技巧538 使用MS-SQL Server Enterprise Manager查看或修改存储过程或函数 688
技巧539 使用Transact-SQL关键词DECLARE和SELECT在存储过程中定义变量并为其赋初始值 689
技巧540 使用DROP语句从数据库中删除存储过程或用户定义的函数 691
第22章 修理及维护MS-SQL Server数据库文件 693
技巧541 理解MS-SQL Server的Database Consistency Checker (DBCC,数据库一致检查器) 693
技巧542 理解DBCC的维护语句 694
技巧543 理解DBCC的杂项语句 698
技巧544 理解DBCC状态语句 700
技巧545 理解DBCC确认语句 705
第23章 编写高级查询及子查询 711
技巧546 理解对用作比较运算符判式的子查询的限制 711
技巧547 使用视图允许子查询中的工作表自我联合 712
技巧548 使用临时表删除重复数据 713
技巧549 使用临时表从多表中删除行 715
技巧550 使用UPDATE语句根据另一个表中的值设置表中的值 716
技巧551 优化EXISTS判式 718
技巧552 使用ALL判式把两个查询合二为一 720
技巧553 用EXISTS判式检查表中的重复行 721
技巧554 把表内容和函数结果合并 722
技巧555 使用视图显示汇总级别的层次 723
技巧556 理解MS-SQL Server的TOP n运算符 724
技巧557 在没有TOP n运算符的DBMS内构建Top n 或Botton n查询 726
技巧558 使用带标量子查询的SELECT语句显示流水总计 728
技巧559 使用EXCEPT判式确定两表差异 729
技巧560 使用EXISTS判式生成两表的交集 730
第24章 探索MS-SQL-Server的内建存储过程 731
技巧561 使用sp_detach_db和sp_attach_db在Ms-sQL server上删除和添加数据库 731
技巧562 使用Ms-sQL server的存储过程sp-addtype和sp_droptype添加和删除用户定义的数据类型 732
技巧563 使用sp-help显示数据库对象属性 734
技巧564 使用sp-helptext显示定义存储过程、用户定义函数、触发器、默认值、规则或者视图的文本 735
技巧565 用sp-depends显示定义视图的表和(或)视图 735
技巧566 使用sp_helpconstraint显示有关表约束的信息 736
技巧567 使用sp_pkeys显示表的PRIMARY KEY信息 738
技巧568 使用sP_fkeys显示关于引用表的PRINARY KEY的外键信息 739
技巧569 使用sp_procoption控制MS-SQL server启动时运行的存储过程 741
技巧570 用sp-helpdb显示数据库文件的尺寸和物理位置 743
技巧571 使用sp-spaceused显示分配给数据库或单独的数据库对象的已用与未用空间量 744
技巧572 使用sp-helptrigger显示有关表上的触发器信息 745
技巧573 使用sp-who和KILL命令控制运行在MS-SQL Server上的进程 746
技巧574 使用sp_lock显示数据库所掌握的锁定信息 748
技巧575 使用sp_password改变账户密码 750
技巧576 使用内建存储过程管理MS-SQL Server用户账户 751
第25章 通过Internet处理SQL数据库中的数据 755
技巧577 使用sp_makewebtask创建生成Web页面的任务 755
技巧578 为MS-SQL Server查询结果创建Web页面模板 761
技巧579 格式化由MS-SQL Server存储过程创建的Web页面上的查询结果表 763
技巧580 使用sp-makewebtask在链接的Web页面上显示IMAGE和TEXT数据 766
技巧581 使用内建的存储过程启动或删除Web任务 768
技巧582 使用MS-SQL Server Web Assistant Wizard创建执行存储过程的Web任务 770
技巧583 理解Active Server Pages(ASP,活动服务器页面)和ActiveX Data Objects(ADO,ActiveX数据对象) 776
技巧584 下载并安装PHP 778
技巧585 理解开放数据库连接(ODBC)和数据源名(DSNs) 779
技巧586 建立数据源(DSN)与SQL DBMS的连接 785
技巧587 下载、安装并使用MyODBC驱动程序与MySQL数据库连接 788
技巧588 与MS-SQL Server或MySQL DBMS建立无DSN的连接 791
技巧589 使用ADO Connection对象执行SELECT语句设置访问Web站点的用户名/密码 793
技巧590 在Web页面上的HTML表中显示查询结果 795
技巧591 编写可重用的PHP例程在Web页面上显示查询结果 796
技巧592 通过HTML表单提交SQL查询 802
技巧593 使用HTML表单向SQL表中插入数据 806
技巧594 通过HTML表单更新及删除数据库数据 808
技巧595 从脚本内调用存储过程 812
技巧596 使用VBScript处理Recordset对象 813
技巧597 通过Internet处理SQL的事务处理过程 817
技巧598 创建与MS-SQL Server的虚拟连接 819
技巧599 使用HTTP执行SQL语句 826
技巧600 使用XML架构利用HTTP提交查询并使用xsL样式表来格式化查询结果 827
技巧601 显示保存在SQL表内的图像数据 832