【SQL】作为前端,应该了解的SQL知识(第二弹)

本文介绍了SQL查询的基础知识,包括SELECT语句用于选择列,AS关键字设置别名,DISTINCT去除重复值,WHERE子句设置查询条件,以及算术、比较和逻辑运算符的使用。此外,还讨论了聚合函数如COUNT、SUM、AVG、MAX和MIN的应用,GROUPBY和HAVING子句进行数据分组,以及ORDERBY子句实现排序功能。
摘要由CSDN通过智能技术生成

⚙️查

🛠️简单查询语法

-- 查询列
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 子句来指定查询数据的条件。

执行顺序: 

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

2. 然后再SELECT语句指定列

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

⚙️运算符

🔧算数运算符

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

另:

  1. 除:DIV

  2. 取模:MOV

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

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

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

  6. 所有包含 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子句只能包含:

  1. 常数
  2. 聚合函数
  3. 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子句包含:

  1. 存在表中(包括不在SELECT子句中)的列
  2. 聚合函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

.Tricia.

感谢大人投喂~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值