约束类型
NOT NULL 指示某类不能存储NULL值
UNIQUE 保证每列有唯一的值
DEFAULT 规定没有给列赋值时的默认值
PRIMARY KEY 前两个的结合。确保某列(或两个列多个列的结合)有唯一 (主键约束,又不为空又是唯一的)
标识,有助于更容易更快速地找到表中的一个特定记录。
FOREIGN KEY 保证一个表中的数据匹配另一个表的值的参照完整性
CHECK 保证列中的值符合指定的条件。对于mysql数据库,进行分析,但是
忽略CHECK子句,语法上不报错而已
create table student(
sn int not null,
name varchar(20)
);
//删表,无论有没有这个表都删除,就算不存在也不报错
drop table if exists student;
create table student(
sn int unique,
name varchar(20)
);
create table student(
sn int unique,
name varchar(20) default'不知道'
);
insert into student values(null,null);
//这个是查询不到默认值的,因为null也当做一个数被赋给了name列
//查询name的默认值,并没有给name列赋值
insert into student(sn) values(null);
主键
//表类似类
create table student(
id int primary key;
sn int unique,
name varchar(20) default'不知道'
);
insert into student values(1,23,'sd');
insert into student values(2,34,'de');
//主键只是为了标识,可以累加,每次加一方便操作
create table student(
id int primary key auto_increment;
sn int unique,
name varchar(20) default'不知道'
);
//保证主键自增,不用管
//增加时可以这样增加,若不写auto_increment,则不能像下面插入,因为少一列
insert into student(sn,name) values(23,'fe');
insert into student(sn,name) values(24,'gh');
create table classes(
id int primary key auto_increment,
name varchar(20)
);
外键 关联其他表的主键或唯一键
班级表
一个班级对应许多同学
//一个同学属于一个班级,外键写在同学里
create table student(
id int primary key auto_increment;
sn int unique,
name varchar(20) default'不知道'
classes_id int,//所属班级
foreign key(classes_id) references classes(id)
);
//classes_id int,
foreign key(classes_id) references classes(id)这就把两张表关联起来了,学生的class_id属性对应到班级表的id里
insert into class (id,name) values(1,'2020届5班');
//关联班级之后在给学生表中插入时,要写上班级,因为相当于多了一个属性
insert into student(sn,name,classes_id) values (23,'sd