【从删库到跑路】MySQL数据库的查询(单表查询,多表查询,内外连接,联合查询,子查询)

这篇具有很好参考价值的文章主要介绍了【从删库到跑路】MySQL数据库的查询(单表查询,多表查询,内外连接,联合查询,子查询)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🎊专栏【MySQL】
🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。
🎆音乐分享【如愿】
大一同学小吉,欢迎并且感谢大家指出我的问题🥰

【从删库到跑路】MySQL数据库的查询(单表查询,多表查询,内外连接,联合查询,子查询)

🍔多表查询

⭐多表关系

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

  • 一对多(多对一)
  • 多对多
  • 一对一

🎈一对多(多对一)

案例:部门和员工之间的关系
关系:一个部门对于多个员工,一个员工对应一个部门

🏀实现

的一方建立外键,指向的一方的主键
【从删库到跑路】MySQL数据库的查询(单表查询,多表查询,内外连接,联合查询,子查询)

🎈多对多

案例:学生与课程之间的关系
关系:一个学生可以选修多门课程,一门课程也可以供多个学生选择

🏀实现

建立第三张中间表,中间表至少包含两个外键分别关联两方主键
【从删库到跑路】MySQL数据库的查询(单表查询,多表查询,内外连接,联合查询,子查询)
🏳️‍🌈创建两个表并且插入数据

create table student(
    id int auto_increment primary key comment '主键ID',
    name varchar(10) comment '姓名',
    no varchar(10) comment '学号'
) comment '学生表';

insert into student values (null,'小吉','123'),(null,'fufu','123'),(null,'御坂美琴','123'),(null,'海绵宝宝','123');

【从删库到跑路】MySQL数据库的查询(单表查询,多表查询,内外连接,联合查询,子查询)

create table course(
    id int auto_increment primary key comment '主键ID',
    name varchar(10) comment '课程名称'
) comment '课程表';

insert into course values (null,'java'),(null,'php'),(null,'mysql'),(null,'c嘎嘎');

【从删库到跑路】MySQL数据库的查询(单表查询,多表查询,内外连接,联合查询,子查询)

🏳️‍🌈创建第三个表
通过第三个表来维护他们之间的关系

create table student_course(
    id int auto_increment comment '主键' primary key,
    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 course(id)
)comment '学生课程之间表';

insert into student_course values (null,1,1),(null,1,2),(null,1,3),(null,2,2),(null,2,3),(null,3,4);

【从删库到跑路】MySQL数据库的查询(单表查询,多表查询,内外连接,联合查询,子查询)

🏀以图形化的方式来表示

【从删库到跑路】MySQL数据库的查询(单表查询,多表查询,内外连接,联合查询,子查询)

🎈一对一

案例:用户与用户详情的关系
关系:一对一关系,多用于单表拆分,将一张表的基础字段放在一张表中,其他详情字段放在另一张表中,以提升操作效率

🏀实现:

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

【从删库到跑路】MySQL数据库的查询(单表查询,多表查询,内外连接,联合查询,子查询)
先建立表

create table tb_user(
    id int auto_increment primary key comment '主键ID',
    name varchar(10) comment '姓名',
    age int comment '年龄',
    gender char(1) comment '1: 男 , 2:女 ',
    phone char(11) comment '手机号'
) comment '用户基本信息表';

【从删库到跑路】MySQL数据库的查询(单表查询,多表查询,内外连接,联合查询,子查询)

先建立表

create table tb_user_edu(
    id int auto_increment primary key comment '主键ID',
    degree varchar(20) comment '学历',
    major varchar(20) comment '专业',
    primaryschool varchar(50) comment '小学',
    middleschool varchar(50) comment '中学',
    university varchar(50) comment '大学',
    userid int unique comment '用户ID',
    constraint fk_userid foreign key (userid) references tb_user(id)
)comment '用户教育信息表';

【从删库到跑路】MySQL数据库的查询(单表查询,多表查询,内外连接,联合查询,子查询)

然后向表中插入数据

