Mysql列的完整性约束最详细教程之一——详解

这篇具有很好参考价值的文章主要介绍了Mysql列的完整性约束最详细教程之一——详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言

一、主键约束

1.设置字段的主键约束(PRIMARY KEY,PK)

1.单字段主键

2.多字段主键

二、设置表字段的外键约束

1.简介

2.语句格式

三、设置表字段的非空约束(NOT NULL, NK)

1.简介

2.语句格式

四、设置字段值自动增加(AUTO_INCREMENT)

 1.语句格式

  2.实际应用

五、设置表字段的默认值(DEFAULT)

六、调整列的完整性约束

1. 主键PK、外键FK和 唯一键UK

(1).新增

alter table [table_name] add constraint [constraint_name] [unique key| primary key|foreign key] ([column_name])

(2).删除

(3).修改

(4).修改默认值DEFAULT、自增长和非空NK


✨✨✨大家好,我是会飞的鱼-blog,今天我来给大家介绍一下Mysql,有不足之处,请大家多多指教。感谢大家支持!!!

Mysql列的完整性约束最详细教程之一——详解

 

前言

        完整性约束条件是对字段进行限制,要求用户对该属性进行的操作符合特定的要求。如果不满足完整性约束条件,数据库系统将不再执行用户的操作。MySQL中基本的完整性约束条件如表3-11所示。下表是完整性约束条件:

Mysql列的完整性约束最详细教程之一——详解


一、主键约束

1.设置字段的主键约束(PRIMARY KEY,PK)

        主键是表的一个特殊字段,能唯一标识该表中的每条信息。主键和记录的关系,如同身份证和人的关系。主键用来标识每个记录,每个记录的主键值都不同。身份证用来表明人的身份,每个人都具有唯一的身份证号。设置表的主键是指在创建表时设置表的某个字段为该表的主键。

        主键的主要目的是帮助数据库管理系统以最快的速度查找到表的某一条信息。主键必须满足的条件就是主键必须是唯一的,表中任意两条记录的主键字段的值不能相同,并且是非空值。主键可以是单一的字段,也可以是多个字段的组合。

1.单字段主键

        单字段主键的语法规则如下:

CREATE TABLE tablename(

    propName propType PRIMARY KEY, ......

);

CREATE TABLE tablename(

    propName propType , ......

PRIMARY KEY(propType)

);

        创建表school,设置id字段为PK约束,再查看class表信息,SQL语句如下

mysql> create database school;   #创建数据库school

mysql> use school;   #选择数据库school

mysql> create table class(id int PRIMARY KEY, name varchar(128), teacher varchar(64));         #创建表class

mysql> desc class ;  #查询表class 的定义, describe class 效果等同

mysql> show create table class ;  #同样可以实现查询表class 的定义

mysql> insert into class VALUES(1,'一班','martin');  #插入成功

mysql> insert into class VALUES(1,'二班','rock');    #因主键约束,插入失败

Mysql 支持给主键设置名字:

CREATE TABLE tablename(

    propName propType , ......

CONSTRAINT pk_name PRIMARY KEY(propType)

);

给id字段的PK约束设置一个名字,可以执行SQL语句CONSTRAINT。创建表class:

mysql> create database school;   #创建数据库school

mysql> use school;   #选择数据库school

mysql> create table class(id int , name varchar(128), teacher varchar(64), CONSTRAINT id_pk PRIMARY KEY (id));         #创建表class

mysql> desc class ;  #查询表class 的定义, describe class 效果等同

mysql> show create table class ;  #同样可以实现查询表class 的定义

mysql> insert into class VALUES(1,'一班','martin');  #插入成功

mysql> insert into class VALUES(1,'二班','rock');    #因主键约束,插入失败

2.多字段主键

主键是由多个属性组合而成时,在属性定义完之后统一设置主键。语法规则如下:

CREATE TABLE tablename( 

    propName1 propType ,

    propName2 propType ,

    ......                    

[CONSTRAINT pk_name]PRIMARY KEY(propName1, propName2)

);

多字段主键的设置。

