SQL 必知必会
从入门到数据实战
陈旸  清华大学计算机博士
专栏
已完结·共 50 讲
|
7.3w 人已学
|
收藏
Flychen
-- 筛选最大生命值大于 6000 的英雄,按照主要定位进行分组, -- 选择分组英雄数量大于 5 的分组,按照分组英雄数从高到低进行排序, -- 并显示每个分组的英雄数量、主要定位和平均最大生命值。 select count(*),role_main,AVG(hp_max) from heros where hp_max > 6000 GROUP BY role_main HAVING COUNT(*) > 5 order by COUNT(*) DESC; -- ------------------------------ -- 筛选最大生命值与最大法力值之和大于 7000 的英雄,按照攻击范围来进行分组,显示分组的英雄数量, -- 以及分组英雄的最大生命值与法力值之和的平均值、最大值和最小值,并按照分组英雄数从高到低进行排序, -- 其中聚集函数的结果包括小数点后两位。 SELECT count(*) '数量',attack_range,max(hp_max),sum(mp_max),ROUND(AVG(mp_max),2),max(mp_max),min(mp_max) from heros where (hp_max + mp_max) > 7000 group by attack_range ORDER BY '数量' ;
2021-01-18
胡皓
对3NF的理解: 1NF:数据表的属性不能再拆分。 2NF:非主属性和数据表里的候选键有完全依赖关系 3NF:非主属性和候选键之间不存在传递依赖关系 1NF大部分数据表都会满足,我从另一个视角来看下2NF和3NF。在2NF和3NF中都涉及到了候选键,候选键包含能唯一标识元组的属性,标识能让我们找到对象的所有属性。2NF要求,只能根据候选键作为整体标识来确定对象的其他属性,而3NF要求所有其他属性只能根据候选键来直接查找,不能存在传递查找。
2020-11-21
小虾米
1.0412158966064453 1.049706220626831 感谢老师,初识redis
2020-11-10
硅谷居士
又看了一遍,感谢老师
2020-04-06
GISer_wfp
初学数据库,对select的理解是,它像一把神奇的大勺子,可以按照主人的想法从数据库里捞出主人想要的数据; 今天的作业: mysql> select name, mp_max from heros order by hp_max desc limit 5; +-----------+--------+ | name | mp_max | +-----------+--------+ | 廉颇 | 1708 | | 白起 | 1666 | | 程咬金 | 0 | | 刘禅 | 1694 | | 牛魔 | 1926 | +-----------+--------+ 5 rows in set (0.00 sec)
2019-07-08
长安落雪
SELECT t1.team_name,t2.team_name FROM team as t1 LEFT JOIN team as t2 ON t1.team_id != t2.team_id SELECT t1.team_name , t2.team_name FROM team as t1 ,team as t2 where t1.team_id<t2.team_id;
作者回复:正确,大家可以参考下这个。如果是分主客场的话,是第一个SQL。如果是不重复的两个球队的比赛的话,是第二个SQL。
2019-07-04
野马
那一个RDBMS支持多个SQL标准吗?
作者回复:这是一个好问题,有的时候是同时支持的,比如: SELECT * FROM a, b 和 SELECT * FROM a JOIN b 但有的时候又不支持,比如在MySQL中不支持SQL92标准下的 +号方式的外连接,但是支持SQL99的外连接方式。 具体还需要参考RDBMS相关的文档,即使是同一个标准,每个RDBMS都有自己的“方言”,使用的语法也有差异。
2019-07-04
Yt
比较运算符:只有单纯的比较,查询的值比较(>,<,=,NULL判定)通过,则筛选通过 逻辑运算符:AND,OR,BETWEEN...AND,将比较运算符串联起来,组合成复杂的筛选条件 通配符:谈这个应该和正则表达式一起来讲,有点混乱易混淆。用于文本查询、匹配。LIKE比起REGEXP文本匹配更严格。LIKE是匹配的文本必须要有,且只能有这么多;REGEXP是匹配的文本段中有匹配的文本就行,所以REGEXP加入了控制匹配文本的位置功能。 SELECT name,role_main,role_assist,hp_max,mp_max FROM heros WHERE (role_main IN ('战士','坦克‘) AND role_assist IS NOT NULL) AND(hp_max>8000 OR mp_max<1500) ORDER BY (hp_max+mp_max) DESC;
作者回复:SQL语句正确(&#39;坦克&#39;需要注意下)。我在文章里主要讲解了LIKE操作符,也可以使用REGEXP操作符来进行正则表达式匹配。
2019-06-24
MJ
select name,role_main,role_assist,hp_max,mp_max from heros where (role_main in ('坦克','战士') and role_assist is not NULL) and (hp_max > 8000 or mp_max < 1500) order by (mp_max+hp_max) desc; +-----------+-----------+-------------+--------+--------+ | name | role_main | role_assist | hp_max | mp_max | +-----------+-----------+-------------+--------+--------+ | 牛魔 | 坦克 | 辅助 | 8476 | 1926 | | 刘邦 | 坦克 | 辅助 | 8073 | 1940 | | 程咬金 | 坦克 | 战士 | 8611 | 0 | | 张飞 | 坦克 | 辅助 | 8341 | 100 | | 亚瑟 | 战士 | 坦克 | 8050 | 0 | | 吕布 | 战士 | 坦克 | 7344 | 0 | | 关羽 | 战士 | 坦克 | 7107 | 10 | | 花木兰 | 战士 | 刺客 | 5397 | 100 | +-----------+-----------+-------------+--------+--------+
作者回复:正确,结果也显示出来了。
2019-06-24
就是要避免全表扫描,所以我们会考虑在 WHERE 及 ORDER BY 涉及到的列上增加索引 ----------------------------------------------- where 条件字段上加索引是可以明白的,但是为什么 order by 字段上还要加索引呢?这个时候已经通过 where条件过滤得到了数据,已经不需要在筛选过滤数据了,只需要在排序的时候根据字段排序就好了。不是很明白
作者回复:这是一个很好的问题,关于ORDER BY字段是否增加索引: 在MySQL中,支持两种排序方式:FileSort和Index排序。Index排序的效率更高, Index排序:索引可以保证数据的有序性,因此不需要再进行排序。 FileSort排序:一般在内存中进行排序,占用CPU较多。如果待排结果较大,会产生临时文件I&#47;O到磁盘进行排序,效率较低。 所以使用ORDER BY子句时,应该尽量使用Index排序,避免使用FileSort排序。 当然具体优化器是否采用索引进行排序,你可以使用explain来进行执行计划的查看。 优化建议: 1、SQL中,可以在WHERE子句和ORDER BY子句中使用索引,目的是在WHERE子句中避免全表扫描,ORDER BY子句避免使用FileSort排序。 当然,某些情况下全表扫描,或者FileSort排序不一定比索引慢。但总的来说,我们还是要避免,以提高查询效率。 一般情况下,优化器会帮我们进行更好的选择,当然我们也需要建立合理的索引。 2、尽量Using Index完成ORDER BY排序。 如果WHERE和ORDER BY相同列就使用单索引列;如果不同使用联合索引。 3、无法Using Index时,对FileSort方式进行调优。
2019-06-24
讲师

陈旸

清华大学计算机博士

陈旸,清华大学计算机博士,“数据分析实战 45 讲”作者。前 IBM 中国研究院工程师。IEEE & ACM Member,中国人工智能协会成员,中国计算机协会 CCF 大数据专委。
编辑推荐
讲师的其他课程
数据分析实战 45 讲
陈旸
清华大学计算机博士

49讲 | 123944 人已学习

¥59¥129
包含这门课的学习路径

Java工程师

29门课程 154.7w人学习

测试工程师

18门课程 93.7w人学习

前端工程师

24门课程 109.3w人学习

Python工程师

19门课程 118.0w人学习

产品经理

13门课程 43.0w人学习
看过的人还看了
MySQL 实战 45 讲
林晓斌
网名丁奇,前腾讯云数据库负责人

49讲 | 224934 人已学习

¥68¥199
数据结构与算法之美
王争
前 Google 工程师

81讲 | 283803 人已学习

¥68¥199
编辑训练营
总编室
极客邦科技总编室

9讲 | 8401 人已学习

¥19.9
左耳听风
陈皓
网名“左耳朵耗子”,资深技术专家

119讲 | 180999 人已学习

¥98¥399
全栈工程师修炼指南
熊燚(四火)
Oracle 首席软件工程师

46讲 | 32212 人已学习

¥59¥99
如何看懂一幅画
罗桂霞
意大利罗马美术学院讲师、Amelia 当代艺术节创办人

24讲 | 6475 人已学习

¥59¥99