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

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

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

📑视图

使用表时,会将数据保存在存储设备(硬盘上)

而使用视图时,并不会将数据保存在存储设备上,也不会将数据保存在任何地方。

视图里面保存的是 从表中取出数据所使用的SELECT语句(视图中的数据会随着原表的变化自动更新)。

查视图时,视图会在内部执行该SELECT语句并创建一张临时表。

优点:

  1. 节省存储设备容量
  2. 可以将频繁使用的 SELECT 语句保存成视图,这样就不用每次都重新书写

📃创建视图

代码语言:javascript
复制
CREATE VIEW 视图名称(<视图列名1>, <视图列名2>, ……)
AS
<SELECT语句> -- 从表中查数据的语句
多重视图(尽量避免使用)

在视图的基础上创建视图。

缺点:多重视图会降低 SQL 的性能

视图的限制
  1. 定义视图时,不能使用order by 子句
  2. 视图更新的限制
    1. SELECT子句中未使用DISTINCT
    2. FROM 子句中只有一张表
    3. 未使用GROUP BY子句
    4. 未使用HAVING子句

📃删除视图

代码语言:javascript
复制
DROP VIEW 视图名称

📑子查询

简单地说, 子查询就是一次性视图。因为子查询在SELECT语句执行完毕后就会消失

子查询就是将用来定义视图的 SELECT 语句直接用于FROM 子句当中。

注意:

  1. OracleFROM子句中,不能使用AS
  2. 尽量避免多层子查询

执行顺序:

内层的子查询 ——> 外层的查询

📃标量子查询

就是返回一行一列的子查询

一般情况下,标量子查询的 返回值 可以用在 = 或者 <> 这样需要单一值的比较运算符之中

书写位置:任何可以使用单一值的位置都可以使用。

📃关联子查询

在子查询中添加 where子句

作用是用于对集合进行切分。

代码语言:javascript
复制
SELECT product_type, product_name, sale_price
 FROM Product AS P1 
 WHERE sale_price > (SELECT AVG(sale_price)
 FROM Product AS P2 
 **WHERE P1.product_type = P2.product_type**
 GROUP BY product_type);

关于作用域: 1. 子查询内部设定的关联名称,只能在该子查询内部使用

📑谓词

谓词的返回值都是真值

📃LIKE

模糊查询

模糊匹配的符号:

  1. %: 表示任意字符
  2. _: 表示任意一个字符

📃BETWEEN

范围查询。

会包含临界值

📃IS NULL、IS NOT NULL

判断是否为空

📃IN

指定多个条件

代码语言:javascript
复制
IN(值1,值2,值3, .....)
子查询也可以作为IN的参数
代码语言:javascript
复制
SELECT product_name, sale_price
 FROM Product
 WHERE product_id IN (SELECT product_id 
 FROM ShopProduct
 WHERE shop_id = '000C');

📃EXIST

判断记录是否存在

谓词的作用就是“判断是否存在满足某种条件的记录”。 如果存在这样的记录就返回真(TRUE),如果不存在就返回假(FALSE)。 EXIST(存在)谓词的主语是“记录”。

右侧写一个参数,通常是一个子查询。

代码语言:javascript
复制
-- 查询存在于ShopProduct 中的商品
SELECT product_name, sale_price
 FROM Product AS P
 WHERE EXISTS (SELECT *
 FROM ShopProduct AS SP
 WHERE SP.shop_id = '000C'
 AND SP.product_id = P.product_id);

用NOT EXIST表示不存在某个表中。

📑CASE表达式

📌 Oracle中的DECODE就是CASE … WHEN … 语句

条件分支语句。

代码语言:javascript
复制
CASE WHEN <求值表达式> THEN <表达式>
		 WHEN <求值表达式> THEN <表达式>
		 WHEN <求值表达式> THEN <表达式>
		 . . .
		 ELSE <表达式>  -- 可以省略ELSE
END -- END不能省略
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 📑视图
    • 📃创建视图
      • 多重视图(尽量避免使用)
      • 视图的限制
    • 📃删除视图
    • 📑子查询
      • 📃标量子查询
        • 📃关联子查询
        • 📑谓词
          • 📃LIKE
            • 📃BETWEEN
              • 📃IS NULL、IS NOT NULL
                • 📃IN
                  • 子查询也可以作为IN的参数
                • 📃EXIST
                • 📑CASE表达式
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档