前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【SQL】作为前端,应该了解的SQL知识(第二弹)

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

作者头像
且陶陶
发布2023-10-16 09:55:33
1600
发布2023-10-16 09:55:33
举报
文章被收录于专栏:Triciaの小世界Triciaの小世界

⚙️查

🛠️简单查询语法

代码语言:javascript
复制
-- 查询列
SELECT <列名>,……
FROM <表名>;
-- 查询全部
SELECT *
FROM <表名>;

🛠️设置别名

AS关键字设置别名

代码语言:javascript
复制
-- 设置别名
SELECT product_id AS id,
 product_name AS name,
 purchase_price AS price
 FROM Product;

🛠️去重

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

代码语言:javascript
复制
SELECT 
DISTINCT product_type
,regist_date
FROM Product;

🛠️查询条件设置

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

执行顺序:

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

2. 然后再SELECT语句指定列

代码语言:javascript
复制
SELECT <列名>, ……
 FROM <表名>
 WHERE <条件表达式>;

⚙️运算符

🔧算数运算符

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

另:

除:DIV

取模:MOV

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

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

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

所有包含 NULL 的计算,结果肯定是NULL

代码语言:javascript
复制
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

代码语言:javascript
复制
SELECT COUNT(*)
 FROM Product;

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

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

SUM

求和

代码语言:javascript
复制
SELECT SUM(sale_price) 
 FROM Product;

AVG

平均值

代码语言:javascript
复制
SELECT AVG(sale_price) 
 FROM Product;

MAX、MIN

最值

代码语言:javascript
复制
SELECT MAX(sale_price), MIN(purchase_price)
 FROM Product;

使用聚合函数删除重复值

先去重,再进行聚合

代码语言:javascript
复制
SELECT COUNT(DISTINCT product_type)
 FROM Product;

⚙️分组 GROUP BY

决定表的切分方式

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

聚合键为NULL时,结果呈现 空

代码语言:javascript
复制
SELECT <列名1>, <列名2>, <列名3>, ……
 FROM <表名>
 WHERE 
 GROUP BY <列名1>, <列名2>, <列名3>, ……;

执行顺序:FROM → WHERE → GROUP BY → SELECT

🔩给聚合结果指定条件 HAVING

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

代码语言:javascript
复制
SELECT <列名1>, <列名2>, <列名3>, ……
 FROM <表名>
 GROUP BY <列名1>, <列名2>, <列名3>, ……
HAVING <分组结果对应的条件>

执行顺序:SELECT → FROM → WHERE → GROUP BY → HAVING

例子:

代码语言:javascript
复制
SELECT PROD,COUNT(*) 
FROM myTable 
GROUP BY PROD
HAVING COUNT(*) = 8 
HAVING子句只能包含:
  1. 常数
  2. 聚合函数
  3. GROUP BY 中指定的列名

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

⚙️排序

🪛规则

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

如果存在空置NULL,空置会汇集在开头或者末尾

允许使用别名

代码语言:javascript
复制
SELECT <列名1>, <列名2>, <列名3>, ……
 FROM <表名>
 ORDER BY <排序基准列1>, <排序基准列2>, ……

🪛排序顺序:

升序:ASC(默认)

降序:DESC

多个排序键:

优先使用左侧的键,如果该列存在相同值的话,再接着参考右侧的键

执行顺序: FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY

ORDER BY子句包含:

  1. 存在表中(包括不在SELECT子句中)的列
  2. 聚合函数
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-05-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ⚙️查
    • 🛠️简单查询语法
      • 🛠️设置别名
        • 🛠️去重
          • 🛠️查询条件设置
          • ⚙️运算符
            • 🔧算数运算符
              • 🔧比较运算符
                • 等号运算符 =
                • 安全等于运算符 <=>
                • 不等于 <>
                • 判空 IS NULL、 IS NOT NULL
              • 🔧逻辑运算符
                • 真值
            • ⚙️聚合
              • ⚙️分组 GROUP BY
                • 🔩给聚合结果指定条件 HAVING
                  • HAVING子句只能包含:
              • ⚙️排序
                • 🪛规则
                  • 🪛排序顺序:
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档