MySql 学习笔记 -- 临时表 + 派生表 + CTE(公公表表达式)

本文深入探讨了SQL中的临时表与派生表概念,解析了它们的创建方式及应用场景。临时表在会话结束时自动删除,可用于存储临时数据;派生表则在SELECT语句中作为子查询使用,需有别名。此外,还介绍了CTE的使用,它不占用存储空间且支持多次查询。

creat temporary table创建临时表

会话结束或连接终止的时候,会自动删除表,也可以用DROP TABLE删除表(DROP TEMPORARY TABLE)

 

派生表经常和子查询互换使用,SELECT语句的FROM子句中使用独立子查询的时候,将其称之为派生表

与子查询不同,派生表必须具有别名,以便在稍后查询中引用(如派生表和另一个表连接,必须先起别名再连接)

 

CTE类似派生表,不占存储空间,但是可以重复查询

CTE基本语法:

WITH cte_name (column_list) AS (

           query

)

(SELECT * FROM cte_name;)
使用WITH建表,使用SELECT引用,两部分可以分开

CTE也可以被用于表连接

其中SELECT/UPDATE/DELETE等都可以和WITH共用,可以放在WITH的前/后

 

mysql Movies +---------------+---------+ | Column Name | Type | +---------------+---------+ | movie_id | int | | title | varchar | +---------------+---------+ movie_id 是这个的主键(具有唯一值的列)。 title 是电影的名字。 :Users +---------------+---------+ | Column Name | Type | +---------------+---------+ | user_id | int | | name | varchar | +---------------+---------+ user_id 是的主键(具有唯一值的列)。 'name' 列具有唯一值。 :MovieRating +---------------+---------+ | Column Name | Type | +---------------+---------+ | movie_id | int | | user_id | int | | rating | int | | created_at | date | +---------------+---------+ (movie_id, user_id) 是这个的主键(具有唯一值的列的组合)。 这个包含用户在其评论中对电影的评分 rating 。 created_at 是用户的点评日期。 请你编写一个解决方案: 查找评论电影数量最多的用户名。如果出现平局,返回字典序较小的用户名。 查找在 February 2020 平均评分最高 的电影名称。如果出现平局,返回字典序较小的电影名称。 字典序 ,即按字母在字典中出现顺序对字符串排序,字典序较小则意味着排序靠前。 返回结果格式如下例所示。 示例 1: 输入: Movies +-------------+--------------+ | movie_id | title | +-------------+--------------+ | 1 | Avengers | | 2 | Frozen 2 | | 3 | Joker | +-------------+--------------+ Users +-------------+--------------+ | user_id | name | +-------------+--------------+ | 1 | Daniel | | 2 | Monica | | 3 | Maria | | 4 | James | +-------------+--------------+ MovieRating +-------------+--------------+--------------+-------------+ | movie_id | user_id | rating | created_at | +-------------+--------------+--------------+-------------+ | 1 | 1 | 3 | 2020-01-12 | | 1 | 2 | 4 | 2020-02-11 | | 1 | 3 | 2 | 2020-02-12 | | 1 | 4 | 1 | 2020-01-01 | | 2 | 1 | 5 | 2020-02-17 | | 2 | 2 | 2 | 2020-02-01 | | 2 | 3
03-26
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值