《轻松掌握:SQL》PDF下载

  • 购买积分:18 如何计算积分?
  • 作  者:(美)(R.K.斯蒂芬斯)Ryan K.Stephens,(美)(R.R.普莱夫)Ronald R.Plew著;郑利强等译
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2000
  • ISBN:7505359134
  • 页数:616 页
图书介绍:由美国MCP公司的子公司SamsPublishing授权出版:本书从基本概念、数据操作、系统管理和流行产品等4个方面,系统地介绍了结构化查询语言SQL的各个主要组成部分,书中的实例和练习有助于读者理解和掌握SQL语言,提高在实际商业环境中应用和开发关系数据库的能力。

本章概要 1

第一篇 1

第1章 开始学习SQL语言 2

1.1 SQL语言历史简介 2

1.2数据库历史简介 2

1.2.1 Codd博士关于数据库模型的12条准则 3

1.3数据库结构设计 6

1.3.1当今的数据库概述 6

1.4.2 SQL和客户/服务器应用的开发 7

1.5 SQL语言概述 7

1.4跨产品语言 7

1.4.1早期的实现 7

1.6几种较流行的SQL语言的实现 8

1.6.1 Microsoft Access 8

1.6.2 Personal Orade 8 8

1.6.3 Microsoft Query 9

1.7开放数据库连接(ODBC) 10

1.8应用程序编程中的SQL语言 11

1.9小结 12

1.10问与答 12

1.11工作室 12

1.11.1测验 13

1.11.2练习 13

第2章 查询简介 14

2.1 SQL语言的背景 14

2.2一般的句法格式 14

2.3用SELECT及FROM建立数据检索块 15

2.4示例 16

2.5第一个查询 17

2.5.1结束一个SQL语句 17

2.5.2改变列的顺序 17

2.5.3选择特定的列 18

2.5.4从不同表中选择数据 19

2.6使用区别(Distinction)查询 19

2.9工作室 21

2.9.1测验 21

2.8问与答 21

2.7小结 21

2.9.2练习 22

第3章 表达式、条件和操作符 23

3.1表达式 23

3.2条件 24

3.2.1 WHERE子句 24

3.3操作符 25

3.3.1算术操作符 25

3.3.2比较操作符 32

3.3.3字符操作符 38

3.3.4逻辑操作符 42

3.3.5集合操作符 45

3.3.6其他操作符:IN和EBTWEEN 48

3.4小结 50

3.5问与答 50

3.6工作室 50

3.6.1测验 51

3.6.2练习 51

4.1.1 COUNT函数 52

第4章 利用内置函数生成数据 52

4.1聚集函数 52

4.1.2 SUM函数 53

4.1.3 AVG函数 55

4.1.4 MAX函数 55

4.1.5 MIN函数 56

4.1.6 VARIANCE函数 57

4.1.7 STDDEV函数 57

4.2日期和时间函数 58

4.2.1 ADD_MONTHS函数 59

4.2.2 LABT_DAY函数 60

4.2.3 MONTHS_BETWEEN函数 61

4.2.4 NEW_TIME函数 62

4.2.5 NEXT_DAY函数 63

4.2.6 SYSDATE函数 63

4.3算术函数 64

4.3.1 ABS函数 65

4.3.2 CELL和FLOOR函数 65

4.3.3 COS、COSH、SIN、SINH、TAN和TANH函数 66

4.3.5 LN和LOG函数 68

4.3.4 EXP函数 68

4.3.6 MOD函数 69

4.3.7 POWER函数 69

4.3.8 SIGN函数 70

4.3.9 SQRT函数 71

4.4字符函数 71

4.4.1 CHR函数 72

4.4.2 CONCAT函数 72

4.4.4 LOWER和UPPER函数 73

4.4.3 INITCAP函数 73

4.4.5 LPAD和RPAD函数 74

4.4.6 LTRIM和RTRIM函数 75

4.4.7 REPLACE函数 76

4.4.8 SUBSTR函数 78

4.4.9 TRANSLATE函数 80

4.4.10 INSTR函数 80

4.4.11 LENGTH函数 81

4.5转换函数 81

4.5.2 TO_NUMBER函数 82

4.5.1 TO_CHAR函数 82

4.6其他函数 83

4.6.1 GREATEST和LEAST函数 83

4.6.2 USER函数 83

4.7小结 84

4.8问与答 84

4.9工作室 84

4.9.1测验 84

4.9.2练习 85

第5章 SQL查询中的子句 86

5.1用WHERE子句指定查询条件 87

5.2 STARTING WITH子句 89

5.3 ORDER BY子句——把混乱变为有序 90

