MYSQL中的数据库约束

数据库约束
1.表约束
在创建表时,设计约束条件,保证数据的合法性和正确性。
eg:主键约束,主码数据必须唯一;有的数据不能为空…
2.常见的表约束
在这里插入图片描述
1.创建表:字段名 字段类型 约束…
create table student(
id int primary key,
name varchar(250) unique,
math decimal(4,1) not null
);
2.show keys from table_name 可以查看这张表的所有约束。

注意 :
(1)not null非空约束可以有一个或多个
(2)unique 约束后此字段不可以重复,可以设置一个或多个(mysql中null表示‘没有’,加了unique约束可以加入多个null,但是‘null’是个字符,不可以加入多个‘null’,同理 ‘’ 表示空值,不能插入多个)
(3)primary key 主键约束,一个表的主键可以有一个或多个字段,不能为空且唯一 (unique +not null+不能插入空值‘’)
主键的写法:
a.id int primary key 单个主键
b.primary key(sno,sname) 联合主键或单个主键加在表后
联合主键多个字段只要有一个不重复就可以

*(4)primary key 和unique 的区别:
primary key 一个表中只能有一个,而unique可以有多个;
primary key不可以插入null,unique可以插入多个null。

(5)forigen key 用来关联其他表的主键(一个实体的某个字段为某个表的主键,这个实体就位当前表的外键)
语法:class_id int,
foreign key(class_id) reference student(class_id)
外键有主表和次表之分,可以插入多个null

eg:一个班级表(主表)和成绩表(次表),class_id为班级表的外键,为成绩白表的主键,如果我们要在成绩表中查询,我们首先要判断class_id是否在班级表中

(6)check 检查约束是保证列中的值符合指定的条件
语法:check(约束内容)
eg:check(sex=‘男’ or sex=‘女’);

(7)自增约束 auto_increment
(查看自增值:show create table table_name;)
语法:
create table student(
id int primary key auto_increment);
默认从1开始

手动指定自增值:
create table student(
id int primary key auto_increment)auto_increment=n;
(修改的值>当前已有数据值,否则不能生效)

手动修改自增值
alter table table_name auto_increment=n;
如果一个表的自增值增到100,你把10-100的字段删掉,此时自增值还是100,不会降到10,如果想让自增值回到10,就手动修改自增值

a.如果设置自增约束,还加入null,会自动用自增值代替null
如果有指定值,则插入的是指定值(可以手动指定值),如果指定值小于auto_increment的起始值,插入的还是指定值

eg:
如果学号为自增,设置第一个学号为100,则后面不设置学号则会一个一个+1
如果指定学号为null,则还是输出自增值
如果此时指定学号为100,则下一个自增值会变为101
如果再设置自增值为10,比101小,则输出为指定值10

b.使用时此字段必须是唯一的,eg:学号
必须配合key:primary key/forigen key/unique,才能创建成功

c.必须配合整数使用

d.一张表中只能有一个自增约束

e.删除操作:
delete:删除所有数据,自增值不会改变,不会被重置;
truncate:删除所有数据,自增值被重置。(删除所有数据,重新建的一张表,表的所有结构和约束没有改变,只是自增值被重置)

(8)默认约束default
语法:
字段 字段类型 约束条件
eg:
sex varchar(1) dafault ‘男’;
createtime datetime default;

也可以自动指定默认值

查看当前时间:show now();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值