一、SELECT语句基础
1 列的查询
基本的SELECT语句。
SELETC <列名>,...
FROM <表名>;
2 查询全部的列
想要查询出全部列时,可以使用代表所有列的星号(*)。
SELECT *
FROM <表名>;
【注意】如果使用星号的话,就无法设定列的显示顺序。
3 为列设定别名
使用 AS 关键字为列设定别名。
SELECT product_id AS id
FROM Product;
--别名可以使用中文,使用中文时需要用双引号(")括起来
SELECT product_id AS "产品编号"
FROM Product;
4 常数的查询
SELECT '商品' AS string, 38 AS number, '2009-02-24' AS date, product_id, product_name
FROM Product;
--在SQL语句中使用字符串或者日期常数时,必须使用单引号 (')将其括起来。
5 从结果中删除重复行
在SELECT语句中使用DISTINCT可以删除重复行。
SELECT DISTINCT product_type
FROM Product;
6 WHERE语句
SELECT 语句通过 WHERE 子句来指定查询数据的条件。
SELECT <列名>
FROM <表名>
WHERE <条件表达式>;
--例如
SELECT product_name, product_type
FROM Product
WHERE product_type = '衣服';
--也可以不选取出作为查询条件的列
SELECT product_name
FROM Product
WHERE product_type = '衣服';
首先通过 WHERE 子句查询出符合指定条件的记录,然后再选取出 SELECT 语句指定的列。
【注意】WHERE 子句必须紧跟在 FROM 子句之后。
二、算术运算符和比较运算符
1 算术运算符
SQL 语句中可以使用计算表达式。
- 四则运算:运算符(+、-、*、/)称为算术运算符。
- 括号优先级:SQL 中也可以像平常的运算表达式那样使用括号 ( )。括号中 运算表达式的优先级会得到提升,优先进行运算。
- NULL问题:所有包含 NULL 的计算,结果肯定是 NULL。
2 比较运算符
符号 = (等于)这样用来比较其两边的列或者值的符号称为比较运算符。
SELECT product_id
FROM Product
WHERE sale_price = 500;
符号<>(不等于)代表否定含义的比较运算符。
SELECT product_id
FROM Product
WHERE sale_price <> 500;
【注意】
- 小于某个日期就是在该日期之前的意思。
- WHERE子句的条件表达式中也可以使用计算表达式 。
SELECT product_name, sale_price, purchase_price
FROM Product
WHERE sale_price - purchase_price >= 500;
3 对字符串使用不等号时的注意事项
字符串类型的数据原则上按照字典顺序进行排序,不能与数字的大小顺序混淆。
4 不能对NULL使用比较运算符
希望选取NULL记录时,需要在条件表达式中使用IS NULL运算符。希望选取不是NULL的记录时,需要在条件表达式中使用IS NOT NULL运算符。
--IS NULL
SELECT product_name, purchase_price
FROM Product
WHERE purchase_price IS NULL;
--IS NOT NULL
SELECT product_name, purchase_price
FROM Product
WHERE purchase_price IS NOT NULL;
三、逻辑运算符
1 NOT运算符
NOT 不能单独使用,必须和其他查询条件组合起来使用。NOT运算符用来否定某一条件,但是不能滥用。
SELECT product_name, product_type, sale_price
FROM Product
WHERE NOT sale_price >= 1000;
2 AND运算符和OR运算符
在 WHERE 子句中使用 AND 运算符或者 OR 运算符,可以对多个查询条件进行组合。
- AND 运算符在其两侧的查询条件都成立时整个查询条件才成立,其意思相当于“并且”。
SELECT product_name, purchase_price
FROM Product
WHERE product_type = '厨房用具'
AND sale_price >= 3000;
- OR 运算符在其两侧的查询条件有一个成立时整个查询条件都成立, 其意思相当于“或者”。
SELECT product_name, purchase_price
FROM Product
WHERE product_type = '厨房用具'
OR sale_price >= 3000;
【注意】 AND运算符的优先级高于OR运算符。想要优先执行OR运算符时可以使用括号。
SELECT product_name, product_type, regist_date
FROM Product
WHERE product_type = '办公用品'
AND ( regist_date = '2009-09-11'
OR regist_date = '2009-09-20');
3 逻辑运算符和真值
通过创建真值表,无论多复杂的条件,都会更容易理解。
4 含有NULL时的真值
与通常的逻辑运算被称为二值逻辑相对,只有 SQL 中的逻辑运算被称为三值逻辑。