mysql 学习10 多表查询 -多表关系,多表查询

多表关系

一对多

多对多

创建学生表

#多对多表 学生选课系统create table student(id int primary key auto_increment comment '主键ID',name varchar(64) comment '姓名',studentnumber varchar(10) comment '学号'
)comment '学生表';insert into student(id,name,studentnumber)values (null,'张三','00000001'),(null,'李四','00000002'),(null,'王五','00000003'),(null,'杨六','00000004');

创建课程表

create table course(id int primary key  auto_increment comment '主键ID',name varchar(128) comment '课程名称'
) comment '课程表';insert into course (id,name)values (null,'java'),(null,'c'),(null,'c++'),(null,'高等代数'),(null,'离散数学'),(null,'mysql');

创建中间关系表

create table student_course(id int auto_increment primary key comment '主键ID',studentid int not null comment '学生ID',courseid int not null comment '课程ID',constraint fk_courseid foreign key (courseid) references course(id),constraint fk_studentid foreign key (studentid) references student(id));insert into student_course(id,studentid,courseid)values (null,1,1),(null,1,2),(null,1,3),(null,2,2),(null,2,3),(null,3,4);

查看关系

一对一

create table tb_user(id int auto_increment primary key comment '主键ID',name varchar(128) comment '姓名',age int comment  '年龄',gender char(1) comment '1:男, 2:女',phone char(11) comment '手机号')comment '用户基本信息表';create table tb_user_edu(id int auto_increment primary key comment '主键ID',degree varchar(20) comment '学历',major varchar(50) comment '专业',primaryschool varchar(50) comment '小学',middleschool varchar(50) comment '中学',universityschool varchar(50) comment '大学',userid int unique  comment '用户ID',constraint fk_userid foreign key(userid) references tb_user(id)
)comment '用户教育信息表';insert into tb_user(id,name,age,gender,phone)values (null,'黄渤',45,'1','18700000000'),(null,'冰冰',42,'2','18800000000'),(null,'张三',22,'1','18711000000'),(null,'李四',23,'2','18722000000'),(null,'王五',26,'1','18766000000');insert into tb_user_edu(id,degree,major,primaryschool,middleschool,universityschool,userid) values(null,'大专','计算机','青岛小学','青岛中学','中科院大学',1),(null,'本科','机械自动化','北京小学','北京中学','北京大学',2),(null,'研究生','社会科学','shagnhai小学','上海中学','上海大学',3),(null,'博士','半导体','成都小学','成都中学','成都大学',4),(null,'博士后','人文科学','西安小学','西安中学','西安大学',5);# 下面的会失败,是因为tb_user_edu create的时候,设置了foreign key 关联的是 tb_user 中的id,但是tb_user id没有6的值,因此失败
insert into tb_user_edu(id,degree,major,primaryschool,middleschool,universityschool,userid) values(null,'博士后','人文科学','西安1小学','西安2中学','西安3大学',6);

多表查询

先前数据,我们有两张表 dept 和 emphasdept

查看 dept 表 的创建语法。

