软件测试sql学习之外键约束

mysql外键总结

我们之前学习的都是针对一个表的操作。如果要进行多个表之间的操作,就要用到外键把他们关联起来。
外键的作用:能够让多个表进行关联,使表与表之间有联系,实现共性抽取。

应用场景

如果数据项比较多的情况下,把所有数据都存放在一个表中,如果表太大,影响操作效率。

解决办法就是把一个表拆分成多个表, 并且用外键去关联。

如果要设计一个员工表
1)员工表:编号、姓名、年龄、性别、所在分公司、所在部门
2)部门表:编号、部门名称、部门经理、主要任务
3)公司表:编号、分公司名,地址、电话、法人
把公司和部门的数据抽取出来,形成一个单独的表,并以公司表为主表,公司表关联部门表,部门表关联员工表,也就是用公司表的“编号”指向部门表“所在公司”,用部门表的“编号”指向员工表的“所在部门”。


总结:
1 以上三个表的设计,就解决了字段冗余+表太大的问题☆(其实还可以把部门表名称再次细分)
2一个表的外键就是对应另一个表的主键(也可以是当前表的主键)
3外键的设置最好是在建立表的时候,且对应的表类型是InnoDB类型,如果是其他类型,就没有约束作用
4有外键约束的表,一定是先创建主表(被指向的),后创建副表(有外键的)
5外键约束的两个表,必须都是InnoDB类型

外键设置

1 创建公司表

CREATE TABLE `company` (
  `id` int NOT NULL AUTO_INCREMENT,
  `company_name` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL,
  `company_addr` varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL,
  `company_tel` varchar(16) COLLATE utf8mb4_general_ci DEFAULT NULL,
  `company_person` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci
INSERT INTO `company` VALUES ('1', '北京分公司', '北京市朝阳区xxxx号', '010-123456', '李四111');
INSERT INTO `company` VALUES ('2', '上海分公司', '上海市浦东区xx号', '123-5678', '李四222');
INSERT INTO `company` VALUES ('3', '深圳分公司', '深圳市xxx号', '789-111222', '李四333');

2 创建部门表

create table department (
  id int primary key not null auto_increment,
  department_name varchar(32),
  department_leader varchar(32),
  worker varchar(128),
  company_fid int,
  constraint fk foreign key(company_fid) references company(id)
)engine=innodb;

3 创建员工表

create table staff (
  id int primary key not null auto_increment,
  staff_name varchar(32),
  staff_age tinyint,
  staff_sex char(1),
  department_fid int,
  CONSTRAINT staff_fk foreign key(department_fid) REFERENCES department(id)
)engine=innodb

外键总结

1外键只能指向主键

2外键和主键的字段类型必须一致,通常用int类型

3外键是一种约束,目的是为了方便管理数据,当有冗余字段时,可以提取出一个表进行关联,简化数据存储

4一张表中可以有多个外键,但主键只能是一个

5外键和主键所在的表类型必须都是InnoDB

6关系型数据库的特点就是数据之间有关联

7如果一个表被另一个表关联,它是无法被删除的。

最后:下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保100%免费】

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

猜你喜欢

转载自blog.csdn.net/wx17343624830/article/details/132479115