一、日期类型
举例:
date:2019-12-10
time:11:11:11
datetime:2019-12-10 11:11:11
year:2019
在MySQL中使用:
create database day04_db;
use day04_db;
create table teacher(id int not null, name varchar(16), born_year year, birth date, work_time time, register_time datetime);
insert into teacher values(1, "tank", "2019", "2019-12-10", "11:11:11", "2019-12-10 11:11:11");
二、枚举与集合
多选一
create table user1(id int not null, name varchar(16), gender enum("male", "female", "others"));
即在“male”“female”“others”中选一个,如果输入这三项以外的值则会报错。
多选多
create table user2(id int not null, name varchar(16), gender enum("male", "female", "others"), hobbies set("sleep", "read", "playball", "run"));
即在“sleep”“read”“playball”“run”中选一个或者多个值,如果输入范围外的值则会只显示范围内的值(严格模式下会报错)
注意:read与sleep之间必须连着!
三、约束条件介绍
1)primary key(pk)
primary key == not null+unique:非空+唯一+索引
标识该字段为该表的主键,主键可以是唯一的表示记录
#快速定位到某表中的某一条数据
如:
create table user7(id int primary key, name varchar(16));
注意:
#1.一张表必须只有一个主键,如果没有主键,会从上到下搜索,直到遇到“第一个”非空且唯一的字段自动设置为主键。
#2.如果表没有指定任何可以设置主键的字段,那innodb会采用自己默认的一个隐藏关键字作为主键,加快查询效率。
#3.一张表中通常都应有id字段,并且作为主键
联合主键:多个字段联合起来作为一个主键,本质上还是一个主键
create table user8(id int, name varchar(16), primary key(id, name));
2)foreign key(fk)
标识该字段为该表的外键,用于把当前的表与另一张表绑定关系
3)unique key(uk)
标识该字段的值是唯一的
#若一张表中插入了已存在的值,则无法插入
单列唯一
create table user5(id int unique, name varcahr(16));
联合唯一
create table user6(id int, name varchar(16), unique(id, name));
4)auto_increment
标识该字段的值自动增长(整数类型,并且为主键)
#每插入一条数据,都会让该字段自动+1,一般将id设置为自增,默认从1开始
create table user10(id int primary key auto_increment, name varchar(16));
insert into user10(name) values("a"),("b"),("c"),("d"),("e");
如果删除id=5的数据
delete from user10 where id=5;
再插入第六条数据
insert into user10(name) values("f");
则id会显示6
5)default
设置默认值
create table student(id int not null, name varchar(16) not null, gender enum("male", "female", "others") default"male");
如
insert into student(id, name) values(1, "张三");
没有输入gender的值但是显示了默认的“male”
6)unsigned
插入数据无正负符号
7)zerofill
插入数据空格用0填充
8)not null
插入数据不能为空