MySQL增删查改进阶

发布于:2025-05-15 ⋅ 阅读:(15) ⋅ 点赞:(0)


一、数据库备份

在MySQL当中,数据库是如何备份的呢?主要通过三种方式进行备份:

  1. 数据库最终都是存储在硬盘上,以文件的形式体现的。数据涉及到一个工作目录,工作目录就会存在些文件,文件中包含了数据库这些数据,只不过这些文件都是用二进制形式进行存储的。这里可以直接把这里的文件拷贝放到别的机器上,这些数据存储在文件当中也会被拷贝一份挪到其他机器上完成数据库的备份。这里属于全量备份。
  2. MySQL中存在一个工具叫mysqldump工具,这是mysql自带的程序,会把你的mysql中的数据导出成一系列的insert语句,然后再把这些insert语句,放到另一个mysql中进行执行。
  3. mysql还具有binlog功能,这个功能主要把MySQL当中的各种操作都通过日志来记录下来。而数据库的备份可以通过binlog让另一个数据库按照binlog的内容执行,也就能得到一样的数据。这里主要涉及的是增量备份/实时备份。这里两个观念可以详情看一下小编推荐的两篇文章。

大家有兴趣也可以去查看一些文章,这里小编简单讲解一下,也可以去看一下小编所看的
①、MySQL数据库的备份与恢复【完整备份、增量备份、差异备份】,
②、超详细讲解:数据库的备份与数据恢复方法举例与说明(完全备份、差异备份、增量备份)


二、数据库约束

有时候数据库中的数据是存在一定要求的。例如你有一个学生表,里面存在一个性别选项,但是性别填写的时候只能填写男或者女。所以在数据库中有些数据是合法的,有些数据是不合法的,那么该怎么进行限制呢?这就需要数据库约束条件了。
在数据库中自动的对数据的合法性进行校验值检查的一系列机制,目的就是为了保证数据库能够避免被插入/修改一些非法的数据。主要存在以下几种约束。

关键字 作用说明
NOT NULL 指定某一列不能存储NUll值
UNIQUE 保证某列的每行必须有唯一的值
DEFAULT 规定没有给列赋值时的默认值
PRIMARY KEY NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
FOREIGN KEY 保证一个表中的数据匹配另一个表中的值的参照完整性。
CHECK 保证列中的值符合指定的条件。对于MySQL数据库,对CHECK子句进行分析,但是忽略CHECK子句。

2.1 NOT NULL

这个其实很好理解,大家都有填写过表格吧,表格上存在填写和不填写,NOT NULL其实跟这个一样的,只要值后面约束这个条件,就必须要填写不能为空。

MySQL操作

  1. 没有加约束条件的表
create table student(id int,name varchar(20)); //创建一个学生表
insert into student values(null,null); //假如两个空值
select * from student;

在这里插入图片描述
此时在这里看到表中可以存储空值的。

  1. 加约束条件NOT NULL的表
create table student(id int NOT NULL,name varchar(20) NOT NULL); //在每个列名定义后加上约束
insert into student values(null,null);
insert into student values(null,'张飞');
insert into student values(1,null);
select * from student;

在这里插入图片描述
在这里可以看到在在id和名字后面都加上不为空约束的时候,此时在往表中存储数据为空的时候是存储不了,并且会被报错的。

2.2 UNIQUE:唯一约束

unique在英文的意思是独特的,特有的,同样的在sql当中这也是独特的,也就是代表约束的这一列的值是不能存在相同存在的。简单的来讲,就是世界上没有一片叶子是相同的。

MySQL操作

  1. 没有加约束条件的表
    在这里插入图片描述
    在这里小编所写的代码可以看到,在创建表的时候并没有给约束条件,然后同时添加三个相同信息的数据,然后再查询表的时候就可以发现表中三个数据存储的是一摸一样的,但是每个人的信息都是不同的,怎么可能你是王五,他也是王五信息身份证号还一样,那不是世界都乱套了嘛。

  2. 加约束条件Unique的表

create table student(id int unique,name varchar(20));
insert into student values(1,'张飞');
insert into student values(1,'张飞');
select * from student;

在这里插入图片描述
在这里可以看到添加两个相同数据id的时候,这时候是存储不进去,这是因为id被unique进行约束了,所以相同的id也就在这个列中只能存储一份而不能存储多份相同的,就跟人的身份证一样,一个人对应一个身份证信息。

注意:
当你存入这个值的时候,后面假如要修改这个被unique约束的列,如果该列存储你要修改的,那么就会报错。
在这里在假如id为2的数据叫做关羽,后面想要修改关羽的id为1的时候是不能修改的,因为张飞对应的id为且这列被unique约束,所以这列是不能存在相同的值的。
在这里插入图片描述

unique约束,会让后续插入数据/修改数据的时候都先触发一次查询操作。通过这个查询,来确定当前的这个记录是否存在。所以数据库引入约束之后,执行的效率就会受到影响,导致效率就会降低很多。

2.3 DEFAULT:默认值约束

这个default在之前的内容就小编就简单概述一下。这里详细讲解一下,default代表的是默认值,也就是当你进行查看指定表结构的时候它的默认值,如下:
在这里插入图片描述
也就是说id和name这两个列,如果你不进行赋值操作,那么它默认的值就是null。那么在这里学习默认值约束就是想要约束,如果在实际过程中,不进行赋值,那么是否可以给他默认值为一个你想要的值呢?当然是可以的。

MySQL操作

create table student(id int,name varchar(20) default '未定义');
insert into student(id) values(2);
select * from student;

在这里插入图片描述
此时对name进行默认值约束,在name未定义的时候默认值写上未定义,此时在使用表插入数据为对name进行赋值,那么name就会显示未定义。在这里再查看student表的结构,也是可以发现默认值 现在从原先的null变成了未定义。
在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到