mysql数据库_关系的创建

Posted chengzige

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql数据库_关系的创建相关的知识,希望对你有一定的参考价值。

一对多关系建立 

以部门表与员工表为例

create  table  dep(
    id int primary key auto_increment,    #创建主键非空且唯一
    dep_name varchar(128),
    dep_desc  varchar(128)
   );    

create  table  emp(
    id int primary key auto_increment,
    emp_name varchar(128),
    emp_gender enum(mail, femail, others) default mail  #使用枚举选择性别,默认为mail
    dep_id int,                             #创建关联字段
    foreign key (dep_id) references dep(id) #创建与dep表关联的外键dep_id
    on update cascade              #级联更新
    on delete cascade                 #级联删除          #创建与dep表关联的外键,级联更新,级联删除
   );

插入部门数据

insert into dep(dep_name, dep_desc) values(销售部, 买卖),(技术部,搞技术),(财务部,管钱)

插入员工数据

insert into emp(emp_name, emp_gender, dep_id) values(张三, 18, 1),(李四,19,2),(王五, 20, 3),(马六, 21, 1)

 

注意:需要在创建关联表之前创建被关联表, 在多的一方去建立外键

 

 

多对多关系建立

在创建多对多关系的时候, 先把两个普通的表创建出来, 然后创建一个专门存放多对多关系的一个表(第三张表), 使用这张表去做关系绑定

以图书表和作者表为例

 

create  table  book(
    id int primary key auto_increment,
    title varchar(64),
    price int
    );


create  table  authors(
    id int primary key auto_increment,
    name varchar(64),
    age int
    );


create  table  book_authors(
    id int primary key auto_increment,
    book_id int,
    foreign key(book_id) references book(id)
    on update cascade
    on delete cascade,
    author_id int,
    foreign key(author_id) references authors(id)
    on update cascade
    on delete cascade
    );

 

插入书籍数据

insert into book(title, price) values(围城, 199),(, 187),(柒个我, 299)

插入作者数据

insert into authors(name, age) values(张三, 18),(李四, 19)

插入第三张表数据

insert into book_authors(book_id, author_id) values(1,1),(1,2),(2,1),(3,1),(3,2)

 

 

 

一对一关系建立

在创建一对一的关系时, 外键可以建立在任何一张表, 但是推荐建立在查询频率比较高的那一张表

以用户表为例

 

create  table  authordetail(
    id int primary key auto_incerment,
    ipoh int,
    addr varchar(128)
    );


create  table  author(
    id int primary key auto_increment,
    name varchar(16),
    age int,
    authordetail_id int unique,          # 一对一关系id不能重复
    foreign key(authordetail) references authordetail(id)
    on update cascade
    on delete cascade
    );

 

 

 

 

修改表的语句

1. 修改表名
ALTER TABLE 表名
      RENAME 新表名;
2. 增加字段
ALTER TABLE 表名
      ADD 字段名 数据类型 [完整性约束条件…],
      ADD 字段名 数据类型 [完整性约束条件…];
ALTER TABLE 表名
      ADD 字段名 数据类型 [完整性约束条件…] FIRST; # 直接移到最前面
ALTER TABLE 表名
      ADD 字段名 数据类型 [完整性约束条件…] AFTER 字段名; # 寻找插哪个字段的后面
3. 删除字段
ALTER TABLE 表名
      DROP 字段名;
4. 修改字段 # modify只能改字段数据类型完整约束,不能改字段名,但是change可以!
ALTER TABLE 表名
      MODIFY 字段名 数据类型 [完整性约束条件…];
ALTER TABLE 表名
      CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];

 

 

 

复制表

create  table 新表名  select * from 表名(要复制的表)    # 只会复制表结构,key不会复制: 主键、外键和索引

 

以上是关于mysql数据库_关系的创建的主要内容,如果未能解决你的问题,请参考以下文章

2_MySQL

15_clickhouse,MySQL引擎;MySQL和ClickHouse中数据类型的对应关系

Hadoop集群(第10期)_MySQL关系数据库

MySQL join 与关系表上的匹配

Django ORM------Mysql

MySQL_第一章