MySQL学习笔记------多表查询

目录

多表关系

一对多

多对多

一对一

多表查询

概述

 分类

内连接(交集)

隐式内连接

显式内连接

​编辑

外连接(from后为左表,join后为右表)

左外连接

右外连接

自连接 

 联合查询(union,union all)

子查询

分类

标量子查询

列子查询 

行子查询 

表子查询


多表关系

概述

项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在各种联系

基本分为三类:一对多,多对多,一对一

一对多

典型案例:部门与员工

实现:在多的一方建立一个外键,指向一的一方的主键

多对多

典型案例:学生与课程的关系

实现:建立第三张中间表,中间表至少包含两个外键,分别关联两方主键

#建立学生表
create table student(
    id int auto_increment primary key  comment '主键ID',
    name varchar(10) comment '姓名',
    no varchar(10) comment '学号'
)comment '学生表';
insert into student(id, name, no) VALUES (1,'孔明','1000000000'),(2,'士元','1000000001'),(3,'仲达','1000000003'),(4,',孟德','1000000004');
#建立课程表
create table course(
    id int auto_increment primary key comment '主键ID',
    name varchar(10) comment '课程名称'
)comment '课程表';
insert into course(id, name) VALUES (1,'Java'),(2,'MySQL'),(3,'PHP'),(4,'C++');
#建立学生课程表
create table student_course(
    id int auto_increment primary key comment '主键',
    student_id int not null comment '学生ID',
    course_id int not null comment '课程编码',
    constraint fk_courseid foreign key (course_id)references  course(id),
    constraint fk_student_id foreign key (student_id)references student(id)
)comment '学生课程中间表';
insert into student_course(id, student_id, course_id) VALUES (1,1,1),(2,2,2),(3,3,3),(4,4,4);

添加外键后出现蓝色小钥匙 

一对一

案例:用户与用户详情

关系:一对一,用于单表拆分,将表的基础字段放在一张表中,其他详情字段放到另一张表中,提高操作效率

实现:在任意一方加入外键,关联另一方的主键,并且设置外键为唯一的(unique)

多表查询

概述

建表

create table dept(
    id int auto_increment comment 'ID' primary key ,
    name varchar(50) not null comment '部门名称'
)comment '部门表';
insert into dept(id,name) VALUES (1,'研发部'),(2,'市场部'),(3,'财务部'),(4,'销售部'),(5,'总经办'),(6,'人事部');
create table employee(
    #唯一标识,主键,自动增长为auto_increment
    id int primary key auto_increment comment 'ID',
    #不为空且唯一
    name varchar(10) not null unique comment '姓名',
    #大于零小于120
    age int check ( age>0&&age<120 )comment '年龄',
    job varchar(20) comment '职务',
    salary int comment '薪资',
    entrydate date comment '入职时间',
    dept_id int comment '部门id'
)comment '员工表';
insert into employee(id,name,age,job,salary,entrydate,dept_id)values (1,'关羽',22,'开发',3000,'2018-11-1',1),
                                                                     (2,'刘备',34,'经理',10000,'2011-2-11',2),
                                                                     (3,'张飞',18,'程序员鼓励师',8000,'2020-1-2',4),
                                                                     (4,'曹操',30,'董事长',2000000,'1990-3-4',5),
                                                                     (5,'周瑜',16,'财务总监',10000,'2000-3-5',3);

 查询:

#查询---笛卡尔积
select *from employee,dept;

此时查询,会匹配每个人所有部门匹配一次

修改之后

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

 分类

 例如:AB两表

连接查询

    内连接:相当于查询A、B交集部分数据

    外连接:

        左外连接:查询左表所有数据,以及两张表交集部分数据

        右外连接:查询右表所有数据,以及两边交集部分数据

   自连接:当前表与自身的连接查询,自连接必须使用表别名

子查询

内连接(交集)

内连接分为隐式和显式

隐式内连接

select 字段列表 from 表1,表2 where 条件...;

以上面部门表和员工表为例

#查询员工及其关联部门名称
select employee.name,dept.name from employee,dept where employee.dept_id=dept.id;

显式内连接

select 字段列表 from 表1 [inner] join 表2 on 连接条件...;


#显式
select employee.name,dept.name from employee inner join dept on employee.dept_id=dept.id;

外连接(from后为左表,join后为右表)

左外连接

select 字段列表 from 表1 left [outer] join 表2 on 条件...;

相当于查询表1(左表)的所有数据(包含表交集部分)

#左外连接
select e.*,d.name from employee e left outer join dept d on e.dept_id=d.id;

完全包含左表 

右外连接

select 字段列表 from 表1 right [outer] join 表2 on 条件...;

相当于查询表2(右表)的所有数据(包含表交集部分)