mysql> create database school;   #创建数据库school

mysql> use school;   #选择数据库school

mysql> create table class3(id int, name varchar(128), teacher varchar(64), CONSTRAINT id_pk PRIMARY KEY(id,name));         #创建表class3,设置联合主键

mysql> desc class3 ;  #查询表class3 的定义, describe class3 效果等同

mysql> insert into class VALUES(1,'一班','martin');  #插入成功

mysql> insert into class VALUES(1,'一班','rock');    #因联合主键约束,插入失败

二、设置表字段的外键约束

1.简介

        外键是表的一个特殊字段,外键约束是为了保证多个表(通常为两个表)之间的参照完整性,即构建两个表的字段之间的参照关系。

        设置外键约束的两个表之间具有父子关系,即子表中某个字段的取值范围由父表决定。例如,表示一个班级和学生关系,即每个班级有多个学生。首先应该有两个表:班级表和学生表,然后学生表有一个表示班级编号的字段no,其依赖于班级表的主键,这样字段no就是学生表的外键,通过该字段班级表和学生表建立了关系。

  • 一个班级表:

ID

名称

班主任

101

六年级一班

tiger老师

102

六年级二班

王老师

班级表主键 <ID>

每一行对应着一个班级,而一个班级对应着多个学生,所以班级表和学生表的关系就是“一对多”:

ID

姓名

班级ID

性别

年龄

1

小花

101

M

9

2

小红

102

F

8

3

小军

102

M

8

4

小白

101

F

9

班级表<ID> 为学生表<班级ID >的外键

        在具体设置FK约束时,设置FK约束的字段必须依赖于数据库中已经存在的父表的主键,同时外键可以为空(NULL)。

2.语句格式

        设置表中某字段的FK约束非常简单,可以在MySQL数据库管理系统中通过SQL语句FOREIGN KEY来实现,其语法形式如下:

CREATE TABLE tablename_1( 

    propName1 propType ,

    propName2 propType ,

    ......                    

[CONSTRAINT fk_name] FOREIGN KEY(propName1) REFERENCES table2_name(table2_column)

);

        其中,tablename_1参数是要设置外键的表名,propName1参数是要设置外键的字段,table2_name是父表的名称,table2_column是父表中设置主键约束的字段名。

mysql> use school;   #选择数据库school

mysql> create table class(id int PRIMARY KEY, name varchar(128), teacher varchar(64));         #创建表class

mysql> desc class ;  #查询表class 的定义, describe class 效果等同

mysql> create table student (id int PRIMARY KEY AUTO_INCREMENT, name varchar(64) NOT NULL, class_id int, sex enum('M','F'), FOREIGN KEY(class_id) REFERENCES class(id) );  #创建表student, class_id 为表class id 字段的外键

mysql> insert into student(name, class_id, sex) values('小红', 2, 'M');   #插入记录,主键自增长

mysql> insert into student(name, sex) values('小军', 'M');   #插入记录,允许外键为空

三、设置表字段的非空约束(NOT NULL, NK)

1.简介

        当数据库表中的某个字段上的内容不希望设置为NULL时,可以使用NK约束进行设置。NK约束在创建数据库表时为某些字段上加上“NOT NULL”约束条件,保证所有记录中的该字段都有值。如果在用户插入的记录中该字段为空值,那么数据库管理系统会报错。

2.语句格式

        设置表中某字段的NK约束非常简单,查看帮助文档可以发现,在MySQL数据库管理系统中是通过SQL语句NOT NULL来实现的,其语法形式如下:

CREATE TABLE tablename(

    propName propType NOT NULL , ......

);

如:

mysql> create database school;   #创建数据库school

mysql> use school;   #选择数据库school

mysql> create table class(id int, name varchar(128) NOT NULL, teacher varchar(64));         #创建表class

mysql> desc class ;  #查询表class 的定义, describe class 效果等同

mysql> show create table class ;  #同样可以实现查询表class 的定义

        检验数据库school中的class表中字段classno是否被设置为NK约束,执行SQL语句DESCRIBE,具体如下:

