当前位置:   article > 正文

mysql数据库约束和默认_数据库默认约束

数据库默认约束

目录

约束:

1.null/not null约束

2.unique约束(唯一约束)

3.primary key约束(主键约束)

4.foreign key约束(外键约束)

5.check约束

默认:default


约束:

1.null/not null约束

null约束:字段可以为null、空

not null约束:字段不能为null、空

在数据库中字段默认为null,如果设置为not null,则在插入时必须写入数据否则报错。

  1. -- 测试数据
  2. CREATE TABLE student (
  3.   id INT NOT NULL,
  4.   sn INT,
  5.   name VARCHAR(20),
  6.   qq_mail VARCHAR(20)
  7. );

在插入:insert into student values (null,1,'张三',1234);
        则会报:ERROR 1048 (23000): Column 'id' cannot be null
在插入:insert into student(sn) values(1);
        则会报:ERROR 1364 (HY000): Field 'id' doesn't have a default value


2.unique约束(唯一约束

unique约束:代表该字段值不能相同

举例:sn字段都插入3时,则会报:ERROR 1062 (23000): Duplicate entry '3' for key 'sn'

注意若字段值为null时可以重复


3.primary key约束(主键约束

主键约束:可以唯一标识一条数据。(换种说法:利用主键可以精准定位到一条数据

比如:一个身份证号就可以当做主键,因为通过身份证号就能准确找到一个人的信息。

主键约束 = not null + unique约束,并且一张表中只允许有一个主键。

1.主键约束不能为null

2.主键约束不能重复

3.在mysql中,如果是整型主键还可以使用auto_increment(mysql关键字)从1开始自增,此时主键就可以不用插入,他会从1开始自动插入。(auto_increment会从数据库记录的最大值开始+1)


4.foreign key约束(外键约束

外键约束:用来设计表与表的关系,表1(主表:主键)——表2(从表:外键),通过外键来建立(连接)表与表的关系

1.外键的取值范围:是主表主键的取值范围
比如:一张班级表:主键为班级id,班级id插入1班,2班,3班,那么你学生表中的外键就只能取值为 1班,2班,3班。(就好比学校开了1,2,3班,有个学生说他是4班的,这不合适吧.....)

2.在主表中主键不能重复,但是在从表中外键是可以重复的
比如:你还是班级表(主表)有三个班级id(主键)不能重复,但是学生表(从表)中班级id(外键)是可以重复的,多个学生对应一个班级。

3.关系中一对多还是一对一是有方向的。一个学生对应一个班级(学生到班级1对1),一个班级有多个学生(班级到学生1对多)

举例:设计一个学生表和班级表
语法格式:
-- 格式:foreign key(外键名) references 主表(主表的主键)

  1. -- 表的设计
  2. -- 班级表
  3. DROP TABLE IF EXISTS class;
  4. CREATE TABLE class (
  5.   id INT PRIMARY KEY auto_increment, -- 班级主键
  6.   name VARCHAR(20) -- 班级名称
  7. );
  8. insert into class
  9. values(1,'一班'),
  10. (2,'二班');
  11. -- 学生表
  12. DROP TABLE IF EXISTS student;
  13. CREATE TABLE student (
  14.   id INT PRIMARY KEY auto_increment, -- 学生主键
  15.   name VARCHAR(20), -- 学生名称
  16. class_id int, -- 外键名
  17. -- 格式:foreign key(外键名) references 主表(主表的主键)
  18. foreign key(class_id) references class(id) -- 外键
  19. );
  20. insert into student
  21. values(11,'张三',1), -- 外键只能取主表中主键的1,2
  22. (12,'李四',2),
  23. (13,'王五',2);

结果:


 

5.check约束

check约束:用来检查字段值所允许的范围。

比如:你规定分数字段的值在0-100之间,当插入的数据为200时,则会报错。

mysql忽略check语句的功能(写不写都一样,不生效)


默认:default

某个字段设置了default及default值,那么在插入数据时给该字段赋值,则该字段会自动赋default值。若插入数据时,给该字段插入了值,那么该字段则为插入值,而不是default值

注意:null也可以插入到默认字段中。

1.未在该字段插入值,则自动插入default值

2.在该字段插入确定值,则为确定值

3.在该字段插入null,则为null值

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/458907
推荐阅读
相关标签
  

闽ICP备14008679号