mysql中restrict的含义是什么

69次阅读
没有评论

共计 3489 个字符,预计需要花费 9 分钟才能阅读完成。

本篇内容介绍了“mysql 中 restrict 的含义是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让丸趣 TV 小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

在 mysql 中,restrict 是约束的意思,是指对表中数据的一种限制,能够帮助数据库管理员更好地管理数据库,并且能够确保数据库中数据的正确性、有效性和完整性。MySQL 支持 6 种约束:主键约束、外键约束、唯一约束、检查约束、非空约束和默认值约束。

MySQL 中什么是约束?

restrict(约束)是指对表中数据的一种限制,能够帮助数据库管理员更好地管理数据库,并且能够确保数据库中数据的正确性、有效性和完整性。

例如,在数据表中存放年龄的值时,如果存入 200、300 这些无效的值就毫无意义了。因此,使用约束来限定表中的数据范围是很有必要的。

MySQL 中的约束就是用来检测数据正确性和合理性的,一般的错误有:1,存在相同重复的数据;2,错误的数据;3,数据丢失错误 (空数据);4,指代不明确的错误(表之间无法准确联系起来) 等。

MySQL 的约束就是用来解决上述问题的,比如身份证号不能重复,收货地址不能空。如果违反了约束,则数据操作行为被制止。

在 MySQL 中,主要支持以下 6 种约束:

1)主键约束

主键约束是使用最频繁的约束。在设计数据表时,一般情况下,都会要求表中设置一个主键。

主键是表的一个特殊字段,该字段能唯一标识该表中的每条信息。例如,学生信息表中的学号是唯一的。

2)外键约束

外键约束经常和主键约束一起使用,用来确保数据的一致性。

例如,一个水果摊,只有苹果、桃子、李子、西瓜 4 种水果,那么,你来到水果摊要买水果只能选择苹果、桃子、李子和西瓜,不能购买其它的水果。

3)唯一约束

唯一约束与主键约束有一个相似的地方,就是它们都能够确保列的唯一性。与主键约束不同的是,唯一约束在一个表中可以有多个,并且设置唯一约束的列是允许有空值的,虽然只能有一个空值。

例如,在用户信息表中,要避免表中的用户名重名,就可以把用户名列设置为唯一约束。

4)检查约束

检查约束是用来检查数据表中,字段值是否有效的一个手段。

例如,学生信息表中的年龄字段是没有负数的,并且数值也是有限制的。如果是大学生,年龄一般应该在 18~30 岁之间。在设置字段的检查约束时要根据实际情况进行设置,这样能够减少无效数据的输入。

5)非空约束

非空约束用来约束表中的字段不能为空。例如,在学生信息表中,如果不添加学生姓名,那么这条记录是没有用的。

6)默认值约束

默认值约束用来约束当数据表中某个字段不输入值时,自动为其添加一个已经设置好的值。

例如,在注册学生信息时,如果不输入学生的性别,那么会默认设置一个性别或者输入一个“未知”。

默认值约束通常用在已经设置了非空约束的列,这样能够防止数据表在录入数据时出现错误。

以上 6 种约束中,一个数据表中只能有一个主键约束,其它约束可以有多个。

操作表的约束

1、给一张表添加主键约束

一张表的只能有一个主键,添加主键有两种方式。

        单一主键:使用一个列作为主键列,当该列的值有重复时,则违反唯一约束。

        联合主键:使用多个列作为主键列,当多个列的值都相同时,则违反唯一约束。指的是:使用多个列的组合形式来确定主键,当出现组合重复就无效,如 00,01,10,11,12,22 这样的组合形式。

使用 DDL 语句添加主键约束。示例:

ALTER TABLE  表名  ADD PRIMARY KEY(列名);
alter table emp add primary key(employee_id);// 选取 employee_id 作为主键
alter table emp add primary key(employee_id,shenfen_id);// 联合主键

2、给一张表添加自增长主键约束

