
1,外键约束
外键约束的要求:

mysql配置文件:default-storage-engine=INNODB (将数据表的默认引擎改为INNODB)
2,查看数据表的创建命令,索引
show create table provinces;//查看表provinces的创建命令
show index from provinces;//查看表provinces中的约束
show INDEX from users2\G;//换一种直观的格式查看users2的唯一约束
创建主表
CREATE TABLE provinces (
id smallint UNSIGNED PRIMARY key auto_increment,
pname varchar(20) not NULL
);
创建子表
CREATE TABLE users (
id SMALLINT UNSIGNED PRIMARY KEY auto_increment,
username VARCHAR (10) NOT NULL,
pid SMALLINT UNSIGNED,
FOREIGN KEY (pid) REFERENCES provinces (id) //参照provinces中的id创建pid外键
);
4,外键约束的参照操作

5,添加数据表字段
alter table user1 add age tinyint UNSIGNED not null DEFAULT 10;//为表user1添加字段age,该字段自动出现在最后面
alter table user1 add password VARCHAR(32) not null after username;//为表user1添加字段password ,该字段出现在username后面
alter table user1 add truename VARCHAR(32) not null first; //为表user1添加字段truename,该字段出现在表的最前面
ALTER TABLE user1 ADD ( //添加多个字段,备注:不能给字段指定位置,必须添加小括号
t1namea VARCHAR (32) NOT NULL,
t1amea VARCHAR (32) NOT NULL
);
6,删除数据表字段
ALTER TABLE user1 DROP t1amea; //删除表user1 中的t1amea列
ALTER TABLE user1 drop id,drop age;//同时删除user1中的id列,age列
ALTER TABLE user1 drop tame , add age VARCHAR (32) NOT NULL;//删除user1中的id列,添加age列
7,为数据表添加删除约束
alter table users2 add PRIMARY key (id); //将表users2中的字段id修改为主键
ALTER table users2 add UNIQUE (username);//为表users2中的字段username添加唯一约束
alter table users2 add FOREIGN key(pid) REFERENCES provinces(id); 为users2中的字段pid添加外键,外键指向provinces表中的id字段
alter table users2 alter age set DEFAULT 15; //将字段age的默认值修改为15
alter table users2 alter age drop DEFAULT; //删除字段age的默认值
alter table users2 drop PRIMARY key;;//删除表users2的主键约束(因为每张表只有一个主键,所以不用指定主键对应的字段名称)
alter table users2 drop INDEX username;//删除表users2中username的唯一约束
alter table 表名 drop constraint 外键约束名
8,修改数据表
alter table users2 MODIFY id SMALLINT UNSIGNED not null FIRST;//将id字段放在表的第一个位置
alter table users2 MODIFY id TINYINT UNSIGNED not null ;//将id的类型修改为TINYINT (大类型改成小类型,有可能会造成数据的丢失)
alter table users2 change pid p_id TINYINT UNSIGNED not null ;//将字段pid 修改成p_id,并且类型是TINYINT
alter table users2 RENAME users3 ;//将表users2 的名称修改成users3
RENAME table users3 to users2;//将表users3 的名称修改成users2(不要随意更改表的名字和列的名字,避免视图以及引用不可用)