第二章 查询基础
2-1 SELECT语句基础
SELECT <列名>,... FROM <表名>;
SELECT * FROM <表名>; (查询表中所有列)
【查询多列时,需由逗号进行分割,查询结果中列的顺序和SELECT子句中的顺序相同。】
为列设定别名:用AS关键字
SELECT product_id AS id,
product_name AS "商品名称", 【其中设定中文别名需要用双引号括起来】
FROM Product;
查询常数:
SELECT '商品' AS string, 38 AS number, '2009-02-24' AS date,product_id
FROM Product; 【其中前三个常数在输出时与id同时输出,但不改变原表】
从结果中删除重复行:用DISTINCT关键字
SELECT DISTINCT purchase_price
FROM Product; 【可用在多列前,对多列数据进行组合,重复数据合并为同一条】
注:使用DISTINCT时,NULL也被视为一类数据会被合并。且DISTINCT只能放在第一个列名之前。
指定查询数据的条件:WHERE子句,需紧跟在FROM子句之后。
SELECT product_name, product_type
FROM Product
WHERE product_type = '衣服'; 【条件表达式】
书写注释:行注释:--之后 多行注释:/* */
2-2 算术运算符和比较运算符
加减乘除四则运算,以及使用()提升优先级,均可用于子句中。【以行为单位执行】
包含NULL的计算结果都是NULL
比较运算符:需要注意不相等为'<>',其余均为常用符号
SELECT product_name, sale_price, purchase_price
FROM Product
WHERE sale_price - purchase_price >= 500;【在条件表达式中用计算表达式】
对字符串使用不等号时,按字典顺序排列,而不是根据数字大小排序。
选取NULL的记录时,应使用IS NULL 或 IS NOT NULL运算符
2-3 逻辑运算符
NOT运算符用于否定
AND表示并且,OR表示或者,但应注意AND优先级高于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');
注:SQL中的逻辑运算被称为三值逻辑,除了TRUE、FALSE,还存在NULL表示不确定