insert into tb_user(id, name, age, gender, phone) values
        (null,'小吉','1','2','3'),
        (null,'小吉','1','2','3'),
        (null,'小吉','1','2','3'),
        (null,'小吉','1','2','3');


insert into tb_user_edu(id, degree, major, primaryschool, middleschool, university, userid) values
         (null,'博士','计算机','1','1','哔哩哔哩大学',1),
         (null,'博士','计算机','1','1','哔哩哔哩大学',2),
         (null,'博士','计算机','1','1','哔哩哔哩大学',3),
         (null,'博士','计算机','1','1','哔哩哔哩大学',4);

一条userid就对应一个用户的基本信息

【从删库到跑路】MySQL数据库的查询(单表查询,多表查询,内外连接,联合查询,子查询)

🏀以图形化的方式展示

【从删库到跑路】MySQL数据库的查询(单表查询,多表查询,内外连接,联合查询,子查询)

⭐多表查询语法

select * from1,表2,……;

🎈单表查询

【从删库到跑路】MySQL数据库的查询(单表查询,多表查询,内外连接,联合查询,子查询)

🎈多表查询

【从删库到跑路】MySQL数据库的查询(单表查询,多表查询,内外连接,联合查询,子查询)

🏀我们发现,最终的结果有16条,但是是为什么呢

【从删库到跑路】MySQL数据库的查询(单表查询,多表查询,内外连接,联合查询,子查询)
因为44=16
course中有4条,student中有4条,44=16

这种现象称为笛卡儿积

🏳️‍🌈笛卡儿积

是指在数学中,集合A和集合B的所有的组成情况
【从删库到跑路】MySQL数据库的查询(单表查询,多表查询,内外连接,联合查询,子查询)
当前就是两张表所有的组成情况
但是在设计开发中,我们不需要这么多的情况,我们需要消除无效的情况

🏀消除无效的笛卡儿积
select * from course ,student where course.id=student.id;

【从删库到跑路】MySQL数据库的查询(单表查询,多表查询,内外连接,联合查询,子查询)

⭐内连接

【从删库到跑路】MySQL数据库的查询(单表查询,多表查询,内外连接,联合查询,子查询)

🎈隐式内连接

select 字段列表 from1,表2 where 条件……;

查询学生的姓名以及关联的课程

select student.name,course.name from student,course where student.id=course.id;

【从删库到跑路】MySQL数据库的查询(单表查询,多表查询,内外连接,联合查询,子查询)

🎈显示内连接

select 字段列表 from1 (inner) join2 on 连接条件……;

查询学生的姓名以及关联的课程

select student.name,course.name from student inner join  course on student.id=course.id;

【从删库到跑路】MySQL数据库的查询(单表查询,多表查询,内外连接,联合查询,子查询)

⭐外连接

🎈左外连接

【从删库到跑路】MySQL数据库的查询(单表查询,多表查询,内外连接,联合查询,子查询)

🤖相当于查询左表的所有数据 包含 左表和右表交集部分的数据

select 字段列表 from1 left (outer) join2 on 条件……;

会查询到左表的所有数据

【从删库到跑路】MySQL数据库的查询(单表查询,多表查询,内外连接,联合查询,子查询)
左表
【从删库到跑路】MySQL数据库的查询(单表查询,多表查询,内外连接,联合查询,子查询)

🎈右外连接

【从删库到跑路】MySQL数据库的查询(单表查询,多表查询,内外连接,联合查询,子查询)

🤖相当于查询右表的所有数据 包含 左表和右表交集部分的数据

select 字段列表 from1 right (outer) join2 on 条件……;

会查询到右表的所有数据

【从删库到跑路】MySQL数据库的查询(单表查询,多表查询,内外连接,联合查询,子查询)

⭐自连接

就是在同一张表中进行查询
需要把一张表看作两张表

自连接必须起别名

【从删库到跑路】MySQL数据库的查询(单表查询,多表查询,内外连接,联合查询,子查询)
原来的表
【从删库到跑路】MySQL数据库的查询(单表查询,多表查询,内外连接,联合查询,子查询)

