学习MySQL_02


主键约束


主键又称主码,是表中一列或者多列的组合。主键约束要求主键列的数据唯一,并且不允许为空。主键能够唯一标识表中的一条记录,可以结合外检来定义不同数据表之间的关系,并且可以加快数据库的查询速度。

单字段主键

主键由一个字段组成,设置主键的SQL语句格式分为两种情况:

  • 定义列的同时定义主键

    字段名 数据类型 PRIMARY KEY;

    在这里插入图片描述

    在这里插入图片描述

  • 在定义完所有列之后指定主键

    在这里插入图片描述


多字段主键

主键由多个字段联合组成:

PRIMARY KEY[字段1,字段2,··· 字段n]

在这里插入图片描述



外键约束


外键用来在两个表的数据之间建立连接,它可以是一列或者多列。一个表可以有一个或者多个外键。

外键是一个表的字段,可以不是本表的主键,但是应该对应另一个表的主键。

外键的作用:保证数据引用的完整性。

外键的创建及使用

就是将一个表的字段关联到另一个表的主键

创建方式:

首先要有一个数据表,如下

在这里插入图片描述

然后建立一个从表,让它的字段关联表tb_1的主键

在这里插入图片描述


查看数据表结构


使用DESCRIBE可以查看表的结构:

DESCREBE db_2;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w3yWSH7k-1669023115199)(%E5%AD%A6%E4%B9%A0MySQL_02%20b3f5940655934156a563cc7e387848d7/Untitled%206.png)]

查看表的详细结构:

SHOW CREATE TABLE <表名\G>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YDCZhK4G-1669023115199)(%E5%AD%A6%E4%B9%A0MySQL_02%20b3f5940655934156a563cc7e387848d7/Untitled%207.png)]


修改数据表


修改表名:

ALTER TABLE <旧表名> RENAME <新表名>;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V3LN44j0-1669023115200)(%E5%AD%A6%E4%B9%A0MySQL_02%20b3f5940655934156a563cc7e387848d7/Untitled%208.png)]


修改字段数据类型

ALTER TABLE <表名>MODIFY<字段名> <数据类型>;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7kcT42OO-1669023115200)(%E5%AD%A6%E4%B9%A0MySQL_02%20b3f5940655934156a563cc7e387848d7/Untitled%209.png)]


修改字段名

ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mMAIra66-1669023115201)(%E5%AD%A6%E4%B9%A0MySQL_02%20b3f5940655934156a563cc7e387848d7/Untitled%2010.png)]


添加字段

  • 直接添加一个新的字段

    ALTER TABLE <表名> ADD <新字段名> <数据类型>;

  • 在指定字段后添加字段

    ALTER TABLE <表名> ADD <新字段名> <数据类型> AFTER <字段名>;

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f9PB0wIZ-1669023115201)(%E5%AD%A6%E4%B9%A0MySQL_02%20b3f5940655934156a563cc7e387848d7/Untitled%2011.png)]


删除字段


将表中某个字段删除

ALTER TABLE <表名> DROP <字段名>;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kK9mlj60-1669023115202)(%E5%AD%A6%E4%B9%A0MySQL_02%20b3f5940655934156a563cc7e387848d7/Untitled%2012.png)]


数据表的其他操作


修改字段排序

ALTER TABLE <表名> MODIFY <字段1> <数据类型> FIRST;

ALTER TABLE <表名> MODIFY <字段1> <数据类型> AFTER <字段2>;

字段1是指要修改位置的字段,数据类型是指字段1 的数据类型,FIRST 为可选参数,是将字段1修改为表的的第一个字段,AFTER 字段2 是指将字段1 插入到字段2 的后面。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aLBVsCnE-1669023115202)(%E5%AD%A6%E4%B9%A0MySQL_02%20b3f5940655934156a563cc7e387848d7/Untitled%2013.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ukMoz91D-1669023115203)(%E5%AD%A6%E4%B9%A0MySQL_02%20b3f5940655934156a563cc7e387848d7/Untitled%2014.png)]


更改表的存储引擎


ALTER TABLE <表名> ENGINE=<更改后的存储引擎名>;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xerx0mVO-1669023115203)(%E5%AD%A6%E4%B9%A0MySQL_02%20b3f5940655934156a563cc7e387848d7/Untitled%2015.png)]

当前表的存储引擎为 InnoDB


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0u7DJkjo-1669023115204)(%E5%AD%A6%E4%B9%A0MySQL_02%20b3f5940655934156a563cc7e387848d7/Untitled%2016.png)]

修改后存储引擎为MyISAM;


删除数据表

删除没有被关联的表

在MySQL中可以使用DROP TABLE 删除一个或者多个表;

DROP TABLE db_2;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-crlRE1om-1669023115204)(%E5%AD%A6%E4%B9%A0MySQL_02%20b3f5940655934156a563cc7e387848d7/Untitled%2017.png)]

删除之前数据库中存在的表

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mTGYPFtG-1669023115205)(%E5%AD%A6%E4%B9%A0MySQL_02%20b3f5940655934156a563cc7e387848d7/Untitled%2018.png)]

执行删除语句之后的数据库中的表。


删除被其他表关联的主表

上面我们已经创建了一个关联的表,tb_2的字段(tb_2Id)关联tb_1的主键(id)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ACiICeEJ-1669023115205)(%E5%AD%A6%E4%B9%A0MySQL_02%20b3f5940655934156a563cc7e387848d7/Untitled%2019.png)]

此时如果直接删除父表tb_1是行不通的,所以需要先解除约束

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4GZm4QgP-1669023115206)(%E5%AD%A6%E4%B9%A0MySQL_02%20b3f5940655934156a563cc7e387848d7/Untitled%2020.png)]

解除约束:ALTER TABLE tb_2 DROP FOREIGN KEY tb12;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dnE8a1yj-1669023115206)(%E5%AD%A6%E4%B9%A0MySQL_02%20b3f5940655934156a563cc7e387848d7/Untitled%2021.png)]

此时,就可以删除主表了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b3wV1QAy-1669023115206)(%E5%AD%A6%E4%B9%A0MySQL_02%20b3f5940655934156a563cc7e387848d7/Untitled%2022.png)]

语句执行成功了,下面看一下数据库中的数据表

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-StuaLsyv-1669023115207)(%E5%AD%A6%E4%B9%A0MySQL_02%20b3f5940655934156a563cc7e387848d7/Untitled%2023.png)]

tb_1果然被删除了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

17丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值