SQL 必知必会(第 4 版)--第1课-第6课

SQL 必知必会(第 4 版)(2013)

第一课 了解 SQL

  • 数据库基础
    • 数据库
      • 数据库(database),数据库是一个以某种有组织的方式存储的数据集合。
      • 表(table),某种特定类型数据的结构化清单。
      • 模式,关于数据库和表的布局及特性的信息。
    • 列和数据类型
      • 表由列组成。列存储表中某部分的信息。
      • 列(column),表中的一个字段。所有表都是由一个或多个列组成的。
      • 数据类型,所允许的数据的类型。每个表列都有相应的数据类型,它限制(或允许)该列中存储的数据。
      • 表中的数据是按行存储的,所保存的每个记录存储在自己的行内。
      • 行(row),表中的一个记录。
    • 主键
      • 表中每一行都应该有一列(或几列)可以唯一标识自己。
      • 主键(primary key),一列(或一组列),其值能够唯一标识表中每一行。
      • 应该总是定义主键。
  • 什么是 SQL
    • SQL 是 Structured QueryLanguage(结构化查询语言)的缩写。SQL 是一种专门用来与数据库沟通的语言。
    • SQL 有如下的优点:
      • SQL 不是某个特定数据库供应商专有的语言。
      • SQL 简单易学。
      • SQL 虽然看上去很简单,但实际上是一种强有力的语言,灵活使用其语言元素,可以进行非常复杂和高级的数据库操作。

第二课 索引数据

  • SELECT 语句
    • 关键字(keyword)作为 SQL 组成部分的保留字。关键字不能用作表或列的名字。
  • 检索单个列
    • SELECT prod_name FROM Products;
    • 多条 SQL 语句必须以分号(;)分隔。
    • 请注意,SQL 语句不区分大小写,因此 SELECT 与 select 是相同的。
  • 检索多个列
    • 在选择多个列时,一定要在列名之间加上逗号,但最后一个列名后不加。
    • SQL语句一般返回原始的、无格式的数据。数据的格式化是表示问题,而不是检索问题。
  • 检索所有列
    • 除了指定所需的列外(如上所述,一个或多个列), SELECT 语句还可以检索所有的列而不必逐个列出它们。在实际列名的位置使用星号(*)通配符可以做到这点。
    • 一般而言,除非你确实需要表中的每一列,否则最好别使用 * 通配符。
  • 检索不同的值
    • 使用 DISTINCT 关键字,顾名思义,它指示数据库只返回不同的值。
    • DISTINCT 关键字作用于所有的列,不仅仅是跟在其后的那一列。
  • 限制结果
    • 并非所有的 SQL 实现都一样。
  • 使用注释
    • 注释从 /* 开始,到 */ 结束,/**/ 之间的任何内容都是注释。这种方式常用于给代码加注释。
    • 注释使用 --(两个连字符)嵌在行内。-- 之后的文本就是注释。

第三课 排序检索数据

  • 排序数据
    • SQL 语句由子句构成,有些子句是必需的,有些则是可选的。一个子句通常由一个关键字加上所提供的数据组成。
    • 为了明确地排序用 SELECT 语句检索出的数据,可使用 ORDER BY 子句。ORDER BY 子句取一个或多个列的名字,据此对输出进行排序。
    • 在指定一条 ORDER BY 子句时,应该保证它是 SELECT 语句中最后一条子句。
    • 通常,ORDER BY 子句中使用的列将是为显示而选择的列。
  • 按多个列排序
    • 要按多个列排序,简单指定列名,列名之间用逗号分开即可(就像选择多个列时那样)。
  • 按列位置排序
    • 除了能用列名指出排序顺序外,ORDER BY 还支持按相对列位置进行排序。
  • 指定排序方向
    • 数据排序不限于升序排序(从 A 到 Z),这只是默认的排序顺序。还可以使用 ORDER BY 子句进行降序(从 Z 到 A)排序。为了进行降序排序,必须指定 DESC 关键字。
    • DESC 关键字只应用到直接位于其前面的列名。
    • 如果想在多个列上进行降序排序,必须对每一列指定 DESC 关键字。

