系统:win7 64位
接上一篇数据库02——MySQL中改密码、创建数据库数据表、数据记录的查增删改
1. 主键约束
能唯一确定一张表中的一条记录(行数据)。通过给某个字段(项名)添加约束就可以使得该字段不重复且不能为空。这样就能避免插入两个完全一样的记录。
create table user (id int primary key,name VARCHAR(20),age TINYINT);
尝试往里面插入一样的记录,就会出现如下的错误
2. 联合主键
只要联合的主键值加起来不重复就可以,要保证每一个主键值不为空
create table user2 (id int,name VARCHAR(20),age TINYINT,primary key(id,name));
3. 自增约束
create table user3 (id int primary key auto_increment,name VARCHAR(20),age TINYINT);
insert into user3 (name) VALUES ('xiao');//name下添加数据xiao
重复添加数据,主键值会从1开始逐渐增加
4. 添加主键
创建数据表时没有指定主键,后面又想加上
alter table user4 add primary key(id);
alter table user4 modify id int primary key;//使用modify修改字段,添加约束
5. 删除主键
alter table user4 drop primary key;
6. 唯一约束
约束的字段不可以重复,但是可以为空
//第一种方式
create table user5(id int,name VARCHAR(20),unique(name));
//第二种方式
create table user5(id int,name VARCHAR(20)unique);
//第三种方式
create table user5(id int,name VARCHAR(20),unique(id,name));//如果约束两个字段,以逗号分隔,不同时重复即可
//第四种方式
create table user5(id int,name VARCHAR(20));
alter table user5 add unique(name);
//第五种方式
create table user5(id int,name VARCHAR(20));
alter table user5 modify name VARCHAR(20) unique;
desc user5;
7. 删除唯一约束
alter table user5 drop index name;//name是唯一约束
8. 非空约束
约束的字段不能为空
create table user6(id int,name VARCHAR(20) not null);
9. 默认约束
当插入字段时,会有默认值,传了新值就不会使用默认值
create table user7(id int,name VARCHAR(20),age int default 20);
10. 外键约束
涉及到父表和子表/主表和副表
create table classes(id int primary key,name VARCHAR(20));//班级表
create table students(id int primary key,name VARCHAR(20),class_id int,foreign key(class_id) references classes(id));//学生表
//有三个班
insert into classes value(1,'class1');
insert into classes value(2,'class2');
insert into classes value(3,'class3');
//插入学生
insert into students value(1001,'Lily',1);
insert into students value(1002,'Ony',2);
insert into students value(1003,'Poy',3);
最后一个参数class_id是与classes表中的id绑定了的,所以
insert into students value(1004,‘xiao’,4);就会报错