5.4 GROUP BY子句 95

5.5 HAVING子句 100

5.6复合子句 104

5.6.1大结局 107

5.7小结 109

5.9.2练习 110

5.9.1测验 110

5.9工作室 110

5.8问与答 110

第6章 连接表 111

6.1在单个SELECT语句中的多重表 111

6.1.1交叉连接表 112

6.1.2寻找正确的列 116

6.2相等连接 116

6.3不等连接 121

6.4外部连接和内部连接 122

6.5将表与自己连接:自连接 125

6.6小结 127

6.7问与答 128

6.8工作室 128

6.8.1测验 128

6.8.2练习 129

第7章 子查询:嵌入式SELECT语句 130

7.1建立一个子查询 130

7.2在子查询中使用聚集函数 134

7.3嵌套子查询 136

7.4参照外部表的相关子查询 139

7.5使用EXISTS、ANY和ALL 142

7.6小结 147

7.7问与答 147

7.8工作室 148

7.8.1测验 148

7.8.2练习 148

第一篇回顾 150

本篇概要 151

第二篇 151

第8章 数据库规范化 152

8.1规范化数据库 152

8.1.1原始数据库 152

8.1.2数据库逻辑设计 152

8.2范式 153

8.2.1第一范式 154

8.2.2第二范式 154

8.2.3第三范式 155

8.3.1参照完整性 156

8.3数据库规范化操作 156

8.3.2数据库规范化的优点 157

8.3.3数据库规范化的缺点 157

8.3.4将数据库非规范化 158

8.4小结 158

8.5问与答 158

8.6.1测验 159

8.6.2练习 159

8.6工作室 159

第9章 创建和维护表 161

9.1 CREATE DATABASE语句 161

9.1.1 CREATE DATABASE选项 162

9.1.2数据库设计 162

9.1.3创建数据字典 163

9.1.4创建关键字段 163

9.2 CREATE TABLE语句 165

9.2.1表名 165

9.2.3字段的数据类型 166

9.2.2字段名 166

9.2.4表的存储和尺寸 169

9.2.5由一个现存的表创建表 170

9.3 ALTER TABLE语句 171

9.4 OROP TABLE语句 172

9.5 DROP DATABASE语句 173

9.6小结 173

9.7问与答 174

9.8.2练习 175

9.8.1测验 175

9.8工作室 175

第10章 数据完整性控制 176

10.1约束简介 176

10.1.1数据完整性 176

10.1.2为什么使用约束 176

10.2约束的种类 177

10.2.1非空约束(NOT NULL) 177

10.2.2主键约束 178

10.2.3唯一约束 179

10.2.4外键约束 180

10.2.5检验约束 181

10.3约束管理 182

10.3.1约束的正确次序 182

10.3.2创建约束的正确方法 183

10.3.3 Oracle参照完整性报告实例 183

10.4小结 186

10.6.2练习 187

10.6.1测验 187

10.6工作室 187

10.5问与答 187

第11章 操作数据 189

11.1数据操作语句简介 189

11.2用INSERT语句输入数据 189

11.2.1用INSERT…VALUSE语句输入一条记录 190

11.2.2插入NULL值(空值) 191

11.2.3插入唯一值 192

11.2.4用INSERT…SELECT语句输入多条记录 193

11.3用UPDATE语句更新现有数据 196

11.4用DELETE语句删除信息 198

11.5从外部数据源输入和输出数据 202

11.5.1 Microsoft Access 202

11.5.2 Microsoft SQL Server 203

11.5.3 Personal Oracle8 204

11.6小结 204

11.7问与答 204

11.8工作室 205

11.8.1测验 205

11.8.2练习 206

第12章 事务控制 207

12.1事务控制 207

12.1.1银行应用 207

12.2开始一个事务 209

12.3结束一个事务 211

12.4撤销事务 212

12.5使用事务保存点(SAVEPOINT) 215

12.6小结 217

12.8.1测验 218

12.8.2练习 218

12.8工作室 218

12.7问与答 218

第13章 SQL语言中的日期与时间 220

13.1如何存储日期与时间型数据 220

13.1.1 ANSI标准的日期与时间型数据 220

13.1.2 DATETIME元素 221

13.1.3特定数据类型的实现 221

13.2日期函数 222

13.2.1当前日期 222

13.2.2时区 223

13.2.3在日期上增加时间 224

13.2.4日期相减 225

13.2.5比较日期和时间段 226

13.2.6其他的日期函数 227

13.3日期转换 227

13.3.1日期描述 228

13.3.2转换日期为字符串 230

13.3.3转换字符串为日期 230

13.4小结 231

