数据库(三)

 

前言

本篇博客主要内容为表之间的关系、多表关联、复制表;查询如单表查询、多表关联查询

表之间关系

为什么要分表?

假如现在有两种数据,一种是部门数据一种是员工数据,如果两中数据放在同一张表中则会造成:

  • 数据重复
  • 结构混乱
  • 扩展维护性差
  • 需要分表

所以需要把表中会造成混乱的数据分出来,分成两张表。

mysql> create table dept(id int primary key auto_increment,name char(20),job char(20));
mysql> create table emp(id int primary key auto_increment,name char(20),gender char,age int,salary float,d_id int);

什么时候需要分表?

当出现大量重复数据时,当一条记录中的数据不属于同一类时需要分表。

分表之后产生的问题,员工表可以存储一个不存在的部门编号,这样的数据是不完整的无效数据,必须找到一种方法可以在物理层面建立关联关系。

以上建表语句可以建立逻辑上的关联关系,这有建表的人才明白其中的关系,而 mysql 并不知道关系,所以需要通过外键来进行约束,说明这两张表的关联关系。

外键的使用

mysql> create table 表名(字段名 类型(长度),foreign key(外键的字段名) references 要关联表名(主键名));

使用外键时必须分清主从关系,也就是要分清先键那张表,因为在使用外键关联表时,需要知道对方表的表名,所以要关联的表应该是主表,应该先建主表,这样才能关联起来。

外键的第一个约束

先键主表,再建从表

mysql> create table dept(id int primary key auto_increment,name char(20),job char(20));
mysql> create table emp(id int primary key auto_increment,name char(20),d_id int,foreign key(d_id) references dept(id));

外键的第二个约束

数据先插入主表,再插入从表数据

mysql> insert into dept values(1,'hr','招聘');
mysql> insert into emp values(1,'张无忌',1);

外键的第三个约束

删除数据时先删从表,再删主表

mysql> delete from emp where name = '张无忌';

                        
关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信