《SQL编程基础 原书第3版》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:(美)JOHNJ.PATRICK著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2009
  • ISBN:9787111265412
  • 页数:491 页
图书介绍:本书根据John J. Patrick在美国加州大学伯克利分校讲授的SQL课程编写,详细介绍与SQL相关的概念和技术。书中的每一个概念都用了一个SQL范例进行说明。在大多数情况下都设置了一个任务,然后给出了完成这项任务的SQL代码。本书还展示了数据的原表和结果表。全书共有200多个例子。其中的每一部分都是独立的。

第1章 在表中存储信息 1

简介 1

1-1 什么是SQL 1

1-2 什么是关系数据库?为什么要使用它 2

1-3 为什么学习SQL 3

1-4 本书内容简介 5

表的组成部分 5

1-5 数据存储于表中 5

1-6 一行表示一个对象及其相关信息 6

1-7 一列表示一类信息 7

1-8 单元格是表的最小部分 8

1-9 每个单元格应该只表示一样东西 9

1-10 使用主键列标识每一个行 9

1-11 大部分表都很“瘦长” 10

表的示例 11

1-12 Oracle和Access中表的示例 11

1-13 1_employees表的一些设计决策 13

1-14 Lunches数据库 14

小结 18

第2章 从表中获取信息 19

select语句 19

2-1 目标:从表中获取几个列和行 19

2-2 select语句概述 19

select子句 21

2-3 select子句概述 21

2-4 使用select子句获取若干列 22

2-5 使用select子句获取所有的列 24

2-6 使用select语句获取某个列中的不同值 26

2-7 使用select子句获得几个列中的不同值 29

where子句 30

2-8 where子句概览 30

2-9 在where子句中使用等于条件 31

2-10 在where子句中使用小于条件 34

2-11 在where子句中使用不等于条件 35

2-12 在where子句中使用in条件 37

2-13 在where子句中使用between条件 38

2-14 在where子句中使用like条件 40

2-15 在where子句中使用is null条件 42

order by子句 44

2-16 order by子句概述 44

2-17 通过一列升序排列行 45

2-18 通过若干列升序排列行 46

2-19 根据若干列以各种顺序排序各行 47

2-20 整个过程 48

小结 49

第3章 where子句中的复合条件 51

where子句中的复合条件 51

3-1 在where子句中使用复合条件 51

3-2 将not与in、between、like和is null条件一起使用 53

3-3 where子句中复杂条件的标准形式 55

3-4 一个常见错误 56

常数值 58

3-5 在select子句中使用常数值 58

3-6 使用常数表 60

标点符号问题 62

3-7 现在需要知道的标点符号 62

3-8 标点符号参考 65

区分大小写 70

3-9 Oracle中的区分大小写 70

3-10 关于SQL中区分大小写的争论 73

3-11 有一个选择 73

3-12 在Oracle SQL Command Line环境中关闭区分大小写 73

3-13 Access中区分大小写 74

三值逻辑 75

3-14 使用三值逻辑的SQL 75

错误消息 77

3-15 错误消息常常是错的 77

练习 78

3-16 练习1 78

3-17 练习2 80

3-18 练习3 81

小结 83

第4章 保存结果 84

在新表或者视图中保存结果 84

4-1 从select语句的结果中创建一个新表 84

4-2 从select语句的结果创建一个新的视图 87

4-3 表和视图的相似之处 89

4-4 表和视图的不同之处 89

4-5 删除表 90

4-6 删除视图 90

4-7 一个视图可以建立在另一个视图之上 91

4-8 预防性删除 93

修改表中的数据 95

4-9 添加新行到表中 95

4-10 添加若干新行到一个表中 97

4-11 更改已经存在于表的行中的数据 99

4-12 从表中删除行 100

使用GUI修改表中的数据 101

4-13 使用Oracle GUI来修改表中的数据 102

4-14 使用Access GUI来修改表中的数据 104

修改表中数据的限制 106

4-15 使用insert、update和delete的约束条件 106

4-16 安全限制 107

小结 107

第5章 数据字典和其他Oracle主题 109

提交、回滚和事务 109

5-1 commit和rollback命令 109

5-2 Autocommit选项 109

5-3 事务 110

通过视图修改数据 113

5-4 通过视图更改数据 113

5-5 通过视图更改数据的例子 114

5-6 使用With Check Option的视图 120

