1. Select 语句
1.1 Select 基本语句
SELECT <列名> as <别名>, ……
FROM <表名>
WHERE <条件表达式>;
1.2 相关法则
- 星号(*)代表全部列的意思。
- 字符串用双引号("<字符串>")括起来
- 在SELECT语句中使用DISTINCT可以删除重复行。
- 1行注释:"-- “,多行注释:”/* */"
Example:
-- 想要查询出全部列时,可以使用代表所有列的星号(*)。
SELECT * FROM <表名>;
-- SQL语句可以使用AS关键字为列设定别名(用中文时需要双引号(“”))。
SELECT product_id As id,
product_name As name,
purchase_price AS "进货单价"
FROM product;
-- 使用DISTINCT删除product_type列中重复的数据
SELECT DISTINCT product_type FROM product;
2. 运算符
- 算数运算符
算数运算符 | 比较运算符 | 逻辑运算符 |
---|---|---|
+ (加) | = (等于) | NOT (不是) |
- (减) | <> (不等于) | AND (和) |
* (乘) | > (大于),< (小于) | OR (或) |
/ (除) | >= (大于等于),<= (小于等于) |
2.2 相关法则
- SELECT子句中可以使用常数或者表达式。
- 使用比较运算符时一定要注意不等号和等号的位置。
- 字符串类型的数据原则上按照字典顺序进行排序,不能与数字的大小顺序混淆。
- 希望选取NULL记录时,需要在条件表达式中使用IS NULL运算符。希望选取不是NULL的记录时,需要在条件表达式中使用IS NOT NULL运算符。
Example
-- 选取出sale_price列为500的记录
SELECT product_name, product_type
FROM product
WHERE sale_price = 500;
-- SQL语句中也可以使用运算表达式
SELECT product_name, sale_price, sale_price * 2 AS "sale_price x2"
FROM product;
-- WHERE子句的条件表达式中也可以使用计算表达式
SELECT product_name, sale_price, purchase_price
FROM product
WHERE sale_price-purchase_price >= 500;
/* 对字符串使用不等号
首先创建chars并插入数据
选取出大于‘2’的SELECT语句*/
-- DDL:创建表
CREATE TABLE chars
(chr CHAR(3)NOT NULL,
PRIMARY KEY(chr));
-- 选取出大于'2'的数据的SELECT语句('2'为字符串)
SELECT chr
FROM chars
WHERE chr > '2';
-- 选取NULL的记录
SELECT product_name, purchase_price
FROM product
WHERE purchase_price IS NULL;
-- 选取不为NULL的记录
SELECT product_name, purchase_price
FROM product
WHERE purchase_price IS NOT NULL;
- 想要表示“不是……”时,除了 <> 运算符外,还存在另外一个表示否定、使用范围更广的运算符:NOT。NOT不能单独使用,如下例:
-- 选取出销售单价大于等于1000日元的记录
SELECT product_name, product_type, sale_price
FROM product
WHERE sale_price >= 1000;
-- 向代码清单2-30的查询条件中添加NOT运算符
SELECT product_name, product_type, sale_price
FROM product
WHERE NOT sale_price >= 1000;
- AND 运算符优先于 OR 运算符,想要优先执行OR运算,可以使用括号:
-- 通过使用括号让OR运算符先于AND运算符执行
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. 对查询结果进行排序
# 默认升序排列,降序排列为 DESC
SELECT <列名1>, <列名2>, <列名3>, ……
FROM <表名>
ORDER BY <排序基准列1>, <排序基准列2>, ……
ORDER BY中列名可使用别名
4. 限制查询结果数量
# 限制查询结果数量为100条
SELECT <列名1>, <列名2>, <列名3>, ……
FROM <表名>
LIMIT 100;
5. SQL查询顺序
GROUP BY 不可以 使用别名
ORDER BY 可以 使用别名
FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY