之后会陆续有MySQL的文章推出来,一部分是以任务的形式展示,还有一部分是以知识普及的形式展示。任务形式的展示要感谢datawhale的帮助,是他们让我开始用CSDN进行知识分享。也希望之后能够在这里写下更多的其他分享文章。
SQL任务1
此部分知识范围
因为本身已经对SQL有一定了解,所以不在这里展开。之后会专门在SQL知识普及中进行介绍。欢迎关注!
1.数据库基础知识
数据库定义
关系型数据库
二维表
行
列
主键
外键
2.MySQL数据库管理系统
数据库
数据表
视图
存储过程
-
SQL是什么?MySQL是什么?
-
查询语句 SELECT FROM
语句解释
去重语句
前N个语句
CASE…END判断语句 -
筛选语句 WHERE
语句解释
运算符/通配符/操作符 -
分组语句 GROUP BY
聚集函数
语句解释
HAVING子句 -
排序语句 ORDER BY
语句解释
正序、逆序 -
函数
时间函数
数值函数
字符串函数 -
SQL注释
-
SQL代码规范
[SQL编程格式的优化建议] https://zhuanlan.zhihu.com/p/27466166
[SQL Style Guide] https://www.sqlstyle.guide/
作业
项目一:查找重复的电子邮箱(难度:简单)
创建 email表,并插入如下三行数据
Id | |
---|---|
1 | a@b.com |
2 | c@d.com |
3 | a@b.com |
编写一个 SQL 查询,查找 Email 表中所有重复的电子邮箱。
根据以上输入,你的查询应返回以下结果:
a@b.com |
说明:所有电子邮箱都是小写字母。
一种解决方法是:
还有一种解决方法:
很显然第二种方法在写法上就复杂了很多。这告诉我们,能够使用group by的话,就可以考虑是不是能够进一步用上having,尤其是我们需要groupy by之后的结果作为筛选条件的时候。
项目二:查找大国(难度:简单)
创建如下 World 表
name | continent | area | population | gdp |
---|---|---|---|---|
Afghanistan | Asia | 652230 | 25500100 | 20343000 |
Albania | Europe | 28748 | 2831741 | 12960000 |
Algeria | Africa | 2381741 | 37100000 | 188681000 |
Andorra | Europe | 468 | 78115 | 3712000 |
Angola | Africa | 1246700 | 20609294 | 100990000 |
如果一个国家的面积超过300万平方公里,或者(人口超过2500万并且gdp超过2000万),那么这个国家就是大国家。
编写一个SQL查询,输出表中所有大国家的名称、人口和面积。
例如,根据上表,我们应该输出:
name | population | area |
---|---|---|
Afghanistan | 25500100 | 652230 |
Algeria | 37100000 | 2381741 |
解法如下: