《SQL应用开发范例宝典》PDF下载

  • 购买积分:19 如何计算积分?
  • 作  者:孔志勇,王毅,房大伟编著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2008
  • ISBN:9787115179302
  • 页数:688 页
图书介绍:本书精选了400多个典型实例,所选实例覆盖了SQL Server 2000、SQL Server2005、Acess、Oracle10g、MySQL5.0、Postgresql8.2 共6个数据库的开发热点问题和关键技术。全书按实际应用进行分类,可以使读者在短时间内掌握更多有用的技术,快速提高编程水平。所选内容均来源于实际项目的开发,有的实例是作者开发实践的积累,有的实例来源于公司的开发项目,还有的来自读者的问题。通过对这些实例进行详细分析和讲解,可以让读者迅速掌握数据库的开发经验和技巧,迅速提高数据库应用程序开发的综合水平。全书分为23章,涵盖了SQL语言基础、SQL查询统计技术、SQL数据操作(数据的添加、修改、删除)技术、数据库对象创建与修改技术、数据库维护技术、数据库导入/导出技术和嵌入式SQL技术等各种SQL技术。在实例讲解上,全书采用了统一的编排方式,每个实例都包括“实例说明”、“技术要点”、“实现过程”和“举一反三”4个部分。在“实例说明”中,以图文结合的方式给出了实例的功能说明及运行效果。在“技术要点”中给出了实例的重点、难点技术和相关编程技巧。在“实现过程”中介绍了该

第1章 SQL语言基础 1

1.1 变量与常量 2

实例001 定义和使用局部变量 2

实例002 定义和使用全局变量 4

实例003 数字常量的使用 6

实例004 使用字符串常量 8

实例005 使用日期和时间常量 9

1.2 数据类型 10

实例006 使用常见的数据类型 11

实例007 使用文本和图像数据类型 13

实例008 定义表数据类型 15

实例009 自定义数据类型 16

1.3 复合语句 18

实例010 定义复合语句(begin...end) 18

实例011 GO语句 20

1.4 条件判断语句 21

实例012 使用if语句进行条件判断 21

实例013 使用case语句进行条件选择判断 22

1.5 循环语句 25

实例014 使用while语句 25

实例015 在循环中使用break语句 26

实例016 在循环中使用continue语句 27

实例017 利用goto语句实现循环 29

1.6 临时表 30

实例018 定义和使用局部临时表 30

实例019 定义和使用全局临时表 31

实例020 使用select into语句生成临时表 33

1.7 常用命令 34

实例021 使用print命令输出文本 34

实例022 使用DBCC命令检查数据库 35

实例023 使用kill命令结束连接数据库中的进程 36

第2章 常规数据查询 39

2.1 查询的基本结构 40

实例024 SELECT语句的结构 40

2.2 列的查询 42

实例025 单列查询 42

实例026 多列查询 43

实例027 查询所有列 44

实例028 使用列别名 46

2.3 列的计算 47

实例029 简单列计算 47

实例030 复杂列计算 49

实例031 执行算术组合计算 50

实例032 连接列值 51

实例033 使用字符函数对列进行格式化查询 52

实例034 使用数字函数对列进行格式化查询 54

实例035 使用常量查询 56

2.4 WHERE条件查询 57

实例036 检索单行值 58

实例037 不匹配检索 59

2.5 区间查询 60

实例038 利用“〈”、“〉”号进行区间查询 61

实例039 利用BETWEEN进行区间查询 62

第3章 高级数据过滤 65

3.1 组合WHERE语句 66

实例040 使用AND运算符连接WHERE子句 66

实例041 利用OR运算符连接WHERE子句 67

实例042 有效利用组合顺序 68

实例043 对数值列进行四舍五入 70

实例044 使用行值表达式简化查询条件 72

实例045 怎样去掉小数点后多余的0 73

3.2 IN运算符 74

实例046 使用IN运算符简化条件判断 74

实例047 使用IN运算符查询4:1、4:2、4:3赢得比赛的信息 75

3.3 NOT运算符 76

实例048 使用NOT运算符 76

实例049 〈〉运算符的使用 78

3.4 行查询 79

实例050 使用UNIQUE以没有重复行为条件查询数据 79

实例051 限制返回行数(top rownum limit) 80

