测牛学堂:软件测试之数据库操作语句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如果一个表被另一个表关联,它是无法被删除的。
测牛学堂:软件测试之数据库操作语句sql的外键查询相关推荐
- 使用XML封装数据库操作语句的实现
分享一下我老师大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow 在项目开发的过程当 ...
- 数据库DML语句:数据库操作语句
DML语句:数据库操作语句 DML语句之插入表记录 插入数据的语法1:insert into 表名 values(值1,值2,值3,值4...值n); 插入全部数据 INSERT INTO stude ...
- 命令行客户端MySQL基本命令的使用(登录、登出、数据库操作的SQL语句、表结构的SQL语句、表数据操作的SQL语句)
1. 登录和登出数据库 登录数据库: 输入下面命令: mysql -uroot -p 说明: -u 后面是登录的用户名 [写成-u root也是可以的] -p 后面是登录密码, 如果不填写, 回车之 ...
- mysql设备台账_mysql数据库操作语句大全.pdf
mysql数据库操作语句大全.pdf mysql数据库操作语句大全(常用操作指令)一 . 常用mysql命令行命令1.启动MYSQL服务 netstartmysql停止MYSQL服务 stat na| ...
- 外键查询_详解MySQL数据库删除所有表的外键约束、禁用外键约束相关脚本
概述 数据库的外键虽然能保证数据数据一致性和完整性,但是也一定程度地影响了数据更新的性能.在开发中,我们使用PowerDesigner建立物理数据模型时,为了结构的清晰,增加可读性,会创建表与表之间的 ...
- mysql 外键查询_mysql 外键查询(mysql数据库多表联查)
mysql 外键查询(mysql数据库多表联查) 2020-07-24 11:51:00 共10个回答 查看方式主要是通过第三方工具或者是sql语句,主要有以下三种方式1:使用Navicateform ...
- mysql外键设置sql语句_sql设置外键(设置外键的sql语句)
sql设置外键(设置外键的sql语句) 2020-07-24 11:44:03 共8个回答 sql怎么设置外键 创建数据库时就是有主键的创建了主键,但是表之间的关系没有联系,要建数据库关系图只有主键没 ...
- 外键查询_传统关系型数据库查询性能提高思路
相信现阶段依然有许多的企业信息化项目依然采用单体架构,其数据存储主要方式依然以关系型数据库为主,比如oracle.mysql.postgresql等.企业初期,各种原因导致研发人员身兼数职,都是全栈的 ...
- SQL 语句:不得使用外键与级联,一切外键概念必须在应用层解决
阿里Java规范 [强制]不得使用外键与级联,一切外键概念必须在应用层解决. 说明:以学生和成绩的关系为例,学生表中的 student_id是主键,那么成绩表中的 student_id则为外键.如果更 ...
最新文章
- Windows配置远程访问的Jupyter Notebook服务器
- ASP.NET dropdownlist绑定数据却显示System.Data.DataRowView
- 日常SQL常见问题(二)
- Matplotlib - 饼图、环形图 pie() 多重饼图 subplots() 所有用法详解
- React之函数式组件使用props
- php微信网页开发实现自动登录注册功能实例
- java迷宫_java实现迷宫算法--转
- 大二上学期软件工程概论学习进度表(第十一周)
- extern 关键字详解
- C# 键盘钩子和鼠标钩子的使用详解
- 华为太极magisk安装教程_华为(HUAWEI)ROM安装包合集
- 企业进行OA系统选型的四大标准
- 戴尔 微博 服务器 销售,微博营销案例之戴尔
- input标签 各属性解释
- 科普篇:内存、“运行内存”、外存?傻傻分不清楚。看完这篇就懂了
- Netlogon 特权提升漏洞(CVE-2020-1472)原理分析与验证
- 机器学习分类器模型评价指标
- 修正逆解文章——六轴UR机械臂正逆运动学求解_MATLAB代码(标准DH参数表)
- python正则匹配ABAC型词语
- centos——开机显示 give root password for maintenance
热门文章
- PHP模拟体彩36选7代码,打造属于自己的EXCEL彩票选号软件-36选7/31选7/混合版(不喜彩票者勿入)-Excel函数与公式-ExcelHome技术论坛 -...
- python使用tqdm显示进度表
- [MediaPipe] 解决AttributeError: module mediapipe.python.solutions.holistic has ... FACE_CONNECTIONS问题
- 13、最新安卓Xamarin绑定相关填坑之旅
- 汽车概论结业报告计算机系,汽车概论结课论文(Introduction to automobile introduction).doc...
- 产品经理如何基于需求迭代产品(上篇):需求调研的四个步骤
- 射手播放器SPlayer,编解码
- 英特尔诺基亚联手研发Symbian系统的智能手机
- 1101. 献给阿尔吉侬的花束
- 说说,博客,贴吧评论设计问题