表的约束1

1.列级约束

create table student(-- 列级约束
sno int(6) primary key auto_increment, --  主键 自增
name varchar(10) not null,-- 非空
sex char(1) default"男" check(sex="男"||sex="女"),-- 默认值   check约束
age int(2) check(age>18&&age<50),
enterdate date,
classname varchar(10),
email varchar(16) UNIQUE -- 唯一
);

insert into student values(1,"张三","男",23,"1999/12/12","java","xxxvv.com");
insert into student values(null,"张三","男",23,"1999/12/12","java","xxxaavv.com");-- 这里的null并不代表主键为空,而是占位的意思(注意:主键可以自增)
insert into student values(default,"李四",null,23,"1999/12/12","java","lxxaavv.com");-- 性别可以为空,可以不指定性别
insert into student (name,email)values("王五","xwddw.onm");-- 没有给予性别时,性别就是默认值
select * from student;

在这里插入图片描述
2.表级约束

create table student(--  表级约束
sno int(6) auto_increment,
name varchar(10) not null,
sex char(1) default"男" ,
age int(2),
enterdate date,
classname varchar(10),
email varchar(16),
constraint pk_stu primary key(sno),
constraint ck_stu_sex check(sex="男"||sex="女"),
constraint ck_stu_age check(age>=18&&age<=60),
constraint uk_stu_email  unique(email)
);

3.第三种约束方式

create table student(
sno int(6) ,
name varchar(10) not null,
sex char(1) default"男" ,
age int(2),
enterdate date,
classname varchar(10),
email varchar(16)
);
alter table student add constraint pk_stu_sno primary key(sno);
alter table student ADD constraint ck_stu_sex check(sex="男"||sex="女");
alter table student  add constraint ck_stu_age check(age>18&&age<50);
alter table student add constraint uk_stu_email unique(email);
alter table student modify sno int(6) auto_increment;
desc student

表的结构如图
在这里插入图片描述
4.注意
(1)默认值约束与非空约束,只能使用列级约束。
(2)自增约束(AUTO_INCREMENT)可以使表中某个字段的值自动增加。一张表中只能有一个自增长字段,并且该字段必须定义了约束该约束可以是主键约束、唯一约束以及外键约束),如果自增字段没有定义约束,数据库则会提示“Incorrect table definition; there can be only one auto column and it must be defined as a key”错误。
(3)由于自增约束会自动生成唯一的ID,所以自增约束通常会配合主键使用,并且只适用于整数类型。一般情况下,设置为自增约束字段的值会从1开始,每增加一条记录,该字段的值加1。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值