非空约束 not null
确保字段中的数据不为空
语法:
create table 表名(
字段1名称 数据类型 not null [别的约束],
字段2名称 数据类型 [约束],
……,
字段n名称 数据类型 [约束]
);
示例:创建表ystest0111001,包含字段id(整型),cname(字符串,长度为8,非空),age(浮点型,总长度为6,小数点后面保留2位小数),ctime(日期类型),并且给id字段加上主键约束,
create table ystest0111001(
id int primary key,
cname char(8) not null,
age float(6,2),
ctime datetime
);
select * from ystest0111001;
insert into ystest0111001(id,cname) values(2,null);
insert into ystest0111001(id,cname) values(2,'');
update ystest0111001 set cname=null;
练习:创建数据表stu_006,包含字段:id为整型,sno为整型,sname为字符串,长度为24,score字段为浮点型,整数部分长度为3,小数点后面保留2位小数,createtime为 时间格式,sno设置为主键,分别将id设置为唯一键,sname不能为空
create table stu_006(
id int unique,
sno int primary key,
sname char(24) not null,
score float(5,2),
createtime datetime
);
select * from stu_006;
insert into stu_006(id,sno,sname) values(2,2,'null');
默认值约束 default
在向表中插入数据时,如果没有明确的给字段具体的值,数据库会自动给该字段添加创建表时设置好的默认值
语法:
create table 表名(
字段1名称 数据类型 default '给的默认值' [别的约束],
字段2名称 数据类型 [约束],
……,
字段n名称 数据类型 [约束]
);
注意:
1、给字段设定的默认值一定要跟该字段的数据类型一致
2、除了数字类型外,字符串和日期必须用引号引起来
示例:创建表ystest0111002,包含字段id(整型),cname(字符串,长度为8,非空),age(浮点型,总长度为6,小数点后面保留2位小数,默认值为18),ctime(日期类型),并且给id字段加上主键约束,
create table ystest0111002(
id int primary key,
cname char(8) not null,
age float(6,2) default 18,
ctime datetime
);
select * from ystest0111002;
insert into ystest0111002(id,cname,age) values(3,3,null);
练习:创建数据表stu_008,包含字段:id为整型,sno为整型,sname为字符串,长度为24,score字段为浮点型,整数部分长度为3,小数点后面保留2位小数,createtime为 时间格式,sno设置为主键,分别将id设置为唯一键,sname不能为空,默认值为“张三”
create table stu_008(
id int unique,
sno int primary key,
sname char(24) not null default '张三',
score float(5,2),
createtime datetime
);
select * from stu_008;
insert into stu_008(id,sno) values(1,1);
insert into stu_008(id,sno,sname) values(3,3,null);
insert into stu_008(id,sno,sname) values(3,3,'wyb');
自增约束 auto_increment
被定义为自增的字段,在插入值的时候如果没有给他指定具体的值,那么它将在上一次插入值的基础上+1
注意:
1、被定义为自增的字段,必须被定义为一个键
2、一张表中只能有一个字段被定义为字段字段
语法:
create table 表名(
字段1名称 数据类型 auto_increment unique/primary key [别的约束],
字段2名称 数据类型 [约束],
……,
字段n名称 数据类型 [约束]
);
示例:创建表ystest0111003,包含字段id(整型,自增),cno(整型,主键)cname(字符串,长度为8,非空),age(浮点型,总长度为6,小数点后面保留2位小数,默认值为18),ctime(日期类型),并且给id字段加上唯一约束
create table ystest0111003(
id int auto_increment unique,
cno int primary key,
cname char(8) not null,
age float(6,2) default 18,
ctime datetime
);
select * from ystest0111003;
insert into ystest0111003(cno,cname) values(7,wyb');
insert into ystest0111003(id,cno,cname) values(111,6,wyb');
update ystest0111003 set id=6 where id=1;
练习:创建数据表stu_009,包含字段:id为整型,自增,sno为整型,sname为字符串,长度为24,score字段为浮点型,整数部分长度为3,小数点后面保留2位小数,createtime为 时间格式,sno设置为主键,name不能为空,默认值为“张三”
注释 comment
语法:
create table 表名(
字段1名称 数据类型 [约束] comment '我是备注信息',
字段2名称 数据类型 [约束],
……,
字段n名称 数据类型 [约束]
) default charset=utf8 comment '这里是表的注释';
示例:创建表ystest0111004,包含字段id(整型,自增),cno(整型,主键)cname(字符串,长度为8,非空),age(浮点型,总长度为6,小数点后面保留2位小数,默认值为18),ctime(日期类型),并且给id字段加上唯一约束,并且给字段加上注释信息
create table ystest0111004(
id int auto_increment unique,
cno int primary key comment '学号',
cname char(8) not null comment '姓名',
age float(6,2) default 18 comment '年龄',
ctime datetime comment '创建时间'
) default charset=utf8 comment '我是一个测试表';