文章目录
1. SELECT语句基础
1.1 从表中选取数据
基本SELECT语句包含了SELECT和FROM两个子句(clause)。示例如下:
SELECT <列名> FROM <表名>;
#例如
SELECT product_name FROM products;
其中,SELECT子句中列举了希望从表中查询出的列的名称,而FROM子句则指定了选取出数据的表的名称。products是上一篇内容里创建的表格。
1.2 从表中选取符合条件的数据
SELECT 语句通过WHERE子句来指定查询数据的条件。在WHERE 子句中可以指定“某一列的值和这个字符串相等”或者“某一列的值大于这个数字”等条件。执行含有这些条件的SELECT语句,就可以查询出只符合该条件的记录了。
SELECT <列名>, ……
FROM <表名>
WHERE <条件表达式>;
#例如
SELECT product_name,product_type,purchase_price
FROM products
WHERE purchase_price >= 500;
#或者
SELECT product_name,product_type
FROM products
WHERE purchase_price >= 500;
#两种方法的输出结果不一样:第一种方法的输出比第二章多了一个列purchase_price;
1.3 相关法则
- 星号(*)代表全部列的意思。
SELECT * FROM products;
- SQL中可以随意使用换行符,不影响语句执行(但不可插入空行)。
- 设定汉语别名时需要使用双引号(")括起来。
- 在SELECT语句中使用DISTINCT可以删除重复行。
SELCET DISTINCT product_type FROM products;
- 注释是SQL语句中用来标识说明或者注意事项的部分。分为1行注释"-- “和多行注释两种”/* */"。
- SQL语句可以使用AS关键字为列设定别名(用中文时需要双引号(“”))。
SELECT product_id AS id,product_name AS name;
2. 算术运算符和比较运算符
2.1 算术运算符
SQL语句中可以使用的四则运算的主要运算符如下:加减乘除:+ - * /
2.2 比较运算符
SQL常见比较运算符如下:= 和~相等 <>和~不相等 >= 大于等于~ > 大于~ <= 小于等于~ < 小于~
2.3 常用法则
- SELECT子句中可以使用常数或者表达式。
- 使用比较运算符时一定要注意不等号和等号的位置。
- 字符串类型的数据原则上按照字典顺序进行排序,不能与数字的大小顺序混淆。
- 希望选取NULL记录时,需要在条件表达式中使用IS NULL运算符。希望选取不是NULL的记录时,需要在条件表达式中使用IS NOT NULL运算符。
-- SQL语句中也可以使用运算表达式
SELECT product_name, sale_price, sale_price * 2 AS "sale_price x2"
FROM product;
-- 选取NULL的记录
SELECT product_name, purchase_price
FROM products
WHERE purchase_price IS NULL;
-- 选取不为NULL的记录
SELECT product_name, purchase_price
FROM products
WHERE purchase_price IS NOT NULL;
3 逻辑运算符
3.1 NOT运算符
想要表示“不是……”时,除了前文的<>运算符外,还存在另外一个表示否定、使用范围更广的运算符:NOT。
NOT不能单独使用,如下例:
-- 选取出销售单价大于等于1000日元的记录
SELECT product_name, product_type, sale_price
FROM products
WHERE sale_price >= 1000;
-- 向代码清单2-30的查询条件中添加NOT运算符
SELECT product_name, product_type, sale_price
FROM products
WHERE NOT sale_price >= 1000;
3.2 AND运算符和OR运算符
当希望同时使用多个查询条件时,可以使用AND或者OR运算符。AND 相当于“并且”,类似数学中的取交集;OR 相当于“或者”,类似数学中的取并集
通过括号优先处理
例如:我们要查找付款价格不为空以及优惠价格大于等于2000或者优惠价格为500的。
SELECT product_name,product_type,purchase_price,sale_price
FROM products
WHERE purchase_price IS NOT NULL
AND ( sale_price