13.6.2练习 232

13.6.1测验 232

13.5问与答 232

13.6工作室 232

第14章 创建视图 234

14.1视图简介 234

14.2使用视图 234

14.2.1考察简单视图 236

14.2.2更改列名 238

14.2.3查看SQL视图处理过程 239

14.2.5在视图中修改数据 243

14.2.4使用SELECT语句的限制 243

14.2.6与使用视图修改数据有关的问题 246

14.2.7视图的一般应用 246

14.2.8用DROP VIEW语句删除视图 249

14.3小结 250

14.4问与答 250

14.5工作室 251

14.5.1测验 251

14.5.2练习 251

第二篇回顾 252

第三篇 253

本篇概要 253

第15章 在表上创建索引以提高数据库性能 254

15.1使用索引 254

15.1.1索引是什么 254

15.1.2索引技巧 259

15.1.3在多个字段上建立索引 260

15.1.4使用带有UNIQUE关键字的CREATE INDEX语句 261

15.1.5索引与链接 262

15.1.6使用聚族(cluster) 263

15.2小结 264

15.3问与答 264

15.4工作室 265

15.4.1测验 265

15.4.2练习 265

第16章 优化SQL语句以提高性能 267

16.1提高SQL语句的可读性 267

16.2避免扫描整个表 268

16.4查询中各成分的安排 269

16.3增加一个新索引 269

16.4.1过程 271

16.4.2避免使用OR 271

16.5联机分析处理(OLAP)与联机事务处理(OLTP) 272

16.5.1 OLTP调整 273

16.5.2 OLAP调整 273

16.6成批装入与事务处理 273

16.7通过删除索引优化数据装载 275

16.8经常提交数据——保证系统正常运行的关键 275

16.9在动态环境中重建表和索引 276

16.10调整数据库 278

16.11影响数据库性能的因素 280

16.12内置调整工具 280

16.13小结 281

16.14问与答 281

16.15工作室 282

16.15.1测验 282

16.15.2练习 282

第17章 数据库安全性 284

17.1数据库管理员须知 284

17.3如何确保数据库的安全性 285

17.2流行的数据库产品及其安全性 285

17.4 Personal Oracle8和安全性 286

17.4.1创建用户 286

17.4.2创建角色(Role) 287

17.4.3用户特权 288

17.4.4用户访问视图 289

17.4.5用视图实现安全性 294

17.4.6使用同义词代替视图 295

17.4.7使用WITH GRANT OPTION子句 297

17.5小结 298

17.6问与答 298

17.7工作室 299

17.7.1测验 299

17.7.2练习 299

第18章 数据字典 300

18.1数据字典介绍 300

18.2数据字典的用户 300

18.3.1 Oracle的数据字典 301

18.3.2 Sybase的数据字典 301

18.3数据字典的内容 301

18.4 Oracle数据字典的剖析 302

18.4.1用户视图 302

18.4.2系统DBA视图 309

18.4.3动态性能视图 318

18.4.4 PLAN表 320

18.5小结 320

18.7.2练习 321

18.7.1测验 321

18.7工作室 321

18.6问与答 321

第19章 存储过程、触发器和嵌入式SQL语言 322

19.1创建临时表 322

19.2使用游标 327

19.2.1创建游标 327

19.2.2打开游标 328

19.2.3滚动游标 328

19.2.4测试游标的状态 329

19.2.5关闭游标 330

19.3创建并使用存储过程 331

19.2.6游标的使用域 331

19.3.1使用存储过程参数 333

19.3.2删除存储过程 334

19.3.3嵌套存储过程 335

19.4设计和使用触发器 336

19.4.1触发器和事务 337

19.4.2使用触发器的限制 339

19.4.3嵌套触发器 339

19.5在执行之前测试SELECT语句 339

19.6.1静态和动态SQL语言 340

19.6使用嵌入式SQL语言 340

19.7使用SQL编程 341

19.8小结 342

19.9问与答 342

19.10工作室 343

19.10.1测验 343

19.10.2练习 343

第20章 SQL语言新标准——SQL3中的新对象 344

20.1 CREATE ROLE语句探讨 344

20.2创建触发器 346

20.3使用CREATE TYPE语句 348

20.4小结 351

20.5问与答 351

20.6工作室 352

20.6.1测验 352

20.6.2练习 352

第21章 使用SQL语言生成SQL语句 353

21.1使用SQL语言生成SQL语句的目的 353

21.2.1 SET ECHO ON/OFF 354

21.2几个SQL* Plus命令 354

21.2.2 SET FEEDBACK ON/OFF 355

21.2.3 SET HEADING ON/OFF 355

