以下为在开源组织Datawhale开展的MySQL学习的记录
系列链接:
一: 1.MySQL软件安装及服务器设置
可以在windows和linux上安装, 安装的步骤详见 菜鸟教程
2.使用图形界面软件 Navicat for SQL
- Navicat For SQL 下载地址 Navicat,
- 破解下载地址, [Navicat patch] (https://github.com/DoubleLabyrinth/navicat-keygen/releases)
- 破解操作步骤: 说明
注: 建议使用正版。
3.数据库基础知识
a.数据库定义
存储数据的存储仓库,以结构化形式存储的系统。
b.关系型数据库
- 关系型数据库, 是指采用关系模型来数组数据的数据库.
- 关系模型指的就是二维表。
- 关系型数据库的产品: Oracle、SQL Server、MySQL等
c.二维表
- 二维表就是由行和列组成.
d.行
- 表的行Row 是 一行的数据,别名叫记录Record.
e.列
- 表的列Column 是一列的数据, 别名叫字段 Filed.
f.主键
- 主建是为表中某个字段的值不能重复而设置的,一个数据表只能有一个主键,数据库底层使用该字段作为唯一索引,能快速检索数据。
g.外键
- 外键是用于关联两个字段元素的,或者是关联两个表的不同字段。 一般的,表B的字段b作为外键,关联表A的字段a.
4. MySQL数据库管理系统
a.数据库
- MySQL 是开源的关系型数据库管理系统
b.数据表
- 见上面的 【二维表】
c.视图
- 视图是基于 SQL 语句的结果集的可视化的表。
- 视图包含行和列, 不是真实存在的
d.存储过程
- 存储过程Procedure是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行。
- 存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数、输出参数、返回单个或多个结果集以及返回值。
v- 存储过程在创建时即在数据库服务器上- 例子:
具体的详见 MySQL官网文档
二: MySQL 基础 (一)查询语句
1. 查询语句 SELECT FROM
语法
select distinct * from email where name = {'value1'} limit {num} offset {bnum}
去重语句: distinct
前N个语句: limit {num}
limit 是限制返回行数的个数, offset是设置偏移量
2. 筛选语句 WHERE
语法
select distinct * from email where name = {'value1'} limit {num}
运算符 : name = {'value1'}
还有其他运算符, >, <, =, in , not in 等等
3.分组语句 GROUP BY
语法
select distinct * from email group by name having by count(*) > 1
HAVING子句, 一般与group by 一起使用, 用于过滤使用
4. 排序语句 ORDER BY
语法
select * from email order by id asc| desc
正序为asc、逆序为desc
5. SQL注释
6. 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 查询,查找 Person 表中所有重复的电子邮箱。
根据以上输入,你的查询应返回以下结果:
a@b.com |
说明:所有电子邮箱都是小写字母。
简答:
结果:
项目二:查找大国(难度:简单)
创建如下 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 |
简答:
结果:
参考资料
[SQL 必知必会] https://u18036366.pipipan.com/fs/18036366-300877816
[MySQL 教程] http://www.runoob.com/smysql/mysql-tutorial.html
额外的参考资料:
虚拟机安装Linux https://blog.csdn.net/yang5726685/article/details/78635388
Windows 10下 MySQL https://cloud.tencent.com/developer/article/1010608
Windows 安装 MySQL 常见问题 https://blog.csdn.net/qq_40942329/article/details/79125366
1.2 - MySQL 基础 (一)查询语句
导入示例数据库,教程 https://www.yiibai.com/mysql/how-to-load-sample-database-into-mysql-database-server.html
引用
- https://blog.csdn.net/huang_yx/article/details/80221259
- https://www.cnblogs.com/suncan0/p/4735129.html
- http://www.runoob.com/mysql/mysql-tutorial.html
- https://dev.mysql.com/doc/refman/8.0/en/introduction.html
- https://www.cnblogs.com/xiangzhong/p/5038338.html
- https://www.cnblogs.com/mark-chan/p/5384139.html
PS: 若你觉得可以、还行、过得去、甚至不太差的话,可以“关注”一下,就此谢过!