⚙️查
️简略查询语法
-- 查询列
SELECT <列名>,……
FROM <表名>;
-- 查询全部
SELECT *
FROM <表名>;
️设置别号
AS
关键字设置别号
-- 设置别号
SELECT product_id AS id,
product_name AS name,
purchase_price AS price
FROM Product;
️去重
DISTINCT
关键字实现去重,DISTINCT 关键字只能用在第一个列名之前
SELECT
DISTINCT product_type
,regist_date
FROM Product;
️查询条件设置
WHERE 子句
来指定查询数据的条件。
履行次序:
-
首先通过WHERE子句查询出符合条件的记载
-
然后再SELECT句子指定列
SELECT <列名>, ……
FROM <表名>
WHERE <条件表达式>;
⚙️运算符
算数运算符
加 (+)、减(-)、乘(*)、除(/)和取模(%)运算。
另:
-
除:DIV
-
取模:MOV
-
非数字型字符串,运算时当作0来处理
-
加法两边做数值运算,会把字符串转为数字
-
求模后的成果符号与被模数符号相同(第一个数字)
-
所有包含
NULL
的核算,成果肯定是NULL
。select -12 % -5 from dual -- -2 select 12 % -5 from dual -- 2
比较运算符
等号运算符 =
- 判别两个值,字符串和表达式是否持平。
- 不能用来比较
NULL
- 两边都是字符串,则按 ANSI码来比较。
- 持平则为1 不持平为0
安全等于运算符 <=>
- 能够比较null
- 持平则为1 不持平为0
不等于 <>
- 不能用来比较
NULL
判空 IS NULL、 IS NOT NULL
逻辑运算符
AND
:与
OR
:或
AND运算符的优先级高于OR运算符。
()
能够进步优先级
真值
众所周知,真值有true和false两种,可是在SQL中还有一种UNKNOWN
的情况。前者是二值逻辑,后者是三值逻辑。
在值为NULL
时,真值为UNKNOWN
⚙️聚合
用于汇总的函数称为聚合函数或集合函数。聚合,便是将多行混为一行。
只要**SELECT
子句、HAVING
子句、** 以及**ORDER BY
子句**中才干运用聚合函数。
聚合函数会将NULL排除在外,可是,COUNT(*)除外。
常见的聚合函数:
COUNT | 核算表中的行数 |
---|---|
SUM | 合计 |
AVG | 平均值 |
MAX | 最大值 |
MIN | 最小值 |
-
COUNT
SELECT COUNT(*) FROM Product;
留意:当表中含有null时,COUNT(*)和COUNT(<列名>)成果不同。
-
COUNT(*)
会得到包含NULL的数据行数, -
COUNT(<列名>)
会得到NULL之外的数据行数。
-
-
SUM
求和
SELECT SUM(sale_price) FROM Product;
-
AVG
平均值
SELECT AVG(sale_price) FROM Product;
-
MAX、MIN
最值
SELECT MAX(sale_price), MIN(purchase_price) FROM Product;
运用聚合函数删去重复值
先去重,再进行聚合
SELECT COUNT(DISTINCT product_type)
FROM Product;
⚙️分组 GROUP BY
决定表的切分方法
GROUP BY
子句中指定的列称为聚合键或者分组列。
聚合键为NULL时,成果出现 空
SELECT <列名1>, <列名2>, <列名3>, ……
FROM <表名>
WHERE
GROUP BY <列名1>, <列名2>, <列名3>, ……;
履行次序:FROM → WHERE → GROUP BY → SELECT
给聚合成果指定条件 HAVING
group by 给成果分好组,having指定要查询的组的条件。
SELECT <列名1>, <列名2>, <列名3>, ……
FROM <表名>
GROUP BY <列名1>, <列名2>, <列名3>, ……
HAVING <分组成果对应的条件>
履行次序:SELECT → FROM → WHERE → GROUP BY → HAVING
比如:
SELECT PROD,COUNT(*)
FROM myTable
GROUP BY PROD
HAVING COUNT(*) = 8
HAVING子句只能包含:
- 常数
- 聚合函数
- GROUP BY 中指定的列名
聚合键所对应的条件应该书写在 WHERE 子句之中
⚙️排序
规矩
ORDER BY 子句对查询成果进行排序。
假如存在空置NULL,空置会汇集在最初或者结尾
允许运用别号
SELECT <列名1>, <列名2>, <列名3>, ……
FROM <表名>
ORDER BY <排序基准列1>, <排序基准列2>, ……
排序次序:
升序:ASC(默认)
降序:DESC
多个排序键:
优先运用左侧的键,假如该列存在相同值的话,再接着参阅右侧的键
履行次序: FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY
ORDER BY子句包含:
- 存在表中(包含不在SELECT子句中)的列
- 聚合函数