运维开发网

MySQL数据库如何在表上设置约束的详细介绍

运维开发网 https://www.qedev.com 2022-07-26 20:37 出处:网络
约束主要完成对数据的检验,保证数据库数据的完整性;如果有相互依赖数据,保证该数据不被删除,本篇文章教你如何给表设置约束


约束主要完成对数据的检验,保证数据库数据的完整性;如果有相互依赖数据,保证该数据不被删除,本篇文章教你如何给表设置约束


一、PK(主键约束)


1、什么是主键?在了解主键之前,先了解一下什么是关键字关键字:在表中具有唯一性的字段,比如一个人的身份证号,学号。一个表中可以有多个关键字。主键也叫主关键字,就是由一个或多个关键字组成的,并且可以通过主键获得整个表的信息。比如订单表,通过订单编号可以获取到订单中的姓名,商品,价格等信息。

注意:关键字不一定是主键,主键一定是关键字。

特点:主键不能空,唯一,不能重复。一个表只有一个主键或没有主键,并且不能有多个主键。


2、怎么设置主键?

方法1:创建表时设置主键。

-- 建立User表CREATE TABLE User(User_id int NOT NULL,User_name VARCHAR(20),User_pwd VARCHAR(18),-- 在这里设置id为主键PRIMARY KEY(User_id))CREATE TABLE Users(-- 也可以在字段中直接设置主键User_id int NOT NULL PRIMARY KEY,User_name VARCHAR(20),User_pwd VARCHAR(18))

以上两种方法可以创建一个具有相同效果的主键。

方法二:创建表时不设置主键,然后在表中设置主键。

首先建一个没有设置主键的表CREATE TABLE User(User_id int NOT NULL,User_name VARCHAR(20),User_pwd VARCHAR(18))然后再设置主键

原理是在创建表
时在代码中添加主键(user _ id),与方法一中的第一个原理相同。

ALTER TABLE user ADD PRIMARY KEY(User_id)

原理是在User_id字段中添加主键
,与方法一中的第二个原理相同。

ALTER TABLE users MODIFY User_id INT PRIMARY KEY;


二、FK(外键约束)


1、什么是外键外键又叫外关键字,代表两个表直接的联系。一张表的外键一定是另一张表的主键,以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。比如订单表中包含了商品ID,用户ID两个外键。其中商品ID是商品信息表的主键,用户ID是用户表的主键。

注意:一个表中可能有多个外键,也可能没有外键。


2、怎么设置外键

方法1:创建表时设置外键约束。

在设置主键的基础上,比如之前创建了一个用户表,那么现在创建了一个订单表。

CREATE TABLE dingdan(DDid INT PRIMARY KEY NOT NULL,User_id INT NOT null,DDname VARCHAR(20) NOT NULL,-- 设置约束关系,dingdan表中的User_id 与 user表中的User_id表示的是同一个数据constraint fk FOREIGN KEY(User_id) REFERENCES user(User_id))

方法二:创建表时不设置主键,然后在表中设置主键。

alter table student add constraint stfk foreign key(stid) references teacher(tid)

注意:主外键关系建立后,主表中的数据不能随意删除。例如,如果订单中的一条数据包含某个用户,则不能从用户表中删除该用户的信息,否则会报错。


三、unique(唯一约束)


1、什么是唯一约束?

如果为字段设置了唯一约束,则不得写入该字段。如果写了,就不能重复。


2、如何设置唯一约束

或者创建一个用户表,这次表中有更多的邮箱字段。设置邮箱不能重复。

CREATE TABLE User(User_id int NOT NULL,User_name VARCHAR(20),User_pwd VARCHAR(18),User_Email VARCHAR(40) UNIQUE)


四、not null(非空)

这意味着该字段不能是空

接下来,编写上面的唯一约束。这里规定邮箱不仅不能重复,而且不能空

CREATE TABLE User(User_id int NOT NULL,User_name VARCHAR(20),User_pwd VARCHAR(18),User_Email VARCHAR(40) UNIQUE not null)


五、default(默认值)

意思是如果你不写,这个字段默认会给你一个值。

继续写上面的用户表,这里加一个性别字段。不写性别,默认为男性。

CREATE TABLE User(User_id int NOT NULL,User_name VARCHAR(20),User_pwd VARCHAR(18),User_gender enum('男','女') default '男')


六、auto_increment(自增)

自动递增的意思是自动递增,也就是说如果你没有填写这个字段的数据,系统会根据前面的数据自动加1。

一般用于身份证、号码

将用户表中的ID设置为自动递增。

CREATE TABLE User(User_id int auto_increment,User_name VARCHAR(20),User_pwd VARCHAR(18),User_gender enum('男','女') default '男')

注意:如果第一个数据没有填写,默认会给出一个值。因此,即使ID是主键,也不需要填写数据。

关于如何在MySQL数据库中对表设置约束的文章到此结束。有关在MySQL上设置约束的更多信息,请搜索以前关于SourceSearch.com的文章或继续浏览下面的相关文章。我希望你以后能更多地支持SourceSearch.com!


0

精彩评论

暂无评论...
验证码 换一张
取 消