第四课 过滤数据

  • 使用 WHERE 子句
    • 在 SELECT 语句中,数据根据 WHERE 子句中指定的搜索条件进行过滤。WHERE 子句在表名(FROM 子句)之后给出。
    • 在同时使用 ORDER BY 和 WHERE 子句时,应该让 ORDER BY 位于 WHERE 之后,否则将会产生错误。
  • WHERE 子句操作符
    • 想确定你的 DBMS 支持哪些操作符,请参阅相应的文档。
  • 检查单个值
    • SELECT prod_name, prod_price FROM Products WHERE prod_price < 10;
  • 不匹配检查
    • 如果将值与字符串类型的列进行比较,就需要限定引号。用来与数值列进行比较的值不用引号。
  • 范围值检查
    • 要检查某个范围的值,可以使用 BETWEEN 操作符。其语法与其他 WHERE 子句的操作符稍有不同,因为它需要两个值,即范围的开始值和结束值。
    • 在使用 BETWEEN 时,必须指定两个值——所需范围的低端值和高端值。这两个值必须用 AND 关键字分隔。BETWEEN 匹配范围中所有的值,包括指定的开始值和结束值。
  • 空值检查
    • 在创建表时,表设计人员可以指定其中的列能否不包含值。在一个列不包含值时,称其包含空值 NULL。
    • NULL 无值(no value),它与字段包含0、空字符串或仅仅包含空格不同。
    • 过滤数据时,一定要验证被过滤列中含NULL的行确实出现在返回的数据中。

第五课 高级数据过滤

  • 组合 WHERE 子句
    • 有两种使用方式,即以 AND 子句或 OR 子句的方式使用。
    • 操作符(operator)用来联结或改变 WHERE 子句中的子句的关键字,也称为逻辑操作符(logical operator)。
    • AND 操作符
      • 要通过不止一个列进行过滤,可以使用 AND 操作符给 WHERE 子句附加条件。
      • AND 用在 WHERE 子句中的关键字,用来指示检索满足所有给定条件的行。
      • 可以增加多个过滤条件,每个条件间都要使用AND关键字。
      • 可以加上一个 ORDER BY 子句,它应该放在 WHERE 子句之后。
    • OR 操作符
      • OR 操作符与 AND 操作符正好相反,它指示 DBMS 检索匹配任一条件的行。
      • WHERE 子句中使用的关键字,用来表示检索匹配任一给定条件的行。
    • 求值顺序
      • WHERE 子句可以包含任意数目的 AND 和 OR 操作符。允许两者结合以进行复杂、高级的过滤。
      • SQL(像多数语言一样)在处理 OR 操作符前,优先处理 AND 操作符。解决方法是使用圆括号对操作符进行明确分组。
      • 任何时候使用具有AND和OR操作符的 WHERE 子句,都应该使用圆括号明确地分组操作符。
  • IN 操作符
    • IN 操作符用来指定条件范围,范围中的每个条件都可以进行匹配。IN 取一组由逗号分隔、括在圆括号中的合法值。
    • 使用 IN 操作符,其优点如下:
      • 在有很多合法选项时,IN 操作符的语法更清楚,更直观。
      • 在与其他 AND 和 OR 操作符组合使用 IN 时,求值顺序更容易管理。
      • IN 操作符一般比一组 OR 操作符执行得更快。
      • IN 的最大优点是可以包含其他 SELECT 语句,能够更动态地建立 WHERE 子句。
    • WHERE 子句中用来指定要匹配值的清单的关键字,功能与 OR 相当。
  • NOT 操作符
    • WHERE 子句中的 NOT 操作符有且只有一个功能,那就是否定其后所跟的任何条件。因为 NOT 从不单独使用(它总是与其他操作符一起使用),所以它的语法与其他操作符有所不同。NOT 关键字可以用在要过滤的列前,而不仅是在其后。