auto_increment。数据库管理系统自动维护表时自动加上的主键,利用自然数自增的方式确定主键。同样的,自增长主键也是把某一列用作主键。当表中添加了主键的字段增加了数据,则主键自动加 1。

自增长主键和一般主键约束可以相互转化。

1,一个表中只能有一个列为自动增长。2,自动增长的列的类型必须是整数类型。3,自动增长只能添加到具备主键约束与唯一性约束的列上。4,删除主键约束或唯一性约束,如果该列拥有自动增长能力,则需要先去掉自动增长然后在删除约束。

        注意点:如果之前给某个字段添加了自增长属性,则删除这个字段时要先删除自增长属性。

alter table  表名  modify  主键   类型  auto_increment;
alter table emp modify employee_id int auto_increment;

或者在 Navicat 中添加主键:

mysql 中 restrict 的含义是什么

3、删除一张表中的主键约束

使用 DDL 语句删除主键。

ALTER TABLE  表名  DROP PRIMARY KEY;
alter table emp drop primary key;

        注意:删除主键时,如果主键列具备自动增长能力,需要先去掉自动增长,然后在删除主键。

alter table emp modify employee_id int;// 去掉自增长,与添加自增长代码地区别就是没有 auto_increament
alter table emp drop primary key;

4、给一张表添加外键约束

使用 DDL 语句添加外键约束。可以给一张表设置多个外键。

ALTER TABLE  表名  ADD CONSTRAINT  约束名  FOREIGN KEY(列名) REFERENCES  参照的表名(参照的列名);
alter table emp add constraint emp_fk
foreign key(dept_id) references
departments(department_id);

或在在 Navicat 中添加外键。外键名称常使用:表名_fk,表名_fk1 表示。

mysql 中 restrict 的含义是什么

5、删除一张表的外键约束

        使用 DDL 语句删除外键约束。或者在 Navicat 中主动删除外键。

ALTER TABLE  表名  DROP FOREIGN KEY  约束名;
alter table emp drop foreign key emp_fk;

mysql 中 restrict 的含义是什么

6、给表中某字段添加唯一性约束

使用 DDL 语句添加唯一性约束。或在在 Navicat 中添加唯一性约束。

ALTER TABLE  表名  ADD CONSTRAINT  约束名  UNIQUE(列名);
alter table emp add constraint emp_uk unique(name);

mysql 中 restrict 的含义是什么

7、删除表中某字段的唯一性约束

使用 DDL 语句删除唯一性约束。删除之前需要弄清楚删除的约束名是对哪一个字段进行约束的。

ALTER TABLE  表名  DROP KEY  约束名;
alter table emp drop key emp_uk;

8、给表中某个字段添加非空约束

使用 DDL 语句添加非空约束。或者 Navicat。

ALTER TABLE  表名  MODIFY  列名   类型  NOT NULL;
alter table emp modify salary float(8,2) not NULL;

mysql 中 restrict 的含义是什么

9、删除表中某个字段的非空约束

使用 DDL 语句删除非空约束。

ALTER TABLE  表名  MODIFY  列名   类型  NULL;
alter table emp modify salary float(8,2) NULL;

mysql 中 restrict 的含义是什么

创建表的时候添加约束

上面介绍了当一张表已经存在之后如何添加约束。下面介绍在一开始新建表的时候如何添加约束。

1、查询表中加了哪些约束?

 SHOW KEYS FROM  表名;

2、创建表时添加约束

        创建 depts 表包含 department_id 该列为主键且自动增长,department_name 列不允许重复,location_id 列不允含有空值。

create table depts
department_id int primary key auto_increment,
department_name varchar(30) unique,
location_id int not null;
);

“mysql 中 restrict 的含义是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注丸趣 TV 网站,丸趣 TV 小编将为大家输出更多高质量的实用文章!

向 AI 问一下细节

丸趣 TV 网 – 提供最优质的资源集合!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2024-02-03发表,共计3489字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)