1. DISTINCT 关键字
DISTINCT关键字作用于其后的所有表列,而不仅仅是紧跟其后的那一列。
当指定SELECT DISTINCT vend_id, prod_price时,因为指定的这两列不完全相同,所以所有的行都会被检索出来。
2. LIMIT关键字
- LIMIT关键字用于返回指定数量的行来对查询结果进行限制,并非通用SQL关键字,为MySQL、MariaDB、PostgreSQL和SQLite特有。
- LIMIT指定返回的行数,当需要指定返回的起始行数时,使用OFFSET关键字。
- 注意,结果集的行下标从0开始。LIMIT 1 OFFSET 1会检索第二行。
- 对于DBMS MySQL、MariaDB和SQLite,LIMIT 4 OFFSET 3 可以简化为LIMIT 3,4 。
3. 常用的注释方式
-- 这是单行注释,使用前要加一个空格。
# 这是单行注释,使用率没有上面那种高。部分DBMS不支持,但MySQL支持。
/*这是
多行注释。*/
4. ORDER BY子句
- 在指定ORDER BY子句时,应该保证它是SELECT语句的最后一条子句,否则会报错。
- 如果要在多个列上进行降序排序,必须对每一列指定DESC关键字,例如ORDER BY prod_price DESC,prod_name DESC。
5. BETWEEN操作符
当使用BETWEEN操作符进行范围检查时(BETWEEN a AND b),匹配值的范围为[a,b]。
6. NULL 关键字
- 进行空值检查时,要使用IS NULL 而不是=NULL。
- 通过过滤选择不包含指定值的所有行时,查询不会返回含NULL值的行。
- 当使用通配符进行模糊查询时,如WHERE prod_name LIKE '%',查询字段为NULL的行不会被匹配。
- 列值为空的行会被聚合函数(avg()、min()等)忽略。
7. 省略了FROM的SELECT语句
SELECT语句通常用于从表中检索数据,但是在省略了FROM子句后就是简单的访问和处理表达式。
SELECT 2*3
返回6
SELECT Trim(' abc ')
返回abc
SELECT Now( )
返回当前日期时间
可以根据需要使用SELECT语句进行测试、检验函数和计算。
8. 聚集函数
对某些行运行的函数,计算并返回一个值。
SQL常用的5个聚集函数:
AVG()
返回某列平均值
COUNT()
返回某列的行数
MAX()
返回某列的最大值
MIN()
返回某列的最小值
SUM()
返回某列值之和
9. 辨析COUNT(column)与COUNT(*)
- 使用COUNT(*)对表中的行进行计数,不管表列包含的值是否为NULL。
- 使用COUNT(column)对特定列中具有值的行进行计数,忽略NULL。
10. TRUNCATE关键字
- 用于清除关系表中的所有数据,相当于不加WHERE条件的DELETE语句。
- 和不加WHERE的DELETE语句一样,TRUNCATE操作只删除表中的数据,不删除表本身。
- 如果想删除表中所有数据,请使用TRUNCATE替代DELETE,因为在完成相同的工作,它执行的速度更快(因为无需记录数据的变动)。
11. ODBC数据源
ODBC
- ODBC是一个标准,能使客户端应用与不同的后端数据库或基础数据库引擎交互。
- 使用ODBC,能够在一个客户端中编写代码,与几乎所有数据库和DBMS进行交互。
- ODBC本身不是数据库,但它包装了数据库,使得所有数据库以一致和清晰定义的方式工作。
数据源
数据源是一个逻辑数据库,包括:
驱动程序
每种类型的DBMS都有自己的驱动程序。
连接数据库的信息
包括文件路径、服务器名等。
12. 主键约束
主键
其值能够唯一标识表中每一行的一列(或一组列)。
主键列需要满足的条件:
- 任意两行都不具有相同的主键值。
- 每一行必须有一个主键值。
- 主键列中的值不允许修改或更新。
- 主键值不能重用。如果某行从表中删除,它的值不能赋给以后的新行。
13. 外键约束
外键
外键是表中的一列,其值必须列在另一表的主键中。
外键是保证引用完整性的重要部分。
-- 1. 在创建表时添加外键约束
CREATE TABLE Orders(
order_num INT PRIMARY KEY,
order_date datetime NOT NULL,
cust_id varchar(50) NOT NULL REFERENCES Customers(cust_id)
);
-- 2. 在修改表时添加外键约束
ALTER TABLE Orders
ADD CONSTRAINT
FOREIGN KEY (cust_id) REFERENCES Customers(cust_id);
-- 3. 在GUI交互工具中创建
14. 唯一约束
作用
唯一约束用来保证一列(或一组列)中的数据时唯一的。
唯一约束与主键约束的区别:
- 一张表最多只能有一个主键,但可以包含多个唯一约束。
- 唯一约束列可以包含NULL。
- 唯一约束列可以修改或更新。
- 唯一约束列的值可以重复使用。
- 与主键不同,唯一约束不能用于定义外键。
15. 复制表
用途
复制表是对新SQL语句进行测试的一种好方法。在复制的数据上测试SQL代码,不会影响实际的数据。
-- MySQL复制表语法
CREATE TABLE CustCopy
AS
SELECT * FROM CUSTOMERS;
16. 联结查询
联结是什么
联结是一种机制,用来在一条SELECT语句中关联表。
类型
- 内联结(等值联结)
- 自联结
- 外联结(左外联结、右外联结、全外联结)