MySQL之库表操作详述(4)

先创建‘一’的表,就是dep表
create table dep(id int primary key,name char(10),comment char(10));  #然后插入数据就行
在创建‘多’的表,就是emp表,在emp表中的dep_id,指向的是dep表中的id
create table emp(id int primary key,name char(10),gender enum('male','female'),dep_id int,foreign key(dep_id) references dep(id) on delete cascade on update cascade);

  一对一关系:就只要把外键设为唯一的就行了

MySQL之库表操作详述

先创建被指向的表,即customer表
create table customer(id int primary key,name char(10),phone int,qq int);
在创建student表,表中的cm_id指向customer表中的id
create table student(id int primary key,cname char(10),class_name,cm_id int unique,foreign key(cm_id) references customer(id) on delete cascade on update cascade);

  多对多关系:我们就应该建立第三个表(关联表)来连接连个表的关系

MySQL之库表操作详述

多对多关系表,就应该最后创建关联表就行,先创建另外两个表就行,即author表和book表
create table author(id int primary key,name char(10));
create table book(id int primary key,bname char(10),price int);
最后来创建关联表,即author表
create table author_book(id int primary key,author_id int,book_id int,foreign key(author_id) references author(id) on delete cascade on update cascade,
foreign key(book_id) references book(id) on delete cascade on update cascade);

注意:我们一般在创建表的时候最好把id设置为主键,其次是我们外键指向的字段必须是not null + unique的,最后是,在外键的后面加上on delete cascade on update cascade,作用在于外键的值会跟随指向的字段的值改变而改变

  5,表的修改alter table

语法:
1. 修改表名
      ALTER TABLE 表名 RENAME 新表名
2. 增加字段
      ALTER TABLE 表名
                          ADD 字段名  数据类型 [完整性约束条件…], #注意这里可以通过逗号来分割,一下添加多个约束条件
                          ADD 字段名  数据类型 [完整性约束条件…];
      ALTER TABLE 表名 ADD 字段名  数据类型 [完整性约束条件…]  FIRST; #添加这个字段的时候,把它放到第一个字段位置去。
      ALTER TABLE 表名 ADD 字段名  数据类型 [完整性约束条件…]  AFTER 字段名;#after是放到后的这个字段的后面去了,我们通过一个first和一个after就可以将新添加的字段放到表的任意字段位置了。                   
3. 删除字段
      ALTER TABLE 表名 DROP 字段名;
4. 修改字段
      ALTER TABLE 表名 MODIFY  字段名 数据类型 [完整性约束条件…];#modify给字段重新定义类型和约束条件,但已经有主键是不能修改,也不需要再写
      ALTER TABLE 表名 CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…];  #change比modify还多了个改名字的功能,这一句是只改了一个字段名
      ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];#这一句除了改了字段名,还改了数据类型、完整性约束等等的内容
5.增加复合主键
    alter table 表名 add primary key(字段,字段)
6.删除主键
    alter table 表名 drop primary key    #主键只能通过这方式进行删除

  6,复制表

方法一
alter table t2 select * from t1;      #复制结构+数据
这种情况下可以指定复制表的某些字段,只需把*换成表名(字段)就行,但是不能复制主键、外键、自动增长约束条件
alter table t2 select * from t1 where 1=0;    #因为1=0为假的,所以找不到对应数据,就只复制结构
方法二
create table t2 like t1;
这种方法只复制结构,没有数据,但所有的约束条件都复制了

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/1732dc524f6450cc805cff0ba08a6311.html