第 1 课 了解 SQL
-
数据库(database)
- 保存有组织的数据容器(通常是一个文件或一组文件)
DBMS: database manager system, 数据管理系统
表(table): 某种特定类型的结构化清单。
模式(schema): 关于数据库和表的布局及特性的信息。
列(column): 表中的一个字段。所有表都是由一个或多个列组成。
数据类型:所允许的数据类型。 每个表都有相应的数据类型,它限制(或允许)该列中存储的数据。
行(row): 表中的一个记录。
-
主键(primary key): 一列或一组列, 其值能够唯一标识表中每一行。
- 主键列值不允许修改或更新。
- 主键值不能重用。
- 每一行都必须有一个主键。
SQL: 结构化查询语言(Structured Query Language)
第 2 课 检索数据
- SELECT语句从表中检索一个或多个数据列。
- 多条sql语句以分号(;)分隔,sql语句不区分大小写,sql语句忽略所有空格。
- 检索多个列,列用
,
号隔开。检索所有列,用通配符*
- 检索不同的值用
DISTINCT
- 警告:不能部分使用 DISTINCT
DISTINCT关键字作用于所有的列,不仅仅是跟在其后的那一列。例如,你指定SELECT DISTINCT vend_id, prod_price,除非指定的两列完全相同,否则所有的行都会被检索出来。
- 警告:不能部分使用 DISTINCT
- 警告:第 0 行
第一个被检索的行是第 0 行,而不是第 1 行。因此,LIMIT 1 OFFSET 1会检索第 2 行,而不是第 1 行。
第 3 课 排序检索数据
- 警告:在多个列上降序排序
如果想在多个列上进行降序排序,必须对每一列指定DESC关键字。
ORDER BY prod_price DESC, prod_name; - order by子句必须是SELECT语句中的最后一条子句。
第 4 课 过滤数据
where 子句操作符
= != < > <= >= between is null
在使用BETWEEN时,必须指定两个值 —— 所需范围的低端值和高端值。这两个值必须用AND关键字分隔。BETWEEN匹配范围中所有的值,包括指定的开始值和结束值
-
操作符( operator )
- 用来联结或改变WHERE子句中的子句的关键字,也称为 逻辑操作符( logical operator )。
AND 用在WHERE子句中的关键字,用来指示检索满足所有给定条件的行。
OR: WHERE子句中使用的关键字,用来表示检索匹配任一给定条件的行。
IN: WHERE子句中用来指定要匹配值的清单的关键字,功能与OR相当。
NOT: WHERE子句中用来否定其后条件的关键字。
第 6 课 用通配符进行过滤
通配符( wildcard )
用来匹配值的一部分的特殊字符。
搜索模式( search pattern )
由字面值、通配符或两者组合构成的搜索条件。
谓词( predicate )
操作符何时不是操作符?答案是,它作为谓词时。从技术上说,LIKE是谓词而不是操作符。虽然最终的结果是相同的,但应该对此术语有所了解,以免在 SQL 文献或手册中遇到此术语时不知所云。
- 最常使用的通配符是百分号(%)。在搜索串中,%表示任何字符出现任意次数。(0-无穷次)
- 警告:请注意 NULL
通配符%看起来像是可以匹配任何东西,但有个例外,这就是NULL。子句WHERE prod_name LIKE '%'不会匹配产品名称为NULL的行。 - 另一个有用的通配符是下划线(_)。下划线的用途与%一样,但它只匹配单个字符,而不是多个字符。
- 方括号([])通配符用来指定一个字符集,它必须匹配指定位置(通配符的位置)的一个字符。否定集 [^]