mysql的约束

本文介绍了数据库约束的概念,包括非空约束、唯一性约束、主键约束(单一和复合主键,主键自增)以及外键约束的详细解释和示例。非空约束确保字段不为空,唯一性约束保证字段值的唯一性,主键作为表的唯一标识,而外键用于建立表间的一对多关系。主键自增方便生成唯一的标识。外键约束确保数据完整性和参照完整性,但需要注意级联操作的影响。
摘要由CSDN通过智能技术生成

文章目录

目录

文章目录

约束的分类

   1,什么是约束?

   2,分类:

一、非空约束

二、唯一性约束

三、主键约束

1、含义

2、单一主键约束和复合主键

3、主键自增

四、外键约束

含义:

示例

注意:



约束的分类

   1,什么是约束?

            约束就是表中的限制条件。

   2,分类:

     列级约束:

          2.1 非空约束 not null

          2.2 唯一性约束 unique

      表级约束

          2.3主键约束约束 primary key

          2.4 外键约束 foreign key

一、非空约束

含义:约束的字段不能null,必须要有值。

示例:name varchar(20) not null

二、唯一性约束

含义:约束的字段不能有重复,但是可以为null。

示例:stu_id int unique;

三、主键约束

1、含义

1.给某个字段添加主键字段后,该字段不能为空且唯一。效果和not null unique相同,但是本质不同;主键字段还会默认添加索引-index'。

2. 一张表必须要有主键且只有一个,主键是表的唯一标识。即使两张表数据完全一样,但是主键值不一样,则认为两种表不同。

2、单一主键约束和复合主键

主键虽然只能有一个,但是一个主键可以添加多个字段,称为复合主键。给单一字段添加主键约束成为单一主键约束。

  示例一、单一主键约束

 create table student(
	 id int(10),
	 name varchar(32),
	 primary key(id)
);

或

 create table student(
	 id int(10)  primary key,
	 name varchar(32),
);

  示例二、复合主键约束

create table student(
     id int(10),
     name varchar(32),
     primary key(id,name)
     );
只有id 和 name 都重复才算重复

注意:复合主键只有主键中的所有字段都重复才算重复

3、主键自增

含义:auto_increment。自动从1开始生成主键值

示例:

 create table student(
	 id int(10)  primary key auto_increment,
	 name varchar(32),
);

四、外键约束

含义:

某个字段添加外键约束以后称为外键字段 外键字段中的每一个数据称为外键值。外键也有单一字段外键和复合外键。一张表中可以有多个外键字段。

示例

  1、什么时候需要用外键?

 在表中存在一对多关系的时候,使用外键。且是在多的一方添加外键。

  2、设计一个数据库用来描述学生和班级之间的关系

学生表(多),班级(一)。典型的一对多关系,可以在学生表中添加外键。

 CREATE TABLE class(
 cno int PRIMARY KEY,
 name VARCHAR(128) NOT NULL UNIQUE--非空约束、唯一性约束
 );
 
 CREATE TABLE student(
 stu_id int PRIMARY KEY,--主键约束
 name VARCHAR(32) NOT NULL,非空约束
 classno INT,-- 这里的值取至class表的cno。所以为这个字段添加外键约束。
 CONSTRAINT student_class_fk FOREIGN KEY(classno) REFERENCES class(cno)
 );

注意:

1、添加了外键约束的字段,添加数据的时候只能添加父表中已有的数据,否则会添加失败。

2、如果设置了级联,删除或者更新父表的数据,子表也会删除或者更新。如果没有设置,更新父表子表会更新;但是删除会失败。

3、如果子表中有数据,且该数据引用了父表中数据a,则不能删除父表中的数据a。可以将子表中的数据a设为null,解除关联可以删除。

4、无论父表、子表是否有数据,都不能删除父表,因为外键是表级约束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值