🌺联合查询

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

查询到的多张表的列数要保持一致,而且字段列表也要保持一致

select 字段列表 from 表A……
union (all)
select 字段列表 from 表B……;

🎈union all

合并查询到的两个表,不进行查重

🎈union

合并查询到的两个表,进行查重

【从删库到跑路】MySQL数据库的查询(单表查询,多表查询,内外连接,联合查询,子查询)
这里我们发现,“鹿杖客”出现了两次
那么我们可以去掉all来去重
【从删库到跑路】MySQL数据库的查询(单表查询,多表查询,内外连接,联合查询,子查询)

🌺子查询

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

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

子查询的外部语句可以是insert update delete selete的任何一个

🏳️‍🌈根据查询结果不同,分为

查询方式 查询结果
标量子查询 子查询结果为单个值
列子查询 子查询结果为一列
行子查询 子查询结果为一行
表子查询 子查询结果为多行多列

🏳️‍🌈根据子查询位置,分为where之后,from之后,select之后

🎄标量子查询

使用操作符 = > < >= <=
查询结果返回的是单个值这种最简单的方式
【从删库到跑路】MySQL数据库的查询(单表查询,多表查询,内外连接,联合查询,子查询)

🎄列子查询

子查询返回的是一列(可以是多行)
常用操作符:in,not in,any,some,all

操作符 描述
in 在指定的集合范围之内,多选一
not in 不在指定的集合范围之内
any 子查询返回列表中,有任意一个满足即可
some 与any等同,使用some的地方都可以使用any
all 子查询返回列表的所有值都必须满足

【从删库到跑路】MySQL数据库的查询(单表查询,多表查询,内外连接,联合查询,子查询)
【从删库到跑路】MySQL数据库的查询(单表查询,多表查询,内外连接,联合查询,子查询)

🎄行子查询

子查询返回的是一行(可以是多列)
常用操作符:= <> in ,not in
【从删库到跑路】MySQL数据库的查询(单表查询,多表查询,内外连接,联合查询,子查询)
或者
【从删库到跑路】MySQL数据库的查询(单表查询,多表查询,内外连接,联合查询,子查询)

🎄表子查询

子查询返回的是多行多列
常用运算符:in
【从删库到跑路】MySQL数据库的查询(单表查询,多表查询,内外连接,联合查询,子查询)

🥰如果大家有不明白的地方,或者文章有问题,欢迎大家在评论区讨论,指正🥰文章来源地址https://www.toymoban.com/news/detail-499294.html

