linux下设置mysql的表约束、三范式(暂时未写)、事务的回滚、视图

表约束

一、设置非空约束(NOT NULL)

数据库字段的某个值是否可以为空,NULL 字段值可以为空,NOT NULL 字段值不能为空。
当字段设置为非空时,添加数据就必须要插入值,否则就会报错
在这里插入图片描述
在这里插入图片描述

二、唯一约束(UNIQUE)

字段添加唯一约束之后,该字段的值不重复,也就是该字段的值在该表中唯一unique key

添加唯一约束
ALTER TABLE tbl_name ADD [CONSTRAINT[symbol]]
UNIQUE [INDEX|KEY] [index_name] [index_type]
(index_col_name)

删除唯一约束
ALTER TABLE tbl_name DROP {INDEX|KEY} index_name

在这里插入图片描述

三、主键约束(PRIMARY KEY)

主键保证记录的唯一性,主键自动为 NOT NULL, 每张数据表只能存在一个主键

添加主键约束
ALTER TABLE tbl_name ADD [CONSTRAINT[sysbol]]
PRIMARY KEY [index_type] (index_col_name)
删除主键约束
ALTER TABLE tbl_name DROP PRIMARY KEY

在这里插入图片描述

四、自增约束(AUTO_INCREMENT)

AUTO_INCREMENT 自动编号,且必须与主键组合使用,默认情况下,起始值为1,每次的增量为1。

添加自增约束:
ALTER TABLE `user` CHANGE `id` `id` INT NOT NULL AUTO_INCREMENT;
删除自增约束:
ALTER TABLE `user` CHANGE `id` `id` INT NOT NULL ;

在这里插入图片描述

五、默认约束(DEFAULT)

DEFAULT(默认约束) 初始值设置,插入记录时,如果没有明确为字段赋值,则自动赋予默认值

ALTER TABLE  tbl_name  ALTER  [COLUMN] col_name
 {SET DEFAULT literal | DROP DEFAULT}

在这里插入图片描述
在这里插入图片描述

六、创建表的时候使用约束

在这里插入图片描述

七、外键约束(FOREGIN)

添加格式:

ALTER TABLE yourtablename   #需要添加外键的表
ADD [CONSTRAINT 外键名] FOREIGN KEY [id] (index_col_name, ...)
REFERENCES tbl_name  (index_col_name, ...)
[ON DELETE {CASCADE | SET NULL | NO ACTION | RESTRICT}]
[ON UPDATE {CASCADE | SET NULL | NO ACTION | RESTRICT}]
CASCADE    删除包含与已删除键值有参照关系的所有记录
SET NULL   修改包含与已删除键值有参照关系的所有记录,使用NULL值替换(只能用于已标记为NOT NULL的字段)
RESTRICT   拒绝删除要求,直到使用删除键值的辅助表被手工删除,并且没有参照时(这是默认设置,也是最安全的设置)
NO ACTION  啥也不做

创建条件:

数据表的存储引擎只能为InnoDB(如果不修改,默认就是这个)
外键列和参照列数据类型一致
外键必须关联到主键上面去

在这里插入图片描述
创建学院表:
在这里插入图片描述
创建学生表,为学生表添加外键:
在这里插入图片描述
向学院表和学生表中添加数据:
在这里插入图片描述
尝试删除主表(学院表)中外键关联的数据(d_id),由于设置的格式(ON DELETE)为(SET NULL),学院表中的学院3被删除,但学生表中的学生’xiaolv’没有被删除,而是解除了与学院3的绑定,变为NULL,后续可以重新绑定新的学院
在这里插入图片描述
创建学生详细信息表:
在这里插入图片描述
向学生详细信息表内插入数据:
在这里插入图片描述
尝试删除学生表中的一行:
由于学生详情表中外键绑定方式为’ON DELETE CASCADE’,不但学生表中的s_id=3的学生被删掉,学生详情表中的sd_id=3的学生也会被删掉。
在这里插入图片描述
创建课程表:
在这里插入图片描述
创建学生课程中间表:
在这里插入图片描述
向学生课程中间表插入数据:
在这里插入图片描述

约束,即对表数据的约束,除了外键约束,其他的都是对表自身数据的约束,外键约束是对其他表的约束。

事务的回滚

数据库事务(transaction)是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。

简单来说:几个操作是绑定在一起的,要么都做完,要么一个都不做
在这里插入图片描述
BEGIN 打断点;
ROLLBACK 退回到断点;
COMMIT 提前结束;

注意:ROLLBACK不能退回到删除表之前的状态,即删除后不能进行回滚。
在这里插入图片描述

视图

作用:
三范式让表查询变得复杂,对于常用的数据查询,反复写复杂的查询语句十分不方便,因此可以创建一个虚拟的表(不存数据),这个虚拟表的数据来源于数据库中存在的其他表,虚拟表的数据来源就在定义时给定
创建视图之前的查询表操作:
在这里插入图片描述
创建视图的操作:
在这里插入图片描述
创建视图之后的查询表操作:
在这里插入图片描述
删除视图的操作:
在这里插入图片描述
删除该视图之后继续访问该视图会报错:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

哈希True

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

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

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

打赏作者

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

抵扣说明:

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

余额充值