21.2.4 SPOOL FILENAME/OFF 355

21.2.5 START FILENAME 355

21.2.6 ED FILENAME 355

21.3统计所有表中的行数 356

21.4为多个用户授予系统权限 360

21.5将表的权限授予其他用户 362

21.6为装入数据而废除对表的结束 364

21.7在单个区域内创建大量的同义词 365

21.8在表上创建视图 368

21.9截断某一用户的所有表 370

21.10使用SQL语句生成Shell 370

21.11对表和索引进行逆向工程 372

21.12小结 372

21.14工作室 373

21.14.1测验 373

21.13问与答 373

21.14.2练习 374

第三篇回顾 375

附加篇 377

本篇概要 377

第22章 SQL语句的调试 378

22.1常见错误 378

22.1.1表或视图不存在 378

22.1.2无效的用户名或口令 379

22.1.3没有FROM关键字 379

22.1.4不允许使用分组函数 380

22.1.5无效的列名 381

22.1.6缺少关键字 381

22.1.7缺少左括号 382

22.1.8缺少右括号 382

22.1.9缺少逗号 383

22.1.10列名定义不明确 383

22.1.11 SQL命令没有正常结束 384

22.1.12缺少表达式 384

22.1.14缺少数据值 385

22.1.13函数缺少参数 385

22.1.15完整性约束冲突——双亲主键没有找到 386

22.1.16 Oracle不能使用 386

22.1.17向列中插入的数据太大 387

22.1.18远程数据库服务器不能识别连接描述符中的系统ID号 387

22.1.19没有授权的权限 387

22.1.20语句中的无效字符——Escape字符 388

22.1.21不能创建操作系统文件 388

22.2常见的逻辑错误 388

22.2.1在SQL语句中使用保留字 388

22.2.2在多个选择列上使用DISTINCT命令 389

22.2.3删除不合适的表 390

22.2.4在多模式的数据库中公共同义词的使用 390

22.2.5可怕的笛卡尔乘积 390

22.2.6数据输入质量不高 391

22.2.7采用不合适的文件系统结构 391

22.2.8对于很大的表采用缺省的存储参数 391

22.2.9将数据库对象存储到系统表空间中 392

22.4小结 393

22.3.1在数据库中查找重复的记录 393

22.3防止数据出现麻烦 393

22.2.11没有规划好系统资源的使用 393

22.2.10大量的备份文件没有压缩 393

22.5问与答 394

22.6工作室 394

22.6.1测验 394

22.6.2练习 395

第23章 创建复合查询 396

23.1本章使用的表 396

23.2.1根据生日计算年龄 399

23.2复合查询的例子 399

23.2.2将一个DAY函数分解成小时、分和秒 400

23.2.3将字节转换成KB和MB 401

23.2.4数据库中段的报表 402

23.2.5 DML中的子查询 402

23.2.6格式化日期 403

23.2.7包含取最大值的子查询 404

23.2.8多个子查询 405

23.2.9使用破折号和括号格式化数值型数据 405

23.2.11在一个列中查找下一个最大的数值 406

23.2.10将数值型数据按给定的百分比递增 406

23.2.12空值(NULL)处理 408

23.3建立复合查询的技巧 410

23.4小结 411

23.5问与答 411

23.6工作室 411

23.6.1测试 411

23.6.2练习 412

24.2 SQL*Plus缓冲区 413

第24章 用Oracle的SQL*Plus生成满意的报表 413

24.1 SQL*Plus介绍 413

24.3用DESCRIBE命令查看表结构 417

24.4用SHOW命令显示系统设置 418

24.5用文件命令操作文件 420

24.5.1 SAVE、GET和EDIT命令 420

24.5.2运行SQL文件 420

24.5.3存储查询结果 422

24.6用SET命令设置工作环境 423

24.7使用LOGIN SQL文件 426

24.8用CLEAR命令清除SQL*Plus的设置 427

24.9格式化输出结果 428

24.9.1 TTITLE和BTITLE命令 428

24.9.2格式化的列(列、标题、格式) 429

24.10创建报表和分组合计 430

24.10.1 BREAK ON 430

24.10.2 COMPUTE 431

24.11.1替代变量( ) 434

24.11在SQL*Plus中使用变量 434

24.11.2 DEFINE 435

24.11.3 ACCEPT 435

24.11.4 NEW_VALUE 437

24.12使用DUAL表 438

24.13 DECODE函数 439

24.14日期转换 442

24.15执行一系列SQL文件 444

24.16在SQL脚本文件中加注释 445

24.17高级报表 446

24.18小结 447

24.19问与答 447