Oracle中的SQL Commands页面 122

5-7 SQL Commands页面概览 122

5-8 Autocommit选项 124

5-9 Explain选项 124

使用Oracle数据字典:第一部分 124

5-10 数据字典概述 125

5-11 如何查找所有表的名字 126

5-12 如何查找所有视图的名字 127

5-13 如何查找定义视图的select语句 128

5-14 如何查找表或者视图中的列名 128

5-15 如何查找表的主键 130

小结 132

第6章 创建自己的表 133

创建表 133

6-1 create table命令 133

6-2 Oracle和Access中的数据类型 134

6-3 文本数据类型 137

6-4 数字数据类型 140

6-5 日期/时间数据类型 140

6-6 其他数据类型 141

6-7 将数据放入新表中 141

6-8 在Oracle中创建l_employees表 142

更改表 144

6-9 为表添加主键 144

6-10 更改表的主键 145

6-11 向表中添加一个新列 146

6-12 扩展列的长度 147

6-13 从表中删除一个列 148

6-14 对表进行其他更改 148

带有重复行的表 150

6-15 重复行的问题 150

6-16 如何删除重复行 152

6-17 如何区别重复行 153

小结 155

第7章 格式、序列和索引 156

格式 156

7-1 日期格式 156

7-2 显示已经格式化的日期 158

7-3 输入已格式化的日期 159

7-4 Oracle中的其他格式 161

7-5 Access中的格式 161

序列 163

7-6 在Oracle中创建序列 163

7-7 在Oracle中使用序列 164

7-8 在Access中使用序列 165

索引 167

7-9 创建索引 167

7-10 优化器 168

7-11 索引如何工作的示例 168

在数据字典中查找更多的信息:第二部分 169

7-12 如何查找有关列的数据类型的信息 169

7-13 如何查找有关序列的信息 171

7-14 如何找到有关索引的信息 172

7-15 如何找到所有数据库对象的相关信息 174

7-16 如何使用Oracle中的数据字典表 175

7-17 如何使用数据字典列的索引 176

练习 176

7-18 创建一个想要庆祝的节日的表 176

小结 178

第8章 数据完整性 179

表上的约束条件 179

8-1 约束条件使数据保持一致 179

8-2 check约束条件 179

8-3 unique约束条件 180

8-4 not null约束条件 181

8-5 primary key约束条件 182

8-6 对字段数据类型和长度的限制 183

参照完整性 183

8-7 参照完整性的概念 183

8-8 参照完整性的示例 184

8-9 对RI保护的数据表使用insert和update 185

8-10 通过RI允许对数据表使用insert和update 186

8-11 RI防止对查找表使用update和delete 187

8-12 如何从查找表中删除编码 187

8-13 如何在查找表中更改编码 189

8-14 RI作为表之间的关系 190

8-15 在Access GUI中建立RI 190

RI的delete选项和update选项 192

8-16 删除和更新查找表的三个选项 192

8-17 删除规则:set null 193

8-18 删除规则:cascade 194

8-19 更新规则:cascade 196

验证参照完整性 197

8-20 主键的两种含义 197

8-21 使用两个或者更多的列作为主键 199

8-22 查找表和数据表可以是同一个表 200

如何在create table语句中编写约束条件 201

8-23 约束条件常常在create table语句中编写 201

小结 203

第9章 行函数 204

行函数简介 204

9-1 直接从初始表中获得数据 204

9-2 什么是行函数 204

9-3 select子句中行函数的例子 207

9-4 select语句的所有子句中使用行函数的例子 208

9-5 定义行函数作为第一步 209

数字函数 211

9-6 数字函数 211

9-7 如何测试行函数 212

9-8 测试数字行函数的另一种方法 213

文本函数 215

9-9 文本函数 215

9-10 组合名和姓 218

9-11 分隔名和姓 220

9-12 设计电话号码的格式 221

日期函数 223

9-13 日期函数 223

9-14 日期函数的一个例子 226

9-15 从日期中删除时间 227

小结 229

第10章 使用行函数 230

特殊行函数 230

10-1 其他行函数 230

10-2 使用函数识别用户和日期 231

10-3 使用函数把null改为其他值 232

10-4 使用函数更改数据类型 234

使用行函数的文档 236

10-5 使用Oracle文档 236

10-6 使用Access文档 237

10-7 使用Access Expression Builder查看行函数 237