show create table dept;
CREATE TABLE `dept` (`id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',`name` varchar(50) NOT NULL COMMENT '部门名称',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='部门表'

查看dept表中的数据。

查看 emphasdept 表的创建语法

show create table emphasdept;

CREATE TABLE `emphasdept` (`id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',`name` varchar(50) NOT NULL COMMENT '姓名',`age` int DEFAULT NULL COMMENT '年龄',`job` varchar(20) DEFAULT NULL COMMENT '职位',`salary` int DEFAULT NULL COMMENT '薪资',`entrydate` date DEFAULT NULL COMMENT '入职时间',`managerid` int DEFAULT NULL COMMENT '直属领导ID',`dept_id` int DEFAULT NULL COMMENT '部门ID',PRIMARY KEY (`id`),KEY `fk_emp_dept_id` (`dept_id`),CONSTRAINT `fk_emp_dept_id` FOREIGN KEY (`dept_id`) REFERENCES `dept` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='员工表'

查看emphasdept 表中的数据。

全部查询,笛卡尔积查询

#如果只是从两张表中查询,会有笛卡尔积 出现,在dept 中,有5行数据,emphasdept 中有6行数据,因此查询出来有 5*6 = 30行数据
#多表查询,多个表用 逗号  隔开
select * from dept,emphasdept ;

但这并不是我们想要的结果,例如 金庸 本身只是在 总经办,因此多表查询一般都要有where条件参与

select * from dept,emphasdept where dept.id = emphasdept.dept_id;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/70286.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云端IDE如何重定义开发体验

豆包 MarsCode 是一个集成了AI功能的编程助手和云端IDE,旨在提高开发效率和质量。它支持多种编程语言和IDE,提供智能代码补全、代码解释、单元测试生成和问题修复等功能,同时具备AI对话视图和开发工具。 豆包 MarsCode 豆包 MarsCode 编程助…

6. k8s二进制集群之各节点部署

获取kubernetes源码安装主节点(分别执行以下各节点命令)安装工作节点(同步kebelet和kube-proxy到各工作节点)总结 继续上一篇文章《k8s二进制集群之ETCD集群部署》下面介绍一下各节点的部署与配置。 获取kubernetes源码 https:/…

办理CE-notify-body资质流程详细讲解

CE(Notify Body)即欧盟CE认证公告机构,俗称NB机构,以下是关于CE(Notify Body)的详细解释 定义与功能 : 定义 :CE(Notify Body)是经欧盟成员国认可的实体机构…

JAVA异步的TCP 通讯-客户端

一、客户端代码示例 import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.AsynchronousSocketChannel; import java.nio.channels.CompletionHandler; import java.util.concurrent.ExecutorService; impo…

redis之RDB持久化过程

redis的rdb持久化过程 流程图就想表达两点: 1.主进程会fork一个子进程,子进程共享主进程内存数据(fork其实是复制页表),子进程读取数据并写到新的rdb文件,最后替换旧的rdb文件。 2.在持久化过程中主进程接收到用户写操作&#x…

ElasticSearch学习笔记-解析JSON格式的内容

如果需要屏蔽其他项目对Elasticsearch的直接访问操作&#xff0c;统一由一个入口访问操作Elasticsearch&#xff0c;可以考虑直接传入JSON格式语句解析执行。 相关依赖包 <properties><elasticsearch.version>7.9.3</elasticsearch.version><elasticsea…

15.PPT:文静-云计算行业发展【29】

目录 NO123​ NO345​ NO6​ NO78 NO9/10/11/12​ NO123 设计→幻灯片大小→自定义幻灯片大小→ 全屏显示&#xff08;16&#xff1a;9&#xff09;→最大化 NO345 SmartArt 主题颜色2/6/9&#xff1a;形状样式&#xff1a;样式 加大行距加宽间距 NO6 NO78 设计→设置背景…

Vue(3)

一.生命周期及其四个阶段 Vue生命周期&#xff1a;一个Vue实例从创建到销毁的整个过程 生命周期四个阶段&#xff1a;①创建②挂载③更新④销毁 <body><div id"app"><h3>{{ title }}</h3><div><button click"count--"&…

k8s部署rabbitmq

1. 创建provisioner制备器(如果已存在,则不需要) 1.1 编写nfs-provisioner-rbac.yaml配置文件 apiVersion: v1 kind: ServiceAccount metadata:name: nfs-client-provisionernamespace: wms --- kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata:nam…

deepseek本地部署,使用python交互运行

deepseek Github 地址&#xff1a;https://github.com/deepseek-ai/DeepSeek-R1 在Github中我们看到这样的图片&#xff0c;模型参数等都可以通过HuggingFace下载&#xff0c;DeepSeek-R1-Distill-Qwen-参数量&#xff0c;参数量越大&#xff0c;对显存的要求更高 我们以参数量…

SpringUI Web高端动态交互元件库

Axure Web高端动态交互元件库是一个专为Web设计与开发领域设计的高质量资源集合&#xff0c;旨在加速原型设计和开发流程。以下是关于这个元件库的详细介绍&#xff1a; 一、概述 Axure Web高端动态交互元件库是一个集成了多种预制、高质量交互组件的工具集合。这些组件经过精…

TLS 和 SSL区别

TLS 与 SSL 的区别 TLS&#xff08;传输层安全协议&#xff09;和 SSL&#xff08;安全套接字层&#xff09;都是用于加密网络通信的协议&#xff0c;特别是在 Web 流量&#xff08;如 HTTPS&#xff09;中保护数据传输的安全。虽然它们有相似的功能和目的&#xff0c;但在协议…

Spring Boot整合MQTT

MQTT是基于代理的轻量级的消息发布订阅传输协议。 1、下载安装代理 进入mosquitto下载地址&#xff1a;Download | Eclipse Mosquitto&#xff0c;进行下载&#xff0c;以win版本为例 下载完成后&#xff0c;在本地文件夹找到下载的代理安装文件 使用管理员身份打开安装 安装…

MyBatis 调优指南:释放持久层性能潜力

MyBatis 作为一款优秀的持久层框架&#xff0c;以其灵活性和易用性深受开发者喜爱。然而&#xff0c;随着应用规模扩大和数据量增长&#xff0c;MyBatis 的性能问题也逐渐显现。本文将深入探讨 MyBatis 调优策略&#xff0c;帮助您释放持久层性能潜力。 一、 SQL 语句优化 避免…

CentOS服务器部署Docker+Jenkins持续集成环境

一、准备工作 一台运行 CentOS 的服务器&#xff0c;确保有足够的磁盘空间、内存资源&#xff0c;并且网络连接稳定。建议使用 CentOS 7 或更高版本&#xff0c;本文以 CentOS 7 为例进行讲解。 拥有服务器的 root 权限&#xff0c;因为后续安装软件包、配置环境等操作需要较…

网络数据请求

1.GET和POST请求 1.1发送GET请求 1.2发送POST请求 1.3 在页面刚加载的时候请求数据 2.request请求的注意事项

【OpenCV实战】基于 OpenCV 的多尺度与模板匹配目标跟踪设计与实现

文章目录 基于 OpenCV 的模板匹配目标跟踪设计与实现1. 摘要2. 系统概述3. 系统原理3.1 模板匹配的基本原理3.2 多尺度匹配 4. 逻辑流程4.1 系统初始化4.2 主循环4.3 逻辑流程图 5. 关键代码解析5.1 鼠标回调函数5.2 多尺度模板匹配 6. 系统优势与不足6.1 优势6.2 不足 7. 总结…

数据结构与算法学习笔记----博弈论

# 数据结构与算法学习笔记----博弈论 author: 明月清了个风 first publish time: 2025.2.6 ps⭐️包含了博弈论中的两种问题Nim游戏和SG函数&#xff0c;一共四道例题&#xff0c;给出了具体公式的证明过程。 Acwing 891. Nim游戏 [原题链接](891. Nim游戏 - AcWing题库) 给…

deepseek本地部署

DeepSeek本地部署详细指南 DeepSeek作为一款开源且性能强大的大语言模型&#xff0c;提供了灵活的本地部署方案&#xff0c;让用户能够在本地环境中高效运行模型&#xff0c;同时保护数据隐私&#xff0c;这里记录自己DeepSeek本地部署流程。 主机环境 cpu:amd 7500Fgpu:406…

【大数据技术】搭建完全分布式高可用大数据集群(Scala+Spark)

搭建完全分布式高可用大数据集群(Scala+Spark) scala-2.13.16.tgzspark-3.5.4-bin-without-hadoop.tgz注:请在阅读本篇文章前,将以上资源下载下来。 写在前面 本文主要介绍搭建完全分布式高可用集群Spark的详细步骤。 注意: 统一约定将软件安装包存放于虚拟机的/softwa…