# SQL必知必会（第5版）
SQL是使用最为广泛的数据库语言，几乎所有重要的DBMS都支持SQL。本书是麻省理工学院、伊利诺伊大学等众多大学的参考教材，由浅入深地讲解了SQL的基本概念和语法，涉及数据的排序、过滤和分组，以及表、视图、联结、子查询、游标、存储过程和触发器等内容，实例丰富，便于查阅。与其他同类图书不同，本书没有过多阐述数据库基础理论，而是专门针对一线软件开发人员，直接从SQLSELECT开始，讲述实际工作环境中最常用和最必需的SQL知识，实用性极强。新版对书中的案例进行了全面的更新，并增加了章后挑战题，便于读者巩固所学知识。 ...

2024年10月14日6分钟阅读

- Personal/Book
- Read/计算机-数据库

## 简介

- 书名：《SQL必知必会（第5版）》
- 作者： 本·福达
- 分类： 计算机-数据库
- ISBN：9787115539168
- 出版社：人民邮电出版社

## 概述

SQL是使用最为广泛的数据库语言，几乎所有重要的DBMS都支持SQL。本书是麻省理工学院、伊利诺伊大学等众多大学的参考教材，由浅入深地讲解了SQL的基本概念和语法，涉及数据的排序、过滤和分组，以及表、视图、联结、子查询、游标、存储过程和触发器等内容，实例丰富，便于查阅。与其他同类图书不同，本书没有过多阐述数据库基础理论，而是专门针对一线软件开发人员，直接从SQLSELECT开始，讲述实际工作环境中最常用和最必需的SQL知识，实用性极强。新版对书中的案例进行了全面的更新，并增加了章后挑战题，便于读者巩固所学知识。

## 划线

> SQL是使用最为广泛的数据库语言。

> 数据库（database）保存有组织的数据的容器（通常是一个文件或一组文件）。

> 数据库软件应称为数据库管理系统（DBMS）。数据库是通过DBMS创建和操纵的容器

> SQL（发音为字母S-Q-L或sequel）是Structured Query Language（结构化查询语言）的缩写

> Windows用户可以使用Microsoft SQL Server Express。这是强大的SQL Server的一个免费版本，它还包括一个用户友好的客户端叫SQL Server Management Studio。

> 办法就是使用DISTINCT关键字，顾名思义，它指示数据库只返回不同的值。

> LIMIT 5 OFFSET 5

> 重要的是理解在按多个列排序时，排序的顺序完全按规定进行。

> 如果prod_price列中所有的值都是唯一的，则不会按prod_name排序。

> 提示：按非选择列排序显然，当根据不出现在SELECT清单中的列进行排序时，不能采用这项技术。但是，如果有必要，可以混合使用实际列名和相对列位置。

> 在很多DBMS中，AS关键字是可选的，不过最好使用它，这被视为一条最佳实践。

> WHERE在数据分组前进行过滤，HAVING在数据分组后进行过滤

> 使用HAVING时应该结合GROUP BY子句，而WHERE子句用于标准的行级过滤。

> 在SELECT语句中，子查询总是从内向外处理。

> 关系表的设计就是要把信息分解成多个表，一类数据一个表。各表通过某些共同的值互相关联（所以才叫关系数据库）。

> 将数据分解为多个表能更有效地存储，更方便地处理，并且可伸缩性更好。但这些好处是有代价的。

> 由没有联结条件的表关系返回的结果为笛卡儿积。检索出的行的数目将是第一个表中的行数乘以第二个表中的行数。

> 目前为止使用的联结称为等值联结（equijoin），它基于两个表之间的相等测试。这种联结也称为内联结（inner join）

> 不要联结不必要的表。联结的表越多，性能下降越厉害。

> 自联结（self-join）、自然联结（natural join）和外联结（outer join）。

> 联结包含了那些在相关表中没有关联行的行。这种联结称为外联结。

> UNION几乎总是完成与多个WHERE条件相同的工作。UNION ALL为UNION的一种形式，它完成WHERE子句完成不了的工作。如果确实需要每个条件的匹配行全部出现（包括重复行），就必须使用UNION ALL，而不是WHERE。

> 视图是虚拟的表。与包含数据的表不一样，视图只包含使用时动态检索数据的查询。

> 事务处理是一种机制，用来管理必须成批执行的SQL操作，保证数据库不包含不完整的操作结果。

> 管理事务的关键在于将SQL语句组分解为逻辑块，并明确规定数据何时应该回退，何时不应该回退。

> 一般的SQL语句都是针对数据库表直接执行和编写的。这就是所谓的隐式提交（implicit commit），即提交（写或保存）操作是自动进行的。

## 笔记

## 书评

## 点评