MySQL进阶

本文深入探讨数据库操作,涵盖基础操作、分页、链接查询、自关联、数据库设计原则如范式及E-R模型,详解MySQL与Python交互,演示SQL演练及数据操作实战,适合数据库设计与操作初学者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

基础操作

分页

链接查询

 自关联

数据库设计

范式 

E-R模型

MySQL与Python交互

准备数据

SQL演练 

数据操作演练:拆分为多个表

外键 

Python操作MySQL步骤

查询一行数据 

用面向对象的思想查询“京东”数据库数据 

 增删改操作


 

 

基础操作

分页

链接查询

当查询结果的列来源于多张表时,需要将多张表连接成一个大的数据集,再选择合适的列返回MySQL支持的三种类型的连接查询,分别是:

  • 内连接查询。查询的结果为两个表匹配到的数据

  • 右连接查询。查询的结果为两个表匹配到的数据,右表特有的数据,对于左表不存在的数据使用null填充

  • 左连接查询。查询的结果为两个表匹配到的数据,左表特有的数据,对于右表不存在的数据使用null填充

  • 语法:select * from 表1 inner/right/left join 表2 on 表1.列 = 表2.列

数据库现在有下面两张表

一、内连接

 将两个表内连接

 上面查询的结果有两列相同的班级ID,仅保留一列

 只显示学生名字和所在班级的查询

像上面的操作命令,反复的写表的名很长,可以给表AS一个别名 

 

二、左连接 

以左边的表为基准,右边表中找不到的对应的值就以null填充

在下面的例子中,我们利用左连接的查询结果做查询,使用having

如果是在原表中进行查询的话使用where 

 三、右连接

右连接不经常使用,若使用的话,也是采用左连接的办法,把左右两边的数据表调换以下位

 自关联

在一个数据表中,其中的一列关联着另外一个

常用场景:省市县选择、公司领导部门员工管理

创建一个表:

向表中导入SQL文件,第一步,在终端中切换到SQL文件的位置下;第二步,输入下图命令

 

第三步,选择一个数据库,查看数据表,输入下图命令。应该注意导入的表与数据库现有的表名字一致

查找一共有多少个省份直辖市

 查找山东省有多少个市

接着查找青岛市有多少个区

像上面的查询,加入我们的需求是要查询青岛市有多少个区,就要像上面分成好多步查询

那么有没有一步到位的查询方法呢

我们先想一想内查询的方法,假设城市为一个表,区县为一个表,采用内连接的办法。城市的每一个数据都有一个城市ID,区县的每一个数据也有自己对应的城市ID。

 

下面查询山东省有多少个市

济南市有多少个区

数据库设计

在开发中有很多设计数据库的软件,常用的有power designer、db designer等,这些软件可以直观的看到实体与实体之间的关系

范式 

三范式

一般需要遵守三范式即可

第一范式1NF normal form

强调的是列的原子性,列不能再分成其他列

 第二范式2NF

首先要满足1NF,再包含两个部分,一是表必须要有一个主键,二是没有包含主键中的列必须完全依赖于主键,而不能只依赖主键的一部分

第三范式3NF

首先满足2NF,另外,非主键列必须直接依赖于主键,不能存在传递依赖。

 

最终表 

E-R模型

e表示entry实体,设计实体就像定义一个类,指定从哪些方面描述对象,一个实体转换为数据库中的一个表

r表示relationship关系,关系是描述两个实体之间的对应规则,关系的类型包括一对一,一对多,多对多

关系也是一种数据,需要通过一个字段存储在表中

实体A对实体B为1对1,则在表A或表B中创建一个字段,存储另一个表的主键值

实体A对实体B为1对多,在表B中创建一个字段,存储表A的主键值

实体A对实体B为多对多,新建一张表C,这个表只有两个字段,一个用于存储A的主键值,一个用于存储B的主键值

MySQL与Python交互

准备数据

 

注意:在插入数据的时候,每一列的值要和创建表时候的类型和约束相一致

SQL演练 

 

 用到了自查询

 

 接着上面的例子,笔记本中最贵的是4999.下面我们插入一个老王电脑,价格也为4999

 上图的结论是对的,就像在商场中同价位的不同品牌产品很正常

把上图中分开的两个笔记本信息放在一起

数据操作演练:拆分为多个表

外键 

下面来了解一下外键的概念

首先做一下数据准备 

看一下两个表的描述信息,在cata_name和另一个表中的id,可以看到type是不一样,把第一个表中的cate_name更改一下 

改之后,type变为一致的了 

如下图,我们在商品表中加入了一行记录,类型 为12.但是在类型表中没有ID为12的记录

 

 拆分品牌表

 

查看表约束

58到家  公司对数据库的规范 

Python操作MySQL步骤

 

查询一行数据 

用面向对象的思想查询“京东”数据库数据 

有一个“JD”数据库,实现:用户可以根据自己的需求来选择查询数据库中的数据

 

 

运行结果:

 

 增删改操作

对上面的例子进行添加一个信息的操作,部分代码:

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值