实例052 从表中随机返回记录 81

实例053 使用DISTINCT去除重复信息 82

实例054 返回第8行到第10行的数据 84

实例055 查找具体行数据 85

实例056 查询时显示行号的方法 86

实例057 延时执行查询 88

实例058 使用ReadText读取文本类型数据 89

实例059 预览员工工资提高10%的金额 91

实例060 确定哪些行是彼此互换的 92

实例061 强制使用非簇索引查询数据 93

实例062 使用iif函数进行条件判断 94

3.5 类型转换 95

实例063 使用convert函数进行类型转换 95

实例064 使用cast函数进行类型转换 97

实例065 格式化金额 98

实例066 将字符串转换为日期 99

实例067 将日期转换为字符串 100

3.6 进制转换 101

实例068 二进制转换十进制 101

实例069 八进制转换十进制 102

实例070 十六进制转换十进制 103

3.7 匹配查询 105

实例071 使用like运算符 106

实例072 使用“%”匹配字符串 107

实例073 使用“_”匹配任意字符 108

实例074 使用“_”查询6个字的数据 109

实例075 使用“[]”匹配某一范围的字符 111

实例076 使用“[^]”匹配非某一范围字符 112

实例077 匹配特殊字符 113

实例078 在模式查询中使用转义字符(escape) 114

实例079 在多个字段中进行单个字符的匹配查询 116

实例080 匹配发音 117

3.8 空值判断 118

实例081 查找空值 118

实例082 查找非空值 119

实例083 使用case语句将空值转换为实际值 121

实例084 使用coalesce函数将空值转换为实际值 122

实例085 使用nullif函数比较两个表达式 123

第4章 字符串查询 125

4.1 字符串查询 126

实例086 去除尾部空格 126

实例087 截取字符串的部分信息 127

实例088 使用“+”连接字符串 128

实例089 使用stuff函数插入字符串 129

实例090 将字符串以列的形式显示 130

实例091 在字符串中包含引号 131

实例092 获取字符在字符串中出现的次数 132

实例093 字符串大小写转换 133

实例094 去掉字符串中的“*” 135

4.2 截取字符串 135

实例095 从字符串中删除元音字符 135

实例096 从字符串中分离字符和数字 136

实例097 去除字符串中非字母和数字的字符 138

4.3 格式化字符串 139

实例098 将电话号码中的“-”去掉,但保留分机号前的“-” 139

实例099 提取电话号码中的区号和号码 140

实例100 格式化字符串为日期格式 141

4.4 替换字符串 143

实例101 将字符串中的指定字符替换为“*” 143

实例102 用“…”代替过长的字符串显示 143

4.5 比较字符串 145

实例103 比较两个字符串是否相同 145

实例104 比较两个字符串的相似性 146

实例105 大小写敏感查询 147

第5章 日期查询 149

5.1 格式化日期 150

实例106 把长日期格式数据转化为短日期格式数据 150

实例107 显示长日期格式数据中的小时、分、秒 151

实例108 将日期格式中的“.”转化为“-” 153

5.2 时间段查询 154

实例109 使用Between and查询某一时间段内的数据 154

实例110 使用关系运算符查询某一时间段的数据 155

实例111 使用in运算符查询某几个时间的数据 157

实例112 查询某一月份的数据 158

实例113 查询今天是周几 159

实例114 查询两个日期之间的天数 161

实例115 计算两个日期之间的月份数 162

实例116 计算两个日期之间的分、秒、小时 164

实例117 计算两个日期之间的工作日 165

实例118 返回当前记录与下一条记录之间相差的天数 166

5.3 获取日期 167

实例119 将日期中的年月日以列的形式显示 167

实例120 查询当前月份 169

实例121 查询3个月后的日期 170

实例122 获取某月的第一天 172

实例123 获取本周的第一天 173

实例124 获取当前季度的第一天 174

实例125 获取上个月的最后一天 175

实例126 获取去年最后一天 176

实例127 获取本年的最后一天 177

第6章 数据排序 179

6.1 数据排序 180

实例128 升序排序 180

实例129 降序排序 181

实例130 别名排序 182

6.2 字符串排序 183

实例131 按字符串中的某个子串排序 183

实例132 按字母数字混合数据排序 184

