
按照书本上的知识还要介绍好多操作,细节又多,而且我之前上过这个课是有基础的,再重学一遍我坚持不下去。然后我直接在力扣上找了一个高频的,边练边学吧!加油孩子们!!!
第一只妖:(绝对是小妖,我居然会写)
一开始看到这个题型,从来没见过,枚举是啥也不懂,估计就是可选的类型吧,不重要。但是看后面的输出要求。

再加上要求,不就是返回表中是低脂且可回收的产品编号,so easy,备考数据库三级做过哈哈哈哈哈。
select 返回的东西 from 哪个表 where 条件
第二只妖:狡猾还孤立别人

为啥要孤立被id=2用户推荐的人啊

很好出错了,才看见有一个提示:Be careful of the NULL value 好像是!(不等于)是不包含null的。还以为自己很聪明就是返回除了被2推荐的人嘞。所以应该是
select name from Customer where referee_id!=2 or referee_id is null;
要注意是is null不是='null'
还看见了一种方法写,就孤立2推荐的人
select name from customer where id not in (select id from customer where referee_id =2)
第三只妖:平平无奇

也就是:select 国家名称、人口、面积 from World where 两个条件;
select name,population,area from World where area>=3000000 or population>=25000000;
我发现了这些题都是在条件那做文章。还好我比较聪明哈哈哈哈哈哈。
第四只妖:要排序还没主键,难,是个正常的妖

一开始都没看懂题目,在评论区看到一个人说这题是找出最自恋的人哈哈哈哈,我懂了,就是找谁看自己的文章了。
select distinct author_id as id from Views where author_id=viewer_id order by author_id asc;
distinct 去重,as就是取个新名字 order by用来排序的 asc升序desc降序
第五只妖:一只爱length()的妖

select tweet_id from Tweets where length(content)>15;
呦西,python里面的length()居然也适用,没白学啊
第六只妖:要连接表

sql
select unique_id,name
from Employees e1 left join EmployeeUNI e2
on e1.id=e2.id;
这里用一个左连接left join ,它以左表为基准,返回左表中所有的行,同时返回右表中与左表匹配的行。如果右表中没有匹配的行,则用NULL填充。
🔍 表连接的类型(4 种核心 JOIN)
MySQL 支持多种 JOIN,最常用的是以下 4 种:
| JOIN 类型 | 关键字 | 作用 | 特点 |
|---|---|---|---|
| 内连接 | INNER JOIN或 JOIN |
只返回 两表都匹配的数据 | 最常用 |
| 左连接 | LEFT JOIN |
返回 左表所有数据 + 右表匹配的数据(右表不匹配则 NULL) | 保左 |
| 右连接 | RIGHT JOIN |
返回 右表所有数据 + 左表匹配的数据(左表不匹配则 NULL) | 保右 |
| 全连接 | FULL JOIN(MySQL 不直接支持,需用 UNION模拟) |
返回 左右表所有数据(不匹配则 NULL) | MySQL 一般不用 |
通用格式:
sql
SELECT 列1, 列2, ...
FROM 表1
[JOIN 类型] 表2 ON 表1.字段 = 表2.字段
[WHERE 条件];