#右外连接
select d.*,e.* from employee e right outer join dept d on e.dept_id=d.id;

自连接 

自连接查询语法(必须取别名)

select 字段列表 from 表A 别名A  jion 表A 别名B on 条件...;(join可省略)

自连接查询,可以是内连接查询,也可以是外连接查询。

#自连接
select a.name,b.name from employee a,employee b where a.manageid=b.id;

 给表添加了上司id

 联合查询(union,union all)

对于union查询,就是把多次查询的结果合并,形成一个新的查询结果集

语法:

select 字段列表 from 表A  ...

union[all]

select 字段列表 from 表B......;

#联合查询
select * from employee where age>20
union all
select *from employee where salary>20000;

去掉all可去重

注意事项:对于联合查询的多张表的列数必须保持一致,字段类型也需要保持一致

子查询

SQL语句中嵌套select语句,称为嵌套查询,又称子查询

语法:

select * from t1 where column1=(select co;lumn1 from t2);

子查询外部的语句可以是insert/update/delect/select的任何一个

分类

根据子查询结果不同可分为

标量子查询(子查询结果为单个值)

列子查询(子查询结果为1列)

行子查询(子查询结果为1行)

表子查询(子查询结果为多行多列)

根据子查询位置分为:where之后、from之后、select之后。

标量子查询

子查询返回的结果是单个值(数字、日期、字符串等),最简单的形式

#标量子查询
select*from employee where dept_id=(select id from dept where name='财务部');
#()内返回值为销售部id

列子查询 

#列子查询
select *from employee where dept_id in (select id from dept where name='财务部'or name='研发部');
#空格内返回一列

行子查询 

#行子查询
select *from employee where (salary,manageid)=(select salary,manageid from employee where name='周瑜');

表子查询

#表子查询
select e.*,d.*from (select*from employee where  entrydate>'2000-01-01') e left outer join dept d on e.dept_id=d.id;

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

APP的UI设计规范

APP的设计规范是一系列原则和标准&#xff0c;旨在确保应用程序提供一致、易用且美观的用户体验。以下是一些关键的APP设计规范。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1.一致性&#xff1a; 保持界面元素和交互行为的一致性…

Sketch是免费软件吗?这款软件支持导入!

Sketch 是一款针对网页、图标、插图等设计的矢量绘图软件。Sketch 的操作界面非常简单易懂&#xff0c;帮助全世界的设计师创作出许多不可思议的作品。但是同时&#xff0c;Sketch 也有一些痛点&#xff1a;使用 Sketch 需要安装 InVision、Abstract 、Zeplin 等插件&#xff0…

【LeetCode: 455. 分发饼干 + 贪心】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

Docker 引擎离线安装包采集脚本

文章目录 一、场景说明二、脚本职责三、参数说明四、操作示例五、注意事项 一、场景说明 本自动化脚本旨在为提高研发、测试、运维快速部署应用环境而编写。 脚本遵循拿来即用的原则快速完成 CentOS 系统各应用环境部署工作。 统一研发、测试、生产环境的部署模式、部署结构、…

鼠标不动N秒,电脑自动待机睡眠V1.0

鼠标不动N秒&#xff0c;电脑自动待机睡眠V1.0 开发背景&#xff1a;因为不关电脑多次被罚款&#xff0c;所以下决心做一个自动待机睡眠软件 win系统自带的睡眠小程序&#xff0c;在电脑正在运行其它程序时&#xff0c;只能关闭屏幕而不是电脑待机。 为了电脑深度睡眠待机&a…

基于LNMP环境上线QQ农场

目录 一.介绍 二. 环境准备 三.安装Mysql数据库 四.安装PHP 五.安装Nginx 六.测试Nginx服务于PHP服务是否能关联 七.项目上线 QQ农场源码&#xff1a;做本项目默认操作者有一定的基础知识与理解能力 链接&#xff1a;https://pan.baidu.com/s/1HF8GZ-yvNh7RbJ61nXOW-g?…

吴恩达最新活动演讲 :AI Agent不应该只是执行,而是能够自主思考工作流

AI Agent&#xff0c;作为一种能够感知环境、进行决策和执行动作的智能实体&#xff0c;正逐渐成为人工智能领域的重要发展方向。随着大型语言模型&#xff08;LLM&#xff09;技术的不断进步&#xff0c;AI Agent的应用潜力正在被逐步释放&#xff0c;它们不仅能够执行基于明确…

Linux操作系统上启动redis服务

一、下载安装redis 网上找教程。 二、修改redis.conf配置文件 1.先进入redis目录 2. ls查看文件 3.修改redis.conf中的配置&#xff0c;将daemonize no改成daemonize yes。 输入指令进行修改修改 vi redis.conf 保存退出。 三、启动redis服务 在下载的redis目录下执行以…