6.3 汉字排序 185

实例133 按姓氏笔画排序 186

实例134 按音序排序 187

6.4 按多个列排序 188

实例135 多列排序 188

实例136 重复值排序 189

实例137 排序前3名数据 190

实例138 排序后1名数据 191

实例139 查询结果排序 193

实例140 在统计结果中排序 194

6.5 按列序号排序 195

实例141 按列的编号排序 195

实例142 动态排序 196

第7章 聚合函数与分组统计 199

7.1 聚合函数 200

实例143 通过SUM函数对销售金额进行汇总 200

实例144 通过DISTINCT函数求不重复班级名称 201

实例145 通过AVG函数求某班学生的平均成绩 202

实例146 通过MIN函数求销售额最低值 204

实例147 利用MIN函数在子查询中查找最小值 205

实例148 通过MAX函数求销售额最高值 207

实例149 利用MAX函数在子查询中查询最大值 209

实例150 利用COUNT函数求日销售数量 210

实例151 利用COUNT函数求日销售额大于某值的商品数 212

实例152 利用COUNT函数求部门名称列非NULL值的个数 214

实例153 查询包含最大值和最小值的记录 215

实例154 查询不包含最大值和最小值的平均值 216

实例155 计算商品销售额所占的百分比 217

实例156 查询重复记录 219

7.2 分组统计 220

实例157 GROUP BY子句创建简单分组 220

实例158 GROUP BY子句创建多列组合行 222

实例159 在分组查询中使用ALL关键字 223

实例160 对统计结果进行排序 224

实例161 在分组查询中使用HAVING子句 226

实例162 在分组查询中使用CUBE运算符 227

实例163 在分组查询中使用ROLLUP 229

实例164 HAVING子句与WHERE子句的联合使用 231

实例165 多表分组统计 233

实例166 使用COMPUTE子句在同一结果集中显示明细和汇总 234

实例167 使用COMPUTE BY子句显示多级分类汇总 237

实例168 使用COALESCE函数将NULL转换成0后,计算员工的平均工资 239

实例169 生成累计和 240

实例170 生成累计差 241

第8章 使用子查询 243

8.1 简单子查询 244

实例171 在SELECT列表中的子查询 244

实例172 为子查询命名 245

实例173 多列子查询 246

实例174 在多表查询中使用子查询 248

8.2 单行子查询 249

实例175 比较子查询 249

实例176 在子查询中使用聚合函数 250

实例177 使用子查询更新数据 251

实例178 使用子查询删除数据 252

8.3 多行子查询 253

实例179 使用IN查询实现交集运算 253

实例180 使用NOT IN子查询实现差集运算 255

实例181 在嵌套中使用EXISTS谓词 256

实例182 在嵌套中使用NOT EXISTS谓词 259

实例183 使用比较谓词ALL引入子查询 260

实例184 使用比较谓词ANY引入子查询 261

实例185 不使用NOTIN查询主表中有而从表中没有的数据 263

8.4 相关子查询 264

实例186 使用IN引入相关子查询 264

实例187 嵌套子查询 265

实例188 在HAVING子句中使用相关子查询 267

实例189 比较运算符引入相关子查询 268

实例190 实现树查询 269

第9章 多表查询 271

9.1 多表联接 272

实例191 笛卡尔乘积查询 272

实例192 在多表联接中设置联接条件 273

实例193 使用表别名 274

实例194 在多表联接中返回某个表的所有列名 275

9.2 内联接 276

实例195 等值联接 276

实例196 不等联接 278

实例197 自然联接 279

实例198 多表内联接 280

9.3 外联接 281

实例199 左外联接 281

实例200 右外联接 282

实例201 完全联接 284

实例202 使用外联接进行多表联合查询 285

9.4 其他联接 286

实例203 自联接 286

实例204 静态交叉表 287

实例205 动态交叉表 289

实例206 在外联接中使用and运算符 290

9.5 组合查询 292

实例207 使用UNION运算符组合两个表的数据 292

实例208 一对多联合查询 293

实例209 对组合查询结果排序 295

实例210 使用UNION ALL保留重复行 296

实例211 使用UNION运算符消除重复的行 298

实例212 将数据表中符合指定条件的记录优先显示 299

实例213 使用INTERSECT函数进行交集运算 300

