Mysql - Mysql的字段属性(存储引擎、外键)

目录

Mysql的字段属性:

1、zerofill   填充0的作用

 2、auto_increment   自增

我们可以修改auto_increment_offset和auto_increment_increment来改变自增的 起始值 和 每次自增的步长值,

而我们自己如何定义变量呢?

3、Default  默认值

如何修改默认值default呢?

4、comment  加注释

如何给表格中的列添加注释呢?​编辑

 5、unique  唯一性

unique表达的是字段必须唯一,但是允许字段为null(多次出现),而空值只能出现一次。

空值和NULL值有区别吗?

6、存储引擎

什么是存储引擎呢?

什么是InooDB引擎呢?

什么是MyISAM引擎呢?

什么是MEMORY引擎呢?

什么是CSV引擎呢?

我们如何指定存储引擎呢? 

Mysql的两种存储引擎:MyISAM和InnoDB的区别和优缺点:(9条消息) MySQL两种存储引擎: MyISAM和InnoDB 的区别和优缺点_Data_IT_Farmer的博客-CSDN博客

7、foreign keys 外键

什么是外键,优势是什么?

外键的优势包括:

什么是约束呢? 

FOREING KEY 外键约束:

接下来我们先创建父表:

information_schema库的解释:

下面我们来建立子表:

总的来看,如下图所示: (父表与子表的约束关系)

父表中删除子表信息的选项:

多表的连接查询:


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)是用于建立表与表之间关系的一种约束性规则,它指定了一个表中的某个字段(或字段组合)必须是另一个表中的主键或唯一键。外键可以确保数据的完整性和一致性,同时也可以提高数据的查询效率和减少冗余数据的存储。

它支持表和表之间的连接--》连接查询  左连接 和 右链接。

外键的优势包括:

  1. 数据完整性:外键可以防止在关联表中插入无效数据,保证数据的完整性和一致性。

  2. 数据一致性:外键可以确保关联表中的数据一致,避免数据冗余和矛盾。

  3. 数据查询效率:外键可以加速数据的查询效率,特别是在多表关联查询时。

  4. 数据安全性:外键可以保护数据的安全性,防止数据的误删除或误修改。

  5. 数据可维护性:外键可以提高数据的可维护性,方便对数据进行修改和更新。

什么是约束呢? 

数据的完整性:数据的正确性和一致性的集中体现

接下来我们来看看:

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;

我们学习了外键,有什么作用呢?

多表的连接查询:

最常见的应用就是我们通过外键来实现多表连接查询:

完成实验!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值