目录
我们可以修改auto_increment_offset和auto_increment_increment来改变自增的 起始值 和 每次自增的步长值,
unique表达的是字段必须唯一,但是允许字段为null(多次出现),而空值只能出现一次。
Mysql的两种存储引擎:MyISAM和InnoDB的区别和优缺点:(9条消息) MySQL两种存储引擎: MyISAM和InnoDB 的区别和优缺点_Data_IT_Farmer的博客-CSDN博客
Mysql的字段属性:
1、zerofill 填充0的作用
2、auto_increment 自增
我们可以修改auto_increment_offset和auto_increment_increment来改变自增的 起始值 和 每次自增的步长值,
auto_increment_offset和 auto_increment_increment被两个@@符号修饰,说明他们是系统变量
而我们自己如何定义变量呢?
如图所示,我们可以通过单个@符号来定义自己的变量(自定义变量),从而赋值再插入表格中
3、Default 默认值
如何修改默认值default呢?
如图所示,我们通过default 数据 定义了sore和sex的默认值,接下来我们插入数据,并查看表。
如果我们没有插入sore和sex的值,我们的默认值就会自动插入表格之中。
如果我们插入了sore和sex的值,那我们就会覆盖掉默认值并且插入表格中。
4、comment 加注释
如何给表格中的列添加注释呢?
我们可以在navicat或者SQLyog上查看到注释。
也可以给表添加注释
成功添加表格的注释。
5、unique 唯一性
在数据库中,unique 用于指定某个字段的值必须唯一,以保证数据的完整性和一致性。
unique表达的是字段必须唯一,但是允许字段为null(多次出现),而空值只能出现一次。
其中key中存在的PRI是表示主键的意思,而UNI表示unique、唯一性的意思。
主键不允许为空,也不需要重复
空值和NULL值有区别吗?
空值和NULL值有一定的区别。
空值表示一个字段没有被填写或者没有值,但是这个字段本身存在,可以被查询和修改。例如,一个人的身高,如果没有被填写,那么就是空值。
NULL值则表示一个字段根本就不存在,或者存在但是没有值。例如,一个人的电话号码,如果这个人没有电话,那么这个字段就是NULL值。
在数据库中,空值和NULL值的处理方式也略有不同。空值可以使用IS NULL或者IS NOT NULL进行查询,而NULL值只能使用IS NULL进行查询。在一些情况下,空值和NULL值可能会造成数据处理的困难,因此需要特别注意。
6、存储引擎
我们从上图可以看到,我们的存储引擎ENGINE为InnoDB。
什么是存储引擎呢?
我们或许可以从Mysql的体系结构中找到答案:
英文版:
中文版:
Mysql的存储引擎是指Mysql用于管理和存储数据的底层软件组件,它决定了Mysql如何处理数据的存储、检索、更新和删除。Mysql支持多种存储引擎,包括InnoDB、MyISAM、MEMORY、ARCHIVE等等。每个存储引擎都有其独特的特点和适用场景,如InnoDB适合于高并发、事务性的应用,MyISAM适合于读写比例较小的应用等等。选择合适的存储引擎可以提高Mysql的性能和可靠性。
查看mysql的存储引擎的种类:
什么是InooDB引擎呢?
InnoDB是MySQL数据库的一种存储引擎,它支持事务处理和外键约束,以及高并发性能。InnoDB的特点包括行级锁定、多版本并发控制、可靠性和可恢复性。它是MySQL默认的存储引擎,也是最常用的存储引擎之一。
school数据库里所有的文件:(它使用的是InnoDB引擎)
InnoDB中数据文件的结构:
其中我们存放数据文件的格式有:
因此我们的InnoDB是与我们的表相互捆绑的。
我们的InnoDB它的作用是:
Supports transactions, row-level locking, and foreign keys(支持事务、行级别锁定和外键)
外键:别的表里的主键到另外一共表里充当一个字段 --》这个字段在另外一个表里叫外键
我们还使用MyISAM引擎
什么是MyISAM引擎呢?
MyISAM是MySQL数据库中的一种存储引擎,它是MySQL最早的一种存储引擎,也是默认的存储引擎。
MyISAM引擎的作用是提供数据存储和检索的功能,它支持高效的读取操作,适用于读取频率比较高的应用场景。MyISAM引擎还支持全文索引和压缩等特性,可以提高数据检索的效率和占用空间的利用率。但是,MyISAM引擎不支持事务处理和行级锁定,因此在写入频率较高的情况下,可能会存在数据一致性的问题。
他的数据文件的结构:
什么是MEMORY引擎呢?
MEMORY引擎是MySQL数据库中的一种存储引擎,也称为HEAP引擎。它将表格数据存储在内存中,而不是存储在磁盘上。由于内存比磁盘更快,所以MEMORY引擎可以提供更快的数据访问速度。但是,由于数据存储在内存中,因此如果MySQL服务器关闭或崩溃,则数据将丢失。因此,MEMORY引擎通常用于临时表或缓存表。
临时表:
临时表只能在本机上看到,其他的访问都看不到,而且临时表没有导入磁盘之中,一但该会话结束(mysql进程结束),临时表就会被删除。临时表没有防止内存中,因此show tables;命令看不到,但是可以同select命令找到临时表,临时表是存放在缓存里面的。
什么是CSV引擎呢?
CSV存储引擎是一种数据库存储引擎,用于将数据存储为逗号分隔值(CSV)格式。CSV是一种简单的文本文件格式,可以用于存储结构化数据。CSV存储引擎可以将数据以CSV格式存储在磁盘上,并提供一组API来查询和修改数据。CSV存储引擎通常用于小型数据库,因为它们不支持高级查询和索引。但是,它们非常适合存储和管理简单的数据集,例如日志文件、配置文件和其他文本文件。(csv文件其中的数据用逗号分隔)(专门用来处理csv文件的)
我们如何指定存储引擎呢?
t7表格的数据文件:
Mysql的两种存储引擎:MyISAM和InnoDB的区别和优缺点:(9条消息) MySQL两种存储引擎: MyISAM和InnoDB 的区别和优缺点_Data_IT_Farmer的博客-CSDN博客
7、foreign keys 外键
什么是外键,优势是什么?
外键:别的表里的主键到另外一共表里充当一个字段 --》这个字段在另外一个表里叫外键
外键(Foreign Key)是用于建立表与表之间关系的一种约束性规则,它指定了一个表中的某个字段(或字段组合)必须是另一个表中的主键或唯一键。外键可以确保数据的完整性和一致性,同时也可以提高数据的查询效率和减少冗余数据的存储。
它支持表和表之间的连接--》连接查询 左连接 和 右链接。
外键的优势包括:
-
数据完整性:外键可以防止在关联表中插入无效数据,保证数据的完整性和一致性。
-
数据一致性:外键可以确保关联表中的数据一致,避免数据冗余和矛盾。
-
数据查询效率:外键可以加速数据的查询效率,特别是在多表关联查询时。
-
数据安全性:外键可以保护数据的安全性,防止数据的误删除或误修改。
-
数据可维护性:外键可以提高数据的可维护性,方便对数据进行修改和更新。
什么是约束呢?
数据的完整性:数据的正确性和一致性的集中体现
接下来我们来看看:
FOREING KEY 外键约束:
接下来我们先创建父表:
其实相当于:
定义主键的两种方式 :
我们通过观察information_schema.TABLE_CONSTRAINTS表,可以看到所有的表所对应的约束。
通过SQLyog打开information_schema.TABLE_CONSTRAINTS表。
information_schema库的解释:
information_schema库 是Mysql自带的库,我们可以将它理解为信息库,数据字典库,它保存着关于Mysql服务器所维护的所有其他数据库的信息(如数据库名,数据库的表,表栏的数据库类型与访问权限等)
数据字典: --》 存放元数据,用来描述其他数据的数据
接下来我们插入表数据
下面我们来建立子表:
创建子表:
在子表中插入数据:
如上图所示,出现了一共错误,原因是我将deptid设置为了100,因为它是dept表的外键,所以子表中的deptid能选取的值只能是在父表dept中存在deptid,否则的话就会报错。子表受到了父表的约束。
如果我们将父表里的deptid为10删除的话,他可不可以删除呢,会不会受到子表的约束呢。
如图所示,它不能删除,因此我们也可以判断父表也受到了子表的约束,他不能删除其中的有关于子表外键的信息。
总的来看,如下图所示: (父表与子表的约束关系)
父表中删除子表信息的选项:
1、ON_DELETE CASCADE
2、ON_DELETE SET NULL;
我们学习了外键,有什么作用呢?
多表的连接查询:
最常见的应用就是我们通过外键来实现多表连接查询:
完成实验!!