实例214 使用MINUS进行差集运算 301

9.6 使用联接和联接条件 302

实例215 在内联接中子查询使用聚合函数 302

实例216 利用联接条件查找两表中的共同行 303

实例217 查询一个表中存在的而其他两个表中不存在的数据 304

实例218 数据库之间数据的复制 305

实例219 从一个表中查询另一个表中没有的数据 306

实例220 根据另一表中的条件查询数据 307

实例221 利用递归生成连续数 308

第10章 高级查询 311

10.1 交叉表查询 312

实例222 交叉表 312

实例223 反转交叉表 313

实例224 行列转换 316

实例225 创建分隔列表 317

实例226 查询结果分页显示 318

实例227 在结果集中隔一行显示数据 320

10.2 分布式查询 321

实例228 建立链接 322

实例229 查看链接 323

实例230 删除链接 324

实例231 建立映射 325

实例232 查看登录映射信息 326

实例233 简单分布式查询 327

实例234 使用OpenDatasource函数进行分布式查询 329

实例235 使用OpenQuery函数进行分布式查询 331

实例236 使用OpenRowSet进行分布式查询 333

实例237 创建关联到电子表格的链接 335

实例238 创建关联Access数据库的链接 336

第11章 插入数据 339

11.1 插入单行数据 340

实例239 整行插入数据 340

实例240 特定字段数据插入 341

实例241 NULL值的插入 342

实例242 唯一值的插入 343

实例243 通过视图插入行 344

实例244 插入默认值 345

实例245 插入日期数据 346

实例246 创建数据表之后插入数据 347

11.2 插入多行记录 349

实例247 通过VALUES关键字插入多行数据 349

实例248 使用UNION ALL语句批量插入数据 350

实例249 使用INSERT SELECT语句批量插入数据 352

11.3 将查询结果插入数据表 353

实例250 从一个表中向另一个表中复制行 353

实例251 复制表结构 354

实例252 将查询结果中的数据插入到多表中 356

第12章 更新和删除数据 359

12.1 更新表中的数据 360

实例253 UPDATE语句更新列值 360

实例254 利用子查询更新多行的值 361

实例255 依据外表值更新数据 362

实例256 分步更新表 364

实例257 使用CASE表达式更新列值 366

实例258 只更新存在于其他表中的数据 368

实例259 利用Oracle数据库中的关键字merge合并记录 369

12.2 删除表中的数据 371

实例260 删除单条数据 371

实例261 删除多行数据 372

实例262 删除所有数据 373

实例263 删除部分重复的行 374

实例264 删除完全重复的行 376

实例265 使用TRUNCATE TABLE语句彻底删除数据 377

实例266 使用子查询删除数据 379

实例267 删除从其他表中引用的记录 380

实例268 删除违反参照完整性的记录 381

12.3 通过视图更新表 382

实例269 通过视图更新表数据 382

实例270 通过视图删除表数据 383

第13章 创建、操纵数据库和表 385

13.1 创建、删除数据库 386

实例271 创建包含多个数据文件和日志文件的数据库 386

实例272 创建带有多个文件组的数据库 389

实例273 修改数据库 390

实例274 向数据库中添加数据文件 392

实例275 向数据库中添加日志文件 393

实例276 向数据库中添加文件组 394

实例277 从数据库中删除文件 395

实例278 从数据库中删除文件组 396

实例279 删除数据库 397

13.2 表的创建 398

实例280 创建基本表 398

实例281 定义列的非空约束 399

实例282 在表中定义默认值约束 401

实例283 使用关键字作为表的列名 402

实例284 为联合主键设置外键 403

13.3 表的修改 405

实例285 为表增加列 405

实例286 删除表中列 407

实例287 修改列的结构 408

实例288 为指定列设定默认值 409

实例289 为现有表添加主键 410

实例290 为现有表添加外键 411

实例291 为现有表关系添加级联更新、级联删除 412

13.4 表的重命名和删除 413

实例292 重命名表 413

实例293 删除表 414

第14章 使用视图 417

14.1 创建和使用视图 418

实例294 使用视图过滤不想要的数据 418

实例295 使用视图与计算数据 419

实例296 使用视图重新格式化检索出的数据 421

实例297 使用视图简化复杂的连接 422