创建数字和日期模式 239

10-8 创建一个简单的数字模式 239

10-9 创建一个复杂的数字模式 241

10-10 列出一个星期的所有星期数 242

10-11 创建一个工作日日历 244

10-12 如何计算从出生到现在的天数 247

10-13 如何查找出生后满10000天的日期 248

10-14 给Oracle和Access中的报表编行号 249

10-15 可选内容:解代数方程的一种简单方法 250

小结 253

第11章 汇总数据 254

列函数简介 254

11-1 汇总一个列中的所有数据 254

11-2 列函数列表 254

最大值和最小值 256

11-3 找出最大值和最小值 256

11-4 列函数和where子句一起使用 258

11-5 找出拥有最大值和最小值的行 259

计数 261

11-6 对行和数据计数 261

11-7 零计数:第一部分 262

11-8 对列中相异值计数 263

11-9 计算两个或多个列中相异值的数目 265

求和与平均 267

11-10 求和函数与平均函数 267

11-11 加法存在的问题以及如何解决 268

其他主题 272

11-12 并不总将null更改为零 272

11-13 计算列中null的数目 273

11-14 对相异值计数 274

小结 276

第12章 控制汇总级别 277

将表划分为行的组并汇总每个组 277

12-1 列中数据组的汇总 277

12-2 group by子句 278

12-3 由两个或更多列形成的组 280

12-4 有多个分组列时的null组 282

12-5 在同一条select语句中,已汇总的数据不能与没有汇总的数据混在一起 284

12-6 解决方案1:将更多的列添加到group by子句中 286

12-7 解决方案2:将查询划分为两条单独的select语句 287

12-8 如何创建有多个小计和一个总计的报表 289

12-9 零计数:第二部分 289

12-10 零计数:第三部分 290

删除某些已汇总的数据 292

12-11 having子句 292

12-12 比较having子句与where子句 293

12-13 在一个表上使用select语句的全过程 294

12-14 having子句没有增加select语句的功能 294

12-15 使用where子句来删除原始数据 296

12-16 如何对一个列函数应用另一个列函数并且绕开其他限制 297

小结 299

第13章 内连接 300

连接简介 300

13-1 一个查询可以使用几个表中的数据 300

13-2 最佳方法是一次连接两个表 301

两个表的内连接 301

13-3 一对一关系 302

13-4 多对一关系 305

13-5 一对多关系 306

13-6 多对多关系 307

13-7 删除不匹配的行 308

13-8 删除匹配列中带有null的行 309

13-9 编写SQL语句进行内连接的5种方式 310

连接条件的变体 312

13-10 用两个或多个匹配列连接 312

13-11 用between匹配一系列值的连接 313

13-12 使用大于条件的连接 314

13-13 用行函数进行连接 316

13-14 在from子句中编写连接条件 316

连接应用 318

13-15 查找表 318

13-16 组合连接和数据的选取 320

13-17 联合使用连接 322

13-18 如何从数据字典中找出主键列 323

13-19 用内连接组合三个或更多的表 324

小结 325

第14章 外连接 326

外连接简介 326

14-1 外连接派生于内连接 326

14-2 外连接的3种类型 327

14-3 左外连接 328

14-4 右外连接 330

14-5 全外连接 331

14-6 union简介 333

14-7 带有匹配列的两个表的union的例子 334

外连接的应用 336

14-8 零计数:第四部分 336

14-9 组合外连接与数据选取 337

14-10 按排序顺序的全外连接 339

14-11 找出模式中的缺陷 341

14-12 用两列或多列进行比较 342

14-13 比较两个不同的全外连接 344

14-14 问题:左外连接和右外连接可能很难处理 346

小结 348

第15章 union和union all 350

union的基础知识 350

15-1 union与连接之间的区别 350

15-2 union和union all的区别 352

15-3 union中的select语句 353

15-4 union中的order by子句 354

15-5 创建一个包含union的表或者视图 357

15-6 union中的自动数据类型转换 358

非常规的union 361

15-7 不同数据类型表的union 361

15-8 不同列数的两个表的union 362

union的应用 364

15-9 确定两个表是否相同 364

15-10 在union中使用直接量确定数据的来源 365

15-11 给异常、警告和错误的标志附加消息 367

15-12 将数据从一个列中分到两个不同的列中 368

15-13 将两个函数应用到数据的不同部分 369