到了这里,关于【从删库到跑路】MySQL数据库的查询(单表查询,多表查询,内外连接,联合查询,子查询)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【从删库到跑路】详细讲解MySQL的函数和约束作用

    【从删库到跑路】详细讲解MySQL的函数和约束作用

    🎊专栏【MySQL】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【如愿】 大一同学小吉,欢迎并且感谢大家指出我的问题🥰 是指一段可以直接被另一段程序调用的程序或代码 🎈字符串拼接函数 🎈把字符串全部变为小写 🎈把字符串全部变为大写 🎈字符串

    2024年02月09日
    浏览(13)
  • 【MySQL从删库到跑路 | 基础第二篇】——谈谈SQL中的DML语句

    【MySQL从删库到跑路 | 基础第二篇】——谈谈SQL中的DML语句

    个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【MySQL学习专栏】🎈 本专栏旨在分享学习MySQL的一点学习心得,欢迎大家在评论区讨论💌 前面我们已经讲解了SQL语句中的DDL语句。今天我们继续来学习SQL的DML语句。

    2024年02月07日
    浏览(10)
  • 【从删库到跑路】MySQL系列——详细讲解SQL的DDL,DML,DQL,DCL语句

    【从删库到跑路】MySQL系列——详细讲解SQL的DDL,DML,DQL,DCL语句

    🎊专栏【MySQL】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【如愿】 大一同学小吉,欢迎并且感谢大家指出我的问题🥰 内容有点多,建议大家先看目录。 建立在关系模型基础上,由多张相互连接的二维表组成的数据库 🏀使用表存储数据,格式统一,

    2024年02月09日
    浏览(21)
  • 看完这篇都有DBA级别的MySQL备份经验了,再也不害怕删库跑路了

            在做运维的路上,相信大家会跟数据库经常打交道吧,那么数据库最重要的时候什么呢,那么肯定是备份了,这篇文章主要内容是介绍了,MySQL的几种常见的备份方式,主要是分为两种,第一种是基于MySQL提供的工具来进行备份,还有一种是基于使用第三方工具来进行

    2024年02月05日
    浏览(8)
  • rm -rf 真是删库跑路的一把好手

    上回书说到《一个月黑风高的夜晚紧急完成gitlab服务器数据迁移》,因为数据迁移后原数据还是存在的,该分区硬盘快满了,进而影响了原目录下的日志存储,既然数据已经迁移到新的路径了,那原来的库直接删掉就好了,往往就是这么不经意间做了一个令人十分后怕的决定

    2024年02月05日
    浏览(11)
  • 微服务技术栈笔记从入门到跑路-SpringCloud+Gateway+Nacos+MQ+ES(保姆级)

    微服务技术栈笔记从入门到跑路-SpringCloud+Gateway+Nacos+MQ+ES(保姆级)

    SpringCloud和Dubbo是微服务方案的实现 微服务技术对比 SpringCloud 和SpringBoot版本兼容需要对应 (左侧是SpringCloud的版本,右侧SpringBoot版本。两者版本需要一一对应,否者可能出现兼容性问题) (此笔记基于SpringCloud Hopxton.SR10和SpringBoot2.3.x进行记录) 微服务需要根据业务模块拆分

    2024年02月08日
    浏览(15)
  • 【MySQL 】MySQL 创建数据库, MySQL 删除数据库,MySQL 选择数据库

    【MySQL 】MySQL 创建数据库, MySQL 删除数据库,MySQL 选择数据库

    作者简介: 辭七七,目前大一,正在学习C/C++,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: 七七的闲谈 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖 我们可以在登陆 MySQL 服务后,使用 create 命令创建数据库,语法如下: 以下命令简单的演示了创建数据库的过程,

    2024年02月13日
    浏览(53)
  • MySQL数据库:数据库管理系统与安装MySQL数据库

    MySQL数据库:数据库管理系统与安装MySQL数据库

    目录 一、理论 1.数据库管理系统 2.关系型数据库 3.数据库 4.MySQL数据库 5.MySQL部署 二、实验 1.yum安装MySQL 2.编译安装MySQL 3.配置MySQL数据库的Tab补全  三、问题 1.数据库登录报错 2.数据库密码复杂度报错 3.数据库连接报错 四、总结 (1)概念 数据库管理系统(Database Management

    2024年02月12日
    浏览(14)
  • 【MySQL数据库】MySQL数据库管理

    【MySQL数据库】MySQL数据库管理

    Structure Query Language(结构化查询语言)简称SQL,它被美国国家标准局(ANSI)确定为关系型数据库语言的美国标准,后被国际化标准组织(ISO)采纳为关系数据库语言的国际标准。数据库管理系统可以通过SQL管理数据库;定义和操作数据,维护数据的完整性和安全性。 数据:(data)

    2024年02月08日
    浏览(9)
  • 初识MySQL数据库——“MySQL数据库”

    初识MySQL数据库——“MySQL数据库”

    各位CSDN的uu们你们好呀,小雅兰好久没有更文啦,确实是心有余而力不足,最近学习的内容太难了,这篇博客又是小雅兰的新专栏啦,主要介绍的是一些MySQL数据库的知识点,下面,让我们进入初识MySQL数据库的世界吧 为什么要使用数据库 数据库与数据库管理系统 MySQL介绍

    2024年02月06日
    浏览(8)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包