3 主键
Createtable A select * from B
可以建立表,而且表A和表B一样,数据都有,但是有个缺点,没有主键限制,或者主键会丢失。
Renametable bb to aa;
Altertable bb rename to aa;
Altertable bb rename aa;
把表BB改名为aa,
Alter
table aa change name 名字varchar(30);
把name改变成名字;
Altertable tt add constraint primary key (t);
Altertable tt add constraint pk primary key (t); 待探究pk和mpk的差别
在tt表中,把t 列作为主键约束列。
当要成为主键的那一行中有重复值不能建主键,
Alter
table tt drop primary key 删除主键。
Primary
key (host,user)同时把两列作为主键,叫做复合主键,只要这两列不是都一样就可以。
使用外键的话,引擎一定要是innodb
Namevarchar(30) not null unique名字这一列不能有重复项。
Alter
table ss add constraint uk unique (name);注意括号,这个是建立表后,再给表的某个字段增加唯一约束。
Alter
table ss drop index ‘uk’; 删除约束,注意这里和索引的删除方法一样。
当主键有auto -increment这样的时候,没有办法删除主键,因为自增必须是主键(有待探究)
增加外键,增加外键一般用于连个表都建好了,这样灵活度会高一些。
Altertable ss add constraint fk foreign key (tid) references teacher(id);
在ss 表中把tid这一行作为外键列,指向teacher表的id 列
删除外键
Altertable ss drop foreign key fk;
如果出现已经删除外键,后来还是出现了,可能不是外键,而是索引,仔删除索引就好了
Altertable ss drop index fk; 删除索引。
外键指向另一个表的主键,或者唯一约束键。当一个表通过外键和另外一个表产生连接时,不能随意删除这个表的信息(比如不能删除teacher表里和ss相关联的信息)。
1,Altertable ss add constraint fk foreign key (tid) references teacher(id);
当删除两个有外键连接的表时,要先删掉那个有外键的表,再删除那个有联系的表,不然删不掉,(先删掉ss,再删掉teacher).
2,Altertable ss add constraint fk foreign key (tid) references teacher(id) on delete set null
当加了on delete set null 的时候,可以先删除teacher 这时候ss里面的相关信息也会自动删除。
3,Altertable ss add constraint fk foreign key (tid) references teacher(id) on deletecascade;
这样的话会导致如果在teacher表里面删掉了一个老师,ss表里和这个老师对应的学生都会被删掉。但是2的话,就会把删掉老师后,学生对应老师那一列会变成0,
1的话是不能删除和学生有对应关系的老师
4Alter table ss add constraint fk foreign key (tid) references teacher(id) on delete set null on update casecade;
删除老师的话会把学生对应老师那里变成空,如果老师信息改了,学生那里也会改变,如果老师对应的信息改成了200,学生对应老师的信息也会变成200