15-14 三个表或更多表的union 370

Oracle中的交集和差集 371

15-15 交集 371

15-16 差集 372

小结 374

第16章 交叉连接和自连接 375

交叉连接 375

16-1 交叉连接的定义 375

16-2 交叉连接重要的原因 376

16-3 内连接源自交叉连接 376

16-4 内连接的属性 379

16-5 连接条件中的错误可以显示为一个交叉连接 379

16-6 使用交叉连接列出所有可能的组合 381

16-7 三维或多维时的其他布局 382

16-8 避免对大型表使用交叉连接 383

自连接 384

16-9 表为什么与自己连接 384

16-10 自连接的例子 385

16-11 处理事件序列 387

16-12 生成从0到999的数字 389

Access中的CrossTab查询 391

16-13 当有两维时的交叉表查询 391

16-14 增加到四维的CrossTab查询 395

16-15 更多维的CrossTab查询 396

16-16 显示谁参加每次午餐的CrossTab 399

16-17 显示每次午餐的食物 402

Oracle中的CrossTab查询 405

16-18 Oracle中的CrossTab查询——第一部分 405

16-19 Oracle中的CrossTab查询——第二部分 406

小结 408

第17章 在产品数据库中组合表 409

连接三个或者更多表的方法 409

17-1 使用一系列步骤连接几个表 409

17-2 在where子句中一次连接几个表 411

17-3 在from子句中一次连接几个表 412

丢失信息 413

17-4 小心使用内连接 413

17-5 小心使用左外连接和右外连接 413

17-6 全外连接保留了所有的信息 413

17-7 几个表的全外连接 413

注意计算机的效率 415

17-8 监视查询 415

17-9 使用索引 415

17-10 尽早在过程中选择想要的数据 416

17-11 使用表保存总结数据 416

17-12 使用几种方法编写SQL 416

标准化连接表的方式 416

17-13 连接是数据库设计的一部分 416

17-14 视图可以标准化表的连接方式 417

17-15 临时报表 420

小结 420

第18章 if-then-else、参数查询和子查询 421

if-then-else逻辑 421

18-1 Oracle中的case函数和decode函数 421

18-2 Access中的Immediate If(iif)函数 424

18-3 给行附加消息 426

18-4 将一个列的数据划分为两个不同的列 427

18-5 对数据的不同部分应用两个函数 429

参数查询 430

18-6 Oracle中的参数查询 431

18-7 Oracle中多次使用参数 433

18-8 在Oracle中定义参数的更多方法 434

18-9 Access中的参数查询 436

18-10 Access中带有两个参数的查询 437

18-11 Access中的参数限制 437

子查询 438

18-12 子查询简介 438

18-13 产生一系列值的子查询 436

18-14 产生一个值的子查询 441

18-15 存在null值时避免使用not in 442

子查询的应用 443

18-16 用于update命令中的子查询 444

18-17 找出两个表之间的不同之处 445

18-18 使用最新数据 446

子查询的原有特性 446

18-19 相关子查询 447

18-20 使用exists的子查询 448

18-21 使用子查询编写外连接 448

18-22 嵌套子查询 449

18-23 子查询的使用限制 449

18-24 许多子查询也可以写作连接 449

小结 450

第19章 多用户环境 451

数据库配置 451

19-1 单用户环境 451

19-2 多用户环境 452

19-3 分布式环境 452

19-4 通过Internet连接 454

多用户环境中的操作 454

19-5 如何使用别人拥有的表 454

19-6 代名 455

19-7 快照 456

安全性和特权 457

19-8 识别用户 457

19-9 特权 457

19-10 角色 458

19-11 几个人同时使用相同的表 459

Oracle数据字典和多用户环境 460

19-12 ALL和USER 460

19-13 如何在数据字典中找到所需的表 460

19-14 如何找到列的含义 460

小结 461

第20章 SQL设计 462

SQL的最初设计目标 462

20-1 做一件事并且做好它 462

20-2 关注信息 462

20-3 保持SQL语言的简单性 463

20-4 协调人们一起工作 463

新的界面 464

20-5 窗体 464

20-6 报表 464

20-7 Web工具 464

20-8 更小的数据库 466

20-9 OLTP 466

20-10 数据仓库 467

小结 467

附录A 获取和安装Oracle 468

附录B Oracle快速入门 477

附录C Access快速入门 481

附录D Lunches数据库的图 489