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 编程助…

redis之RDB持久化过程

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

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

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

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

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

SpringUI Web高端动态交互元件库

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

Spring Boot整合MQTT

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

网络数据请求

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函数,一共四道例题,给出了具体公式的证明过程。 Acwing 891. Nim游戏 [原题链接](891. Nim游戏 - AcWing题库) 给…

deepseek本地部署

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

VUE 集成企微机器人通知

message-robot 便于线上异常问题及时发现处理,项目中集成企微机器人通知,及时接收问题并处理 企微机器人通知工具类 export class MessageRobotUtil {constructor() {}/*** 发送 markdown 消息* param robotKey 机器人 ID* param title 消息标题* param…

消防救援营区管理2024年度回顾与分析

2024年,消防救援营区管理领域在挑战与机遇并存的环境中取得了显著进展。站在产业和行业的角度,对这一年的回顾具有重要意义。 营区设施管理方面,基础设施建设与维护工作成效显著。 老旧营房的修缮确保了消防员居住环境的安全舒适,…

趣解单词,实现快速记忆

英文单词 love,是“爱”的意思: love v./n.爱;喜欢;热爱;爱情;心爱的人 那什么是爱呢?love,首字母为l,是一根绳子,ve-通f,love通life&#xff0…

PostgreSQL拼接字符串的几种方法简单示例例子解析

代码示例: 在PostgreSQL中,拼接字符串可以使用多种方法,以下是一些常用的方法和示例: 使用 || 操作符 这是最简单直接的字符串拼接方式。 SELECT Hello || || World AS ConcatenatedString;结果: ConcatenatedStrin…

4 [危机13小时追踪一场GitHub投毒事件]

事件概要 自北京时间 2024.12.4 晚间6点起, GitHub 上不断出现“幽灵仓库”,仓库中没有任何代码,只有诱导性的病毒文件。当天,他们成为了 GitHub 上 star 增速最快的仓库。超过 180 个虚假僵尸账户正在传播病毒,等待不…

Android学习19 -- 手搓App

1 前言 之前工作中,很多时候要搞一个简单的app去验证底层功能,Android studio又过于重型,之前用gradle,被版本匹配和下载外网包折腾的堪称噩梦。所以搞app都只有找应用的同事帮忙。一直想知道一些简单的app怎么能手搓一下&#x…

深度学习 Pytorch 神经网络的学习

本节将从梯度下降法向外拓展,介绍更常用的优化算法,实现神经网络的学习和迭代。在本节课结束将完整实现一个神经网络训练的全流程。 对于像神经网络这样的复杂模型,可能会有数百个 w w w的存在,同时如果我们使用的是像交叉熵这样…

使用1panel给neo4j容器安装apoc插件

文章目录 下载apoc插件安装apoc插件重启容器并验证 APOC插件是 Awesome Procedures of Cypher 是Neo4j图数据库的扩展过程和函数库。 下载apoc插件 apoc插件下载界面,选择与neo4j兼容的apoc版本apoc与neo4j版本对应表 安装apoc插件 需要挂载容器中/var/lib/ne…

e2studio开发RA2E1(5)----GPIO输入检测

e2studio开发RA2E1.5--GPIO输入检测 概述视频教学样品申请硬件准备参考程序源码下载新建工程工程模板保存工程路径芯片配置工程模板选择时钟设置GPIO口配置按键口配置按键口&Led配置R_IOPORT_PortRead()函数原型R_IOPORT_PinRead()函数原型代码 概述 本篇文章主要介绍如何…

【漫话机器学习系列】070.汉明损失(Hamming Loss)

汉明损失(Hamming Loss) 汉明损失是多标签分类问题中的一种评价指标,用于衡量预测结果与实际标签之间的差异。它定义为预测错误的标签比例,即错误标签的个数占总标签数量的比值。 在多标签分类中,每个样本可以属于多…