Mysql列的完整性约束最详细教程之一——详解

四、设置字段值自动增加(AUTO_INCREMENT)

        AUTO_INCREMENT是MySQL唯一扩展的完整性约束,当向数据库表中插入新记录时,字段上的值会自动生成唯一的ID。在具体设置AUTO_INCREMENT约束时,一个数据库表中只能有一个字段使用该约束,该字段的数据类型必须是整数类型。由于设置AUTO_INCREMENT约束后的字段会生成唯一的ID,因此该字段也经常会同时设置成PK主键。

 1.语句格式

        设置表中某字段值的自动增加约束非常简单,可以在MySQL数据库管理系统中通过SQL语句AUTO_INCREMENT来实现,其语法形式如下:

CREATE TABLE tablename(

    propName propType AUTO_INCREMENT, ......

);

        在上述语句中,tablename参数表示所要设置非空约束的字段名字,propName参数为属性名,propType为属性类型,propName字段要设置自动增加约束。默认情况下,字段propName的值从1开始增加,每增加一条记录,记录中该字段的值就会在前一条记录(或已存在的最大值(包括曾经存在的))的基础上加1。
 

  2.实际应用

mysql> create database school;   #创建数据库school

mysql> use school;   #选择数据库school

mysql> create table class(id int PRIMARY KEY AUTO_INCREMENT, name varchar(128) UNIQUE, teacher varchar(64));         #创建表class,设置字段id为自增长

mysql> show create table class ;  #查询表class 的定义

注意: mysql8 中,AUTO_INCREMENT 必须设为键(主键、外键和唯一键均可)! 否则会报错!

五、设置表字段的默认值(DEFAULT)

        当为数据库表中插入一条新记录时,如果没有为某个字段赋值,数据库系统就会自动为这个字段插入默认值。为了达到这种效果,可通过SQL语句关键字DEFAULT来设置。

        设置数据库表中某字段的默认值非常简单,可以在MySQL数据库管理系统中通过SQL语句DEFAULT来实现,其语法形式如下:

CREATE TABLE tablename(

    propName propType DEFAULT defaultvalue, ......

);

六、调整列的完整性约束

1. 主键PK、外键FK和 唯一键UK

(1).新增

alter table [table_name] add constraint [constraint_name] [unique key| primary key|foreign key] ([column_name])

(2).删除

         通过如下命令查询键值的约束名:

 show index或keys from 表名;    

        执行如下命令删除:

主键:alter table 表名 drop primary key;

外键或唯一键:  alter table 表名 drop index 约束名;

(3).修改

        按照上述步骤 先执行 删除 然后再 新增 即可!

(4).修改默认值DEFAULT、自增长和非空NK

        使用如下语法重新定义列即可:

alter table 表名 modify 列名 类定义;

mysql> create database school;   #创建数据库school

mysql> use school;   #选择数据库school

mysql> create table class(id int PRIMARY KEY AUTO_INCREMENT, name varchar(128) UNIQUE, teacher varchar(64));         #创建表class,设置字段id为自增长

mysql> alter table class modify teacher varchar(64) DEFAULT ‘Martin’ NOT NULL ;  #设置默认值和非空

mysql> alter table class modify teacher varchar(64) ; #取消默认值和非空

总结

        ✨✨✨以上就是我学习的总结,希望大家一起探讨、探讨,一起加油,迈向更好的明天!!!文章来源地址https://www.toymoban.com/news/detail-442452.html


