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如果一个表被另一个表关联,它是无法被删除的。

测牛学堂:软件测试之数据库操作语句sql的外键查询相关推荐

  1. 使用XML封装数据库操作语句的实现

    分享一下我老师大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow 在项目开发的过程当 ...

  2. 数据库DML语句:数据库操作语句

    DML语句:数据库操作语句 DML语句之插入表记录 插入数据的语法1:insert into 表名 values(值1,值2,值3,值4...值n); 插入全部数据 INSERT INTO stude ...

  3. 命令行客户端MySQL基本命令的使用(登录、登出、数据库操作的SQL语句、表结构的SQL语句、表数据操作的SQL语句)

    1. 登录和登出数据库 登录数据库: 输入下面命令: mysql -uroot -p 说明: -u 后面是登录的用户名  [写成-u root也是可以的] -p 后面是登录密码, 如果不填写, 回车之 ...

  4. mysql设备台账_mysql数据库操作语句大全.pdf

    mysql数据库操作语句大全.pdf mysql数据库操作语句大全(常用操作指令)一 . 常用mysql命令行命令1.启动MYSQL服务 netstartmysql停止MYSQL服务 stat na| ...

  5. 外键查询_详解MySQL数据库删除所有表的外键约束、禁用外键约束相关脚本

    概述 数据库的外键虽然能保证数据数据一致性和完整性,但是也一定程度地影响了数据更新的性能.在开发中,我们使用PowerDesigner建立物理数据模型时,为了结构的清晰,增加可读性,会创建表与表之间的 ...

  6. mysql 外键查询_mysql 外键查询(mysql数据库多表联查)

    mysql 外键查询(mysql数据库多表联查) 2020-07-24 11:51:00 共10个回答 查看方式主要是通过第三方工具或者是sql语句,主要有以下三种方式1:使用Navicateform ...

  7. mysql外键设置sql语句_sql设置外键(设置外键的sql语句)

    sql设置外键(设置外键的sql语句) 2020-07-24 11:44:03 共8个回答 sql怎么设置外键 创建数据库时就是有主键的创建了主键,但是表之间的关系没有联系,要建数据库关系图只有主键没 ...

  8. 外键查询_传统关系型数据库查询性能提高思路

    相信现阶段依然有许多的企业信息化项目依然采用单体架构,其数据存储主要方式依然以关系型数据库为主,比如oracle.mysql.postgresql等.企业初期,各种原因导致研发人员身兼数职,都是全栈的 ...

  9. SQL 语句:不得使用外键与级联,一切外键概念必须在应用层解决

    阿里Java规范 [强制]不得使用外键与级联,一切外键概念必须在应用层解决. 说明:以学生和成绩的关系为例,学生表中的 student_id是主键,那么成绩表中的 student_id则为外键.如果更 ...

最新文章

  1. Windows配置远程访问的Jupyter Notebook服务器
  2. ASP.NET dropdownlist绑定数据却显示System.Data.DataRowView
  3. 日常SQL常见问题(二)
  4. Matplotlib - 饼图、环形图 pie() 多重饼图 subplots() 所有用法详解
  5. React之函数式组件使用props
  6. php微信网页开发实现自动登录注册功能实例
  7. java迷宫_java实现迷宫算法--转
  8. 大二上学期软件工程概论学习进度表(第十一周)
  9. extern 关键字详解
  10. C# 键盘钩子和鼠标钩子的使用详解
  11. 华为太极magisk安装教程_华为(HUAWEI)ROM安装包合集
  12. 企业进行OA系统选型的四大标准
  13. 戴尔 微博 服务器 销售,微博营销案例之戴尔
  14. input标签 各属性解释
  15. 科普篇:内存、“运行内存”、外存?傻傻分不清楚。看完这篇就懂了
  16. Netlogon 特权提升漏洞(CVE-2020-1472)原理分析与验证
  17. 机器学习分类器模型评价指标
  18. 修正逆解文章——六轴UR机械臂正逆运动学求解_MATLAB代码(标准DH参数表)
  19. python正则匹配ABAC型词语
  20. centos——开机显示 give root password for maintenance

热门文章

  1. PHP模拟体彩36选7代码,打造属于自己的EXCEL彩票选号软件-36选7/31选7/混合版(不喜彩票者勿入)-Excel函数与公式-ExcelHome技术论坛 -...
  2. python使用tqdm显示进度表
  3. [MediaPipe] 解决AttributeError: module mediapipe.python.solutions.holistic has ... FACE_CONNECTIONS问题
  4. 13、最新安卓Xamarin绑定相关填坑之旅
  5. 汽车概论结业报告计算机系,汽车概论结课论文(Introduction to automobile introduction).doc...
  6. 产品经理如何基于需求迭代产品(上篇):需求调研的四个步骤
  7. 射手播放器SPlayer,编解码
  8. 英特尔诺基亚联手研发Symbian系统的智能手机
  9. 1101. 献给阿尔吉侬的花束
  10. 说说,博客,贴吧评论设计问题