MySQL数据库(五)

目录

一、数据库的约束

1.1 约束类型

1.1.1 null约束

1.1.2unique约束

1.1.3default默认值约束

1.1.4primary key主键约束

1.1.5foreign key外键约束

二、内容重点总结


一、数据库的约束

1.1 约束类型

not null - 指示某列不能存储 null值。
unique - 保证某列的每行必须有唯一的值。
default - 规定没有给列赋值时的默认值。
primary key - not null unique 的结合。确保某列(或两个列多个列的结合)有唯一标
识,有助于更容易更快速地找到表中的一个特定的记录。
foreign key - 保证一个表中的数据匹配另一个表中的值的参照完整性。

1.1.1 null约束

创建表时,可以指定某列不为空:

create table student (
        id int not null,
        sn int,
        name varchar(20),
        email varchar(20)
);

当我们插入空值的时候会发生错误,这就是null约束

1.1.2unique约束

指定列为唯一的、不重复的

--将student删除重新构造表结构

drop table student;

create table student(
        id int not null,
        sn int unique,
        name varchar(20),
        email varchar(20)
);

 插入一条数据,在sn中插入一条重复的数据,看看能否插入成功

这里发现不能插入重复值

 这里发现,虽然不能重复,但是是可以为空值的

1.1.3default默认值约束

当插入数据的时候,列为空的时候,插入指定的默认值

-- 重新设置学生表结构
drop table student;
create table student (
         id int not null,
         sn int unique,
         name varchar(20) default 'kown',
         email varchar(20)
 );

下面进行插入看看姓名为空的一个效果,发现当我的列为空的时候会插入自定义的值

1.1.4primary key主键约束

相当于uniquenot null的结合,不重复也不能为空

-- 重新设置学生表结构
drop table student;

create table student (
         id int primary key,
         sn int unique,
         name varchar(20) default 'kown',
         email varchar(20)
);

插入数据查看效果,当前表中有一条数据

当插入重复的数据之后发现直接就报错了,说明不能插入重复的数据

同时,当插入数据的时候id为空时就会报错,所以说明不能为空

对于整数类型的主键,常配搭自增长auto_increment来使用。插入数据对应字段不给值时,使用最大值+1

当插入值的时候并没有插入id的值 由于设置了自增长所以会有一个自增的值。

1.1.5foreign key外键约束

外键用于关联其他表的主键或唯一键,语法:

foreign key (字段名) references 主表(列)

案例:

  • 创建班级表classes,id为主键

-- 创建班级表,有使用MySQL关键字作为字段时,需要使用``来标识
 create table classes (
         id int primary key auto_increment,
         name varchar(20),
         `desc` varchar(100)  
--``这个符号是数字esc下面的那个符号
 );

对班级表插入数据

  • 创建学生表student,一个学生对应一个班级,一个班级对应多个学生。使用id为主键,classes_id为外键,关联班级表id

-- 重新设置学生表结构
create table student (
        id int primary key auto_increment,
        sn int unique,

        classes_id int,
        name varchar(20) default 'unkown',

        foreign key(classes_id) references classes(id)

        --注意外键约束可以有多个
 );

由于学生表的classes_id是被班级表的id约束的,所以插入的过程中如果插入班级表中没有的班级是会报错的,但是班级表中含有的班级就不会。

 当插入一个班级表中没有的数据的时候就会报错。

classes表对student有一个约束作用,同时student对classes表也存在约束作用,当要删除classes表时会发现删除不掉!这里的显示意思就是说该表存在约束别人的条件不能进行删除

 要删除classes表应该怎么办呢,只能先删除student表

二、内容重点总结

约束类型 说明 示例
NULL约束 使用NOT NULL指定列不为
name varchar(20) not null,
UNIQUE唯一约束 指定列为唯一的、不重复的 name varchar(20) unique,
DEFAULT默认值约
指定列为空时的默认值 age int default 20,
主键约束 NOT NULL 和 UNIQUE 的
结合
id int primary key,
外键约束 关联其他表的主键或唯一键 foreign key (字段名) references 主
表(列)

猜你喜欢

转载自blog.csdn.net/x2656271356/article/details/131807133