到了这里,关于Mysql列的完整性约束最详细教程之一——详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 软件测试|MySQL主键约束详解:保障数据完整性与性能优化

    简介 主键(PRIMARY KEY)的完整称呼是“主键约束”,是 MySQL 中使用最为频繁的约束。一般情况下,为了便于 DBMS 更快的查找到表中的记录,都会在表中设置一个主键。 MySQL是一种广泛使用的开源关系型数据库管理系统,其支持多种数据约束,其中主键约束是其中最重要的之一

    2024年02月02日
    浏览(48)
  • 软件测试/测试开发/全日制|MySQL主键约束详解:保障数据完整性与性能优化

    简介 主键(PRIMARY KEY)的完整称呼是“主键约束”,是 MySQL 中使用最为频繁的约束。一般情况下,为了便于 DBMS 更快的查找到表中的记录,都会在表中设置一个主键。 MySQL是一种广泛使用的开源关系型数据库管理系统,其支持多种数据约束,其中主键约束是其中最重要的之一

    2024年02月19日
    浏览(57)
  • 5.4 完整性约束命名子句

      定义 : 完整性约束是在 CREATE TABLE 语句中定义的。 SQL为 CREATE TABLE 语句提供了 CONSTRAINT 子句,用于对完整性约束进行命名。 命名的目的是方便增加或删除约束。 基本结构 : 其中,完整性约束条件可以是NOT NULL、UNIQUE、PRIMARY KEY、FOREIGN KEY、CHECK等。 示例 : 学生登记表 Student

    2024年02月06日
    浏览(43)
  • MySQL数据库完整性

    数据库的完整性是指数据的正确性和相容性。 数据的正确性是指数据符合现实世界语义,反映当前实际情况;数据的相容性是指数据库在同一对象的不同关系表中的数据是符合逻辑的。 数据的完整性:为了防止数据库中存在不和语义的数据 数据的安全性:为了保护数据库防

    2024年02月15日
    浏览(44)
  • MySQL开发技巧——查询、索引和完整性

     目录 第1关 基本查询的学习 查询语句SELECT 头歌实验 查询语句SELECT 第2关 深入学习查询语句 MySQL聚集函数 头歌实验 MySQL聚集函数 第3关 视图的创建和使用 查看数据库中表的情况: 头歌实验 第4关 索引和完整性 索引 头歌实验 索引 数据完整性 域完整性 实体完整性 参照完整

    2024年02月08日
    浏览(38)
  • 【MySQL事务】保证数据完整性的利器

    事务: 事务就是将多个SQL给打包在一起,组成一个整体。组成这个整体的各个SQL,要么全部成功,要么全部失败。 举例说明: 情人节到了,滑稽老铁打算给他女朋友小美发给红包,但是他又害怕小美不收,于是他想到了一个办法就是通过银行卡进行转账。他给小美转账了

    2024年02月08日
    浏览(40)
  • 【MySQL】数据库完整性和安全性

    目录   一、完整性 1.概念 2.sql语言支持的两种约束     2.1静态约束          撤销追加约束          断言     2.3动态约束           触发器 二、安全性 用DBMS对数据库实现的两个特性  1.概念 指dbms保证的db的一种特性,在任何情况下的正确性、有效性、一致性 原理图

    2023年04月24日
    浏览(89)
  • MySQL修炼手册11:事务处理:确保数据的一致性与完整性

    在探索数据管理的世界中,理解如何在数据库中使用事务处理,无疑是一项关键的能力。在处理复杂的数据库操作,尤其是在你试图在多个表或数据库中更新数据时,事务可以确保这些更改具有原子性、一致性、隔离性和持久性,即ACID。因此,掌握事务对任何数据库专业人员

    2024年01月21日
    浏览(78)
  • 信号完整性(SI)电源完整性(PI)学习笔记(一)信号完整性分析概论

    信号完整性分析概论 1.信号完整性(SI):指在高速产品中由互联线引起的所有问题;研究当互联线与数字信号的电压电流波形相互作用时,其电气特性如何影响产品的性能,SI又叫信号波形失真。 2.电源完整性(PI):指为有源器件供电的互联线及各相关元件上的噪声;PDN(

    2024年02月04日
    浏览(51)
  • 信号完整性与电源完整性分析-Eric Bogatin

    第一章 信号完整性概论 1-任何一段互联,无论线长和形状,也无论信号的上升边如何,都是一个由信号路径和返回路径构成的传输线。信号在互联前进的每一步,都会感受到瞬时阻抗。若阻抗恒为常量,信号质量就会优良 2-信号网络不仅包括信号路径,还包括信号电流的返回

    2024年02月06日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包