24.20工作室 448

24.20.1测验 448

24.20.2练习 448

第25章 Oracle的PL/SQL语言简介 449

25.1 PL/SQL介绍 449

25.2 PL/SQL中的数据类型 449

25.2.3二进制数据类型 450

25.2.2数值数据类型 450

25.2.1字符串数据类型 450

25.2.4日期数据类型 451

25.2.5布尔型 451

25.2.6行号(ROWID) 451

25.3 PL/SQL程序块结构 451

25.4 DECLARE部分 452

25.4.1变量赋值 452

25.4.2常量赋值 452

25.4.5 %ROWTYPE属性 453

25.4.3游标的定义 453

25.4.4 %TYPE属性 453

25.4.6 %ROWCOUNT属性 454

25.5 PROCEDURE部分 454

25.5.1 BEGIN…END语句 454

25.5.2游标控制命令 455

25.5.3条件语句 456

25.6.1异常事件的触发 459

25.6.2异常事件处理程序的执行 459

25.6 EXCEPTION部分 459

25.6.3插入注解 460

25.6.4 PL/SQL程序块的执行 460

25.6.5为用户显示输出结果 461

25.7 PL/SQL中的事务控制 461

25.8 PL/SQL程序的完整介绍 462

25.8.1样表和数据 462

25.8.2 PL/SQL程序块实例 463

25.8.3另一个实例 466

25.9存储过程、程序包和触发器 469

25.9.1存储过程样本 470

25.9.2程序包样本 471

25.9.3触发器样本 471

25.10小结 473

25.11问与答 474

25.12工作室 474

25.12.1测验 474

25.12.2练习 475

26.2对ANSI SQL语言的扩充 476

26.2.1 Transact-SQL面向哪些用户 476

第26章 Transact-SQL介绍 476

26.1 Transact-SQL概述 476

26.2.2 Transact-SQL的基本构成 477

26.3数据类型 477

26.3.1字符串类型 477

26.3.2数值数据类型 477

26.3.5二进制串 478

26.3.6位(bit)——一种逻辑数据类型 478

26.3.4货币数据类型 478

26.3.3日期数据类型 478

26.4使用Transact-SQL访问数据库 479

26.4.1 BASEBALL数据库 479

26.4.2局部变量的声明 481

26.4.3全局变量的声明 481

26.4.4变量的使用 483

26.4.5 PRINT命令 484

26.5建立程序流程控制 484

26.5.1 BEGIN和END语句 484

26.5.2 IF…ELSE语句 485

26.5.4测试查询结果 487

26.5.3 EXISTS条件 487

26.5.5 WHILE循环 488

26.5.6 BREAK命令 488

26.5.7 CONTINUE命令 489

26.5.8使用WHILE循环滚动访问一个表 489

26.6 Transact-SQL通配符 490

26.7使用COMPUTE命令创建合计报表 491

26.8日期转换 491

26.9 SQL Server的诊断工具——SET命令 492

26.11问与答 493

26.10小结 493

26.12工作室 494

16.12.1测验 494

26.12.2练习 494

第27章 Visual C++和Delphi中的动态SQL语言 495

27.1几个应用程序开发工具简介 495

27.1.1 ODBC 495

27.1.2 Personal Oracle8 495

27.1.3 InterBase SQL 495

27.1.5 Delphi 496

27.1.4 Visual C++ 496

27.3创建数据库 497

27.2开始运行Oracle和InterBase 497

27.4 用Microsoft Query执行连接 502

27.5使用Visual C++和SQL 505

27.6使用Delphi和SQL 511

27.9工作室 517

27.9.2练习 517

27.9.1测验 517

27.8问与答 517

27.7小结 517

第28章 MySQL介绍 518

28.1 MySQL管理 518

28.1.1 MySQL安装 518

28.1.2启动和停止MySQL 519

28.1.3 MySQL的初始权限 519

28.2 MySQL客户端程序 520

28.2.1连接数据库 520

28.2.2命令行选项 520

28.2.3输入MySQL客户端命令 521

28.2.4执行命令的历史记录 523

28.2.5批处理模式 523

28.2.6 SHOW命令 524

28.3 MySQL实用程序 524

28.4小结 525

28.5问与答 525

28.6工作室 525

28.6.1测验 525

28.6.2练习 526

附加篇回顾 527

附录 530

附录A 答案 530

附录B 创建表的实例代码 571

附录C 生成Populate表中数据的代码 575

附录D 第27章的C++程序源代码 586

附录E 第27章的Delphi程序源代码 601

附录F 常用SQL命令术语 603

附录G ASCII码表 609

附录H 相关资源 614