第六课 用通配符进行过滤

  • LIKE 操作符
    • 利用通配符,可以创建比较特定数据的搜索模式。
    • 通配符(wildcard)用来匹配值的一部分的特殊字符。
    • 搜索模式(search pattern)由字面值、通配符或两者组合构成的搜索条件。
    • 为在搜索子句中使用通配符,必须使用 LIKE 操作符。LIKE指示 DBMS,后跟的搜索模式利用通配符匹配而不是简单的相等匹配进行比较。
    • 通配符搜索只能用于文本字段(字符串),非文本数据类型字段不能使用通配符搜索。
    • 百分号(%)通配符
      • 在搜索串中,% 表示任何字符出现任意次数:SELECT prod_id, prod_name FROM Products WHERE prod_name LIKE 'Fish%';,执行这条子句时,将检索任意以 Fish 起头的词。% 告诉 DBMS 接受 Fish 之后的任意字符,不管它有多少字符。
      • 通配符可在搜索模式中的任意位置使用,并且可以使用多个通配符。
      • 通配符%看起来像是可以匹配任何东西,但有个例外,这就是NULL。
    • 下划线(_)通配符
      • 下划线的用途与 % 一样,但它只匹配单个字符,而不是多个字符:SELECT prod_id, prod_name FROM Products WHERE prod_name LIKE '_ inch teddy bear';
    • 方括号([])通配符
      • 方括号([])通配符用来指定一个字符集,它必须匹配指定位置(通配符的位置)的一个字符:SELECT cust_contact FROM Customers WHERE cust_contact LIKE '[JM]%' ORDER BY cust_contact;[JM] 匹配方括号中任意一个字符,它也只能匹配单个字符。
  • 使用通配符的技巧
    • 通配符搜索一般比前面讨论的其他搜索要耗费更长的处理时间。
      • 不要过度使用通配符。如果其他操作符能达到相同的目的,应该使用其他操作符。
      • 在确实需要使用通配符时,也尽量不要把它们用在搜索模式的开始处。把通配符置于开始处,搜索起来是最慢的。
      • 仔细注意通配符的位置。如果放错地方,可能不会返回想要的数据。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《SQL》第三样例数据包括以下内容: 1. 表格(Tables):包含数据的结构,用于存储和组织数据。每个表格由一个或多个列(Columns)组成,每一列定义了特定类型的数据。 2. 行(Rows):也称为记录(Record),表示表格中的一条数据。每一行由表格的列组成,每一列都包含一个相关的值。 3. 值(Values):表示在表格中的特定位置上的数据。每一个单元格都包含一个值,该值与特定列和行的交汇处相对应。 4. 主键(Primary Key):用于唯一标识表格中的每一行的列。主键列包含唯一的值,并且不能包含空值(NULL)。 5. 外键(Foreign Key):用于建立表格之间的关系。外键列包含与在另一表格中定义的主键列相对应的值。 6. SQL语句(SQL Statements):用于在数据库中执行操作的命令。包括数据查询(SELECT)、数据插入(INSERT)、数据更新(UPDATE)和数据删除(DELETE)等。 7. 样例数据(Sample Data):用于演示和练习的虚拟数据集。这些数据集包含不同类型的数据和关系,以帮助读者理解和应用SQL的概念和技巧。 样例数据被用于书中的案例分析和实践示例,读者可以通过运行相关的SQL语句来操作和查询这些数据。通过这种方式,读者可以更好地理解SQL的基本概念和操作技巧,并将其应用于实际的数据库开发和管理中。 ### 回答2: 《SQL 第三》这本书是一本经典的SQL学习教材,旨在帮助初学者了解和掌握SQL语言。在书中涵盖了丰富的样例数据,以便读者能够通过实例理解SQL的相关概念和运用。 样例数据是指书中提供的用于演示和练习的具体数据集合,这些数据集合包括各种表格和表中的记录。通过使用这些样例数据,读者可以进行实践操作,实现各种SQL查询和数据处理的练习。 书中的样例数据通常涵盖了各个SQL操作的场景,如创建数据库、创建表格、插入记录、查询记录、更新记录和删除记录等。这些样例数据有助于读者更好地理解SQL语言的基本语法和操作方法。 此外,书中还提供了一些复杂和实际场景的样例数据,以帮助读者应用SQL技术解决实际问题。通过对这些样例数据的操作和分析,读者可以学习到如何使用SQL语言进行数据分析、数据挖掘和决策支持等工作。 总之,《SQL 第三》的样例数据是读者学习和实践SQL语言的重要资源。通过实际操作这些样例数据,读者可以更好地理解SQL的相关概念和应用,提升SQL编程和数据处理的能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值