实例298 创建基于视图的视图 423

14.2 修改视图 424

实例299 修改视图 424

实例300 通过视图添加数据 426

实例301 通过视图修改数据 428

14.3 删除视图 429

实例302 删除视图 429

实例303 通过视图删除表数据 430

第15章 使用存储过程和函数 433

15.1 创建存储过程 434

实例304 使用CREATE PROCED URE语句创建存储过程 434

实例305 使用return语句从存储过程中返回值 436

实例306 创建带参数的存储过程 437

实例307 在存储过程中使用事务 439

实例308 创建带返回参数的存储过程 440

实例309 创建并添加扩展存储过程 442

实例310 创建加密存储过程 443

15.2 管理存储过程 444

实例311 执行存储过程 444

实例312 存储过程的重新编译 446

实例313 执行具有回传参数的存储过程 448

实例314 查看存储过程代码 449

实例315 修改存储过程 452

实例316 重新命名存储过程 454

实例317 删除存储过程 455

实例318 使用存储过程调用Com组件(sp_OACreate) 456

实例319 重命名数据库中列的名称 458

实例320 监控存储过程(sp_monitor) 459

实例321 自动执行存储过程 461

15.3 使用函数 462

实例322 创建标量函数 462

实例323 创建内嵌表值函数 463

实例324 删除函数 466

第16章 使用游标 469

实例325 声明游标 470

实例326 定义游标变量 473

实例327 打开游标 474

实例328 读取游标中数据 475

实例329 关闭游标 477

实例330 释放游标 478

实例331 获取游标行数 479

实例332 检测FETCH操作的状态 481

实例333 游标FOR循环 482

实例334 游标的嵌套 484

实例335 基于游标定位修改数据 486

实例336 基于游标定位删除数据 488

实例337 在存储过程中使用游标 489

实例338 参数化游标 491

实例339 利用sp_cursor_list查看服务及游标属性 492

实例340 利用sp_describe_cursor查看游标的全局特性 494

第17章 使用触发器 497

17.1 创建触发器 498

实例341 创建INSERT触发器 498

实例342 创建UPDATE触发器 501

实例343 创建DELETE触发器 502

实例344 创建具有触发条件的触发器 503

实例345 创建INSTEAD OF触发器 505

实例346 触发器的嵌套 506

实例347 创建递归触发器 508

17.2 修改触发器 510

实例348 修改触发器 510

实例349 重命名触发器 513

17.3 删除触发器 514

实例350 删除触发器 514

第18章 事务处理 517

18.1 事务概述 518

实例351 设置事务属性 518

18.2 事务应用 519

实例352 提交事务 520

实例353 回滚事务 521

实例354 保存事务 523

18.3 事务并发控制 525

实例355 表级锁定 525

实例356 设置事务隔离层并发控制 526

实例357 死锁的产生及预防 528

第19章 安全性控制 531

19.1 用户管理 532

实例358 使用sp_addlogin创建用户 532

实例359 使用sp_password修改用户密码 533

实例360 使用sp_helplogins查看用户登录信息 534

19.2 角色管理 535

实例361 使用sp_addrole创建数据库角色 535

实例362 使用sp_droprole删除数据库角色 536

实例363 使用GRANT语句授予角色权限 537

实例364 使用REVOKE语句取消角色创建数据表的权限 539

19.3 权限管理 540

实例365 使用GRANT语句授予角色WSERT和SELECT的权限 540

实例366 使用REVOKE语句取消角色对指定数据表的操作权限 542

实例367 SELECT权限控制 543

实例368 INSERT权限控制 544

实例369 UPDATE权限控制 545

实例370 DELETE权限控制 547

实例371 附加数据库给新用户已存在用户权限 548

第20章 SQL高级特性 551

20.1 数据完整性 552

实例372 创建并使用主键约束 552

实例373 创建并使用外键约束 554

实例374 唯一约束 556

实例375 检查约束 558

实例376 使用newid函数为uniqueidentifer类型的数据生成唯一标识 560

实例377 使用默认约束 561

实例378 删除约束 563

实例379 使用identity属性生成唯一标识 564

20.2 规则 566

实例380 创建规则 566

实例381 将规则与数据类型或列绑定在一起 567

实例382 解除规则 569

