因为最近要学习SQL,所以写一份关于《SQL必知必会》的总结,本文DBMS使用MySQL,SQL语法中是不区分大小写的。
版权说明:[美]Ben Forta. SQL必知必会(第4版) (图灵程序设计丛书 80). 人民邮电出版社.
文章目录
1. 检索数据
1.1 检索单个列
- 结束语句以分号;结尾
- 不区分大小写
- 处理语句时所有空格都会被省略,写成一行或多行没有区别
SELECT prod_name
FROM Products;
1.2 检索多个列
- 多个列之间用逗号隔开
SELECT prod_id, prod_name, prod_price
FROM Products;
1.3 检索不同值
- 使用关键字DISTINCT
- 关键字应用于所有列
SELECT vend_id, prod_price
FROM Products;
1.4 限制结果
各个数据库实现方式不同
1.5 注释
/* SELECT vend_id
FROM Products */ 多行注释
SELCET prod_name --这是一条注释
FROM Products; # 这也是注释
2. 排序检索数据
2.1 排序单个列
SELECT prod_name
FROM Products
ORDER BY prod_name;
- ORDER BY必须在代码的最后一句
- 可以通过 非检索列的数据 进行排序也是完全合法的
2.2 多个列排序
SELECT prod_id, prod_name, prod_price
FROM Products
ORDER BY prod_id, prod_name, prod_price;
2.3 按列位置进行排序
SELECT prod_id, prod_name, prod_price
FROM Products
ORDER BY 2, 3;
- 使用相对列位置(起始位1)排序,好处在于不用输入列名,缺点在于容易出错
- 列号不合法会报错
- 可以使用实际列名和相对位置混合排序
2.4 指定序列方向
SELECT prod_id, prod_name, prod_price
FROM Products
ORDER BY prod_id DESC, prod_name, prod_price DESC;
- 排序默认升序,关键字为DESC
- 每个需要降序的列后都需要加关键字
3. 过滤数据
3.1 使用WHERE语句
SELECT prod_name, prod_price
FROM Products
WHERE prod_price = 3.49
条件操作符
操作符 | 说明 |
---|---|
= | 等于 |
< > | 不等于 |
!= | 不等于 |
!< | 不小于 |
BETWEEN | 指定两个值之间 |
IS NULL | 为NULL值 |
- != 和 <>通常可以互换,但应遵循使用的DBMS文档
3.2 使用WHERE子句
**操作符(Operator)**用来联结或改变 WHERE 子句中的子句的关键字,又称逻辑操作符
条件操作符
操作符 | 说明 |
---|---|
AND | 检索满足所有指定条件的行 |
OR | 检索满足指定条件之一的行 |
IN | 工作性质和OR相同 (以下代码效果相同) |
NOT | 否定其后条件 |
SELECT prod_name, prod_price
FROM Products
WHERE vend_id IN ('DLL01', 'BRS01')
ORDER BY prod_name;
SELECT prod_name, prod_price
FROM Products
WHERE vend_id = 'DLL01' OR vend_id = 'BRS01'
ORDER BY prod_name