13 - Debian如何配置网络(1)

作者&#xff1a;网络傅老师 特别提示&#xff1a;未经作者允许&#xff0c;不得转载任何内容。违者必究&#xff01; Debian如何配置网络&#xff08;1&#xff09; 《傅老师Debian小知识库系列之13》——原创 前言 傅老师Debian小知识库特点&#xff1a; 1、最小化拆解Deb…

特别详细的Spring Cloud 系列教程1:服务注册中心Eureka的启动

Eureka已经被Spring Cloud继承在其子项目spring-cloud-netflix中&#xff0c;搭建Eureka Server的方式还是非常简单的。只需要通过一个独立的maven工程即可搭建Eureka Server。 我们引入spring cloud的依赖和eureka的依赖。 <dependencyManagement><!-- spring clo…

基于李雅普诺夫稳定性分析的一阶、二阶系统MATLAB仿真模型

李雅普诺夫稳定性定理 假设系统状态方程&#xff1a; 零状态为其平衡状态&#xff0c;即f(0,t)0 t&#xff1e;t0。如果存在一个具有连续的一阶偏导数的标量函数V (x,t)&#xff0c;并且满足下述条件&#xff1a; 1、V (x,t)是正定的&#xff1b; 2、沿状态方程轨线的V (x…

CV论文--2024.4.7

1、Know Your Neighbors: Improving Single-View Reconstruction via Spatial Vision-Language Reasoning 中文标题&#xff1a;了解你的邻居&#xff1a;通过空间视觉语言推理改进单视图重建 简介&#xff1a;在计算机视觉领域&#xff0c;从单个视图恢复三维场景几何是一个基…

30天拿下Rust之实战Web Server

概述 随着互联网技术的飞速发展&#xff0c;Web服务器作为承载网站与应用的核心组件&#xff0c;其性能、稳定性和安全性都显得至关重要。Rust语言凭借其独特的内存安全保证、高效的性能以及丰富的生态系统&#xff0c;成为了构建现代Web服务器的理想选择。 新建项目 首先&…

SVG图标显示

SVG图标显示 1.安装SharpVectors.Wpf包 2.添加引用 xmlns:svgc"http://sharpvectors.codeplex.com/svgc/"3.加载svg文件&#xff0c;生成操作选择资源(Resource) 4.UI界面显示SVG图像 <Button Click"OnSaveFileClick" ToolTip"Save Svg File…

4核8G服务器性能怎么样?4核8G12M配置可应对哪些场景?

腾讯云4核8G服务器多少钱&#xff1f;腾讯云4核8G轻量应用服务器12M带宽租用价格646元15个月&#xff0c;活动页面 txybk.com/go/txy 活动链接打开如下图所示&#xff1a; 腾讯云4核8G服务器优惠价格 这台4核8G服务器是轻量应用服务器&#xff0c;详细配置为&#xff1a;轻量4核…

护眼台灯3a好还是2a好?品质护眼灯十大品牌推荐

在如今电子产品普及、学习工作压力增大的背景下&#xff0c;用眼健康问题逐渐受到广大消费者的高度关注。护眼台灯作为改善视觉环境、减轻眼部疲劳的重要工具&#xff0c;其选择显得尤为关键。而在选择护眼台灯时&#xff0c;我们经常会遇到关于3A和2A的疑问&#xff0c;护眼台…

论文| Convolutional Neural Network-based Place Recognition - 2014

2014-Convolutional Neural Network-based Place Recognition

景区云旅游/视频慢直播方案设计与平台搭建

一、行业背景 经文化和旅游部数据中心测算&#xff0c;今年清明节假期3天全国国内旅游出游1.19亿人次&#xff0c;按可比口径较2019年同期增长11.5%&#xff1b;国内游客出游花费539.5亿元&#xff0c;较2019年同期增长12.7%。踏青赏花和户外徒步成为假期的热门出游主题。随着…

k8s单节点部署,容器运行时使用containerd

环境 系统 &#xff1a; entOS Linux release 7.9.2009 (CoreIP&#xff1a;192.168.44.177 硬件要求&#xff1a;控制平面最少需要 2c2g 安装前环境准备 如果是集群部署还需要配置时间同步 关闭防火墙 systemctl disable firewalld关闭selinux setenforce 0sed -i s/SELI…

STC8H8K64U 库函数学习笔记 —— GPIO 点灯

STC8H8K64U 库函数学习笔记 —— GPIO 点灯 环境说明&#xff1a; 芯片&#xff1a;STC8H8K64U 软件&#xff1a; KeilC51 μVersion V5.38.00STCAI-ISP (V6.94) 不得不说&#xff0c;Keil 是我用过的 IDE 中&#xff0c;最让人头疼的事情&#xff0c;写代码就像是在记事本里编…