实例383 删除规则 570

实例384 创建默认值(Create Default) 571

实例385 绑定默认值(sp_bindefault) 572

实例386 解除默认值绑定(sp_unbingdefault) 573

20.3 索引 575

实例387 创建索引 575

实例388 创建简单的非簇索引 576

实例389 多字段非簇索引的创建 578

实例390 使用UNIQUE关键字创建唯一索引 579

实例391 使用CLUSTERDE关键字创建簇索引 580

实例392 索引的销毁 581

实例393 使用DBCC SHOWCONTIG语句对索引进行维护 583

实例394 使用DBCC INDEXDEFRAG语句对索引进行维护 584

实例395 重构索引 585

实例396 创建虚拟列索引 587

实例397 创建选择索引 588

实例398 创建全文索引 589

实例399 检索词(Contains谓语) 590

实例400 593

20.4 优化查询 594

实例401 避免使用or运算符 594

实例402 避免使用not运算符 596

实例403 避免使用distince语句 597

实例404 简化联接条件 598

实例405 在组合查询时使用All语句 600

第21章 数据库对象查询 603

21.1 SQL Server数据库对象查询 604

实例406 获取自定义存储过程、函数和视图文本 604

实例407 显示有关触发器信息 605

实例408 列出数据库的所有表 606

实例409 列出数据表中数据列的定义 607

实例410 获取表中不允许为空的字段 608

实例411 获取表中的索引列 609

实例412 获取表中的约束 610

实例413 查看硬盘分区 611

实例414 判断两个表是否相等 612

实例415 结束事件探查器进程 613

实例416 修改数据库名称 614

实例417 获取当前数据库中的所有用户表 615

实例418 获取某一个表的所有字段 616

实例419 查看与某一个表相关的视图、存储过程和函数 616

实例420 查看当前数据库中所有存储过程 617

实例421 查询用户创建的所有数据库 618

实例422 获取数据库大小 619

实例423 跨越服务器查询数据 620

实例424 查询多个部分列 621

21.2 Oracle数据库对象查询 622

实例425 获取数据字典视图 622

实例426 查看表空间的名称及大小 623

实例427 查看表空间物理文件的名称及大小 624

实例428 查看控制文件 625

实例429 查看日志文件 626

实例430 查看数据库对象 626

实例431 查看数据库的版本 627

第22章 数据库安全与维护 629

22.1 收缩数据库 630

实例432 压缩数据库 630

实例433 收缩数据和日志 631

22.2 备份数据库 632

实例434 备份数据库 632

实例435 备份事务日志 633

实例436 检查备份集 636

实例437 定时备份数据库 637

实例438 如何备份文件和文件组 638

22.3 恢复数据库 640

实例439 简单恢复数据库 640

实例440 恢复文件和文件组 641

实例441 应用事务日志备份 643

实例442 恢复到即时点 644

实例443 灾难性恢复数据库 645

22.4 其他操作 646

实例444 对数据库中数据进行加密 646

实例445 附加数据库 647

实例446 分离数据库 648

22.5 导入/导出数据 649

实例447 将SQL Server数据库中数据导出到数据文件 649

实例448 将Oracle数据库中数据导出到数据文本文件 651

实例449 从SQL Server数据库中将数据导出到Excel数据表中 652

实例450 从Excel中导入数据到SQL Server中 653

实例451 将SQL Server数据导出到Access中 655

实例452 从Access导出数据到SQL Server中 656

实例453 从SQL Server里查询Access数据 657

实例454 将从SQL Server中查询到的数据导成一个Excel文件 658

实例455 将Oracle数据库的数据导入到Excel中 659

22.6 SQL注入式攻击 661

实例456 防止SQL注入式攻击 661

实例457 从源程序预防SQL注入式攻击 662

第23章 嵌入式SQL 665

23.1 定义嵌入式SQL语句 666

实例458 在高级语言中定义嵌入式SQL 666

实例459 在C语言中使用SQL通信区 667

实例460 嵌入式SQL中的主变量 669

实例461 在嵌入式SQL中使用游标 671

23.2 编译并运行嵌入式SQL语句 673

实例462 预编译嵌入式SQL语句 673

实例463 执行嵌入式SQL语句 675

附录 SQL范例宝典实例适用范围 677