⚙️查

️简略查询语法

-- 查询列
SELECT <列名>,……
FROM <表名>-- 查询全部
SELECT *
FROM <表名>;

【SQL】SQL知识讲解(第二弹)

设置别号

AS关键字设置别号

-- 设置别号
SELECT product_id AS id,
 product_name AS name,
 purchase_price AS price
 FROM Product;

【SQL】SQL知识讲解(第二弹)

去重

DISTINCT 关键字实现去重,DISTINCT 关键字只能用在第一个列名之前

SELECT
DISTINCT product_type
,regist_date
FROM Product;

【SQL】SQL知识讲解(第二弹)

查询条件设置

WHERE 子句来指定查询数据的条件。

履行次序:

  1. 首先通过WHERE子句查询出符合条件的记载

  2. 然后再SELECT句子指定列

SELECT <列名>, ……
 FROM <表名>
 WHERE <条件表达式>;

【SQL】SQL知识讲解(第二弹)

⚙️运算符

算数运算符

加 (+)、减(-)、乘(*)、除(/)和取模(%)运算。

另:

  1. 除:DIV

  2. 取模:MOV

  3. 非数字型字符串,运算时当作0来处理

  4. 加法两边做数值运算,会把字符串转为数字

  5. 求模后的成果符号与被模数符号相同(第一个数字

  6. 所有包含 NULL 的核算,成果肯定是NULL

    select -12 % -5 from dual -- -2
    select 12 % -5 from dual -- 2
    

    【SQL】SQL知识讲解(第二弹)

比较运算符

等号运算符 =

  • 判别两个值,字符串和表达式是否持平。
  • 不能用来比较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;
    

    【SQL】SQL知识讲解(第二弹)

    留意:当表中含有null时,COUNT(*)和COUNT(<列名>)成果不同。

    • COUNT(*)会得到包含NULL的数据行数,
    • COUNT(<列名>)会得到NULL之外的数据行数。
  • SUM

    求和

    SELECT SUM(sale_price)
     FROM Product;
    

    【SQL】SQL知识讲解(第二弹)

  • AVG

    平均值

    SELECT AVG(sale_price)
     FROM Product;
    

    【SQL】SQL知识讲解(第二弹)

  • MAX、MIN

    最值

    SELECT MAX(sale_price), MIN(purchase_price)
     FROM Product;
    

    【SQL】SQL知识讲解(第二弹)

运用聚合函数删去重复值

先去重,再进行聚合

SELECT COUNT(DISTINCT product_type)
 FROM Product;

【SQL】SQL知识讲解(第二弹)

⚙️分组 GROUP BY

决定表的切分方法

GROUP BY 子句中指定的列称为聚合键或者分组列。

聚合键为NULL时,成果出现 空

SELECT <列名1>, <列名2>, <列名3>, ……
 FROM <表名>
 WHERE 
 GROUP BY <列名1>, <列名2>, <列名3>, ……;

【SQL】SQL知识讲解(第二弹)

履行次序:FROM → WHERE → GROUP BY → SELECT

给聚合成果指定条件 HAVING

group by 给成果分好组,having指定要查询的组的条件。

SELECT <列名1>, <列名2>, <列名3>, ……
 FROM <表名>
 GROUP BY <列名1>, <列名2>, <列名3>, ……
HAVING <分组成果对应的条件>

【SQL】SQL知识讲解(第二弹)

履行次序:SELECT → FROM → WHERE → GROUP BY → HAVING

比如:

SELECT PROD,COUNT(*)
FROM myTable 
GROUP BY PROD
HAVING COUNT(*) = 8 

【SQL】SQL知识讲解(第二弹)

HAVING子句只能包含:

  1. 常数
  2. 聚合函数
  3. GROUP BY 中指定的列名

聚合键所对应的条件应该书写在 WHERE 子句之中

⚙️排序

规矩

ORDER BY 子句对查询成果进行排序。

假如存在空置NULL,空置会汇集在最初或者结尾

允许运用别号

SELECT <列名1>, <列名2>, <列名3>, ……
 FROM <表名>
 ORDER BY <排序基准列1>, <排序基准列2>, ……

【SQL】SQL知识讲解(第二弹)

排序次序:

升序:ASC(默认)

降序:DESC

多个排序键:

优先运用左侧的键,假如该列存在相同值的话,再接着参阅右侧的键

履行次序: FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY

ORDER BY子句包含:

  1. 存在表中(包含不在SELECT子句中)的列
  2. 聚合函数