Mysql Day03

多表设计

一对多

在多的一方添加外键约束,关联另外一方主键

一对一

任意一方添加外键约束,关联另外一方主键

多对多

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

idstu_idcourse_id

1

11

2

12
313
421
524

案例:苍穹外卖

分类表:菜品表(category_id) = 1 : n

分类表:套餐表(category_id) = 1 : n

菜品表:套餐表 = m:n

中间表记录setmeal_id, dish_id以及份数:copies

多表查询

从多张表中查询数据

全连接:笛卡尔积

A集合和B集合全部的组合情况

内连接

A集合和B集合交集

隐式内连接:select 字段列表 from 表1,表2 where condition...;

显式内连接:select 字段列表 from 表1 join 表2 on condition...;

起别名之后要用别名,不能用原名

左外连接

select 字段列表 from 表1 left join 表2 on condition...;

右外连接

select 字段列表 from 表1 right join 表2 on condition...;

相当于

select 字段列表 from 表2 left join 表1 on condition...;

子查询

标量子查询:返回标量

select * from tb_emp where dept_id = (select id from tb_dept where name = "教研部" )
select * from tb_emp where entrydate > (select entrydate from tb_emp where name = "房东白")

列子查询:返回一列

select * from tb_emp where dept_id in (select id from tb_dept where name = "教研部" or name = "教务处";

行子查询:返回一行

select * from tb_emp where (entrydate, job) = (select entrydate, job from tb_emp where name = "weiyixiao");

表子查询:返回多行多列

-- Inquire employees' information and department name
select * from tb_emp where entrydate > '2007-01-01';
select e.*, d.name from (select * from tb_emp where entrydate > '2007-01-01') e, tb_dept d where e.dept_id = d.id;

案例

-- 1.查询价格低于10元的菜品的名称、价格及其菜品的分类名称
select dish.name, dish.price, category.name from dish, category where dish.category_id = category.id and dish.price < 10-- 2.查询所有价格在10元(含)到50元(含)之间且状态为'起售'的菜品,展示出菜品的分类名称
select dish.name, category.name from dish left join category on dish.category_id = category.id where (dish.price between 10 and 50) and dish.status = 0;-- 3,查询每个分类下最贵的菜品,展示出分类的名称、最贵的菜品的价格
select category.name, max(dish.price) from dish, category where dish.category_id = category.id group by category.id-- 4,查询各个分类下菜品状态为‘起售’,并且该分类下菜品总数大于等于3的分类名称
select category.name where dish.category_id = category.id and dish.status = 1 group by category.name having count(*) >= 3-- 5,查询出“商务套餐a”中包含了哪些菜品―(展示出套餐名称、价格,包含的菜品名称、价格、份数)
table: setmeal, dish, setmeal_dish
select s.name, s.price, d.name, d.price, sd.copies from setmeal s, dish d, setmeal_dish sd where sd.setmeal_id = s.id and sd.dish_id = d.id and s.name = '商务套餐a'-- 6.查询出低于菜品平均价格的菜品信息(展示出菜品名称、菜品价格)
select name, price from dish where price < (select avg(price) from dish)

事务

一组操作的集合,要么同时成功,要么同时失败

开启事务:start transaction;

结束事务:commit;

回滚事务:rollback;

原子性、一致性、隔离性、持久性ACID

索引

create index idx_tb_attr on table(attr);

show index from table;

drop index idx_tb_attr on table;

默认:主键索引、唯一索引、

没有索引:全表扫描

有索引:构建B+二叉搜索树,左侧字树比根节点小,右侧子树比根节点大

二叉搜索树有可能会产生偏向一边的情况

二叉搜索树和红黑树会产生深度较深的问题

  • 一个结点可以有多个孩子
  • 所有数据都在叶子结点中保存,非叶子结点仅用于索引数据
  • 叶子结点按从小到大排列,是双向链表

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

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

相关文章

融资项目——获取树形结构的数据

如下图所示&#xff0c;下列数据是一个树形结构数据&#xff0c;行业中包含若干子节点。表的设计如下图&#xff0c;设置了一个id为1的虚拟根节点。&#xff08;本树形结构带虚拟根节点共三层&#xff09; 实现逻辑&#xff1a; 延时展示方法&#xff0c;先展现第二层的信息&a…

机器学习8-决策树

决策树&#xff08;Decision Tree&#xff09;是一种强大且灵活的机器学习算法&#xff0c;可用于分类和回归问题。它通过从数据中学习一系列规则来建立模型&#xff0c;这些规则对输入数据进行递归的分割&#xff0c;直到达到某个终止条件。 决策树的构建过程&#xff1a; 1.…

2024年生成式AI芯片市场规模将达500亿美元

1月24日&#xff0c;德勤发布《2024科技、传媒和电信行业预测》中文版报告&#xff0c;2024年是科技、传媒和电信行业关键的一年&#xff0c;不少科技公司正利用生成式AI升级软件和服务&#xff0c;预计今年全球生成式人工智能芯片销售额可能达到500亿美元以上。 2024年将有许…

【开源】基于JAVA+Vue+SpringBoot的智慧社区业务综合平台

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 业务类型模块2.2 基础业务模块2.3 预约业务模块2.4 反馈管理模块2.5 社区新闻模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 业务类型表3.2.2 基础业务表3.2.3 预约业务表3.2.4 反馈表3.2.5 社区新闻表 四、系统展…

Mysql一行记录存储过程

Mysql一行记录存储过程 Mysql的文件架构 行&#xff08;row&#xff09; 数据库表中的记录都是行存放的&#xff0c;每行继续根据不同的行格式都有不同的存储结构。 页&#xff08;page&#xff09; 记录是按照行来存储的&#xff0c;但是数据库的读取是以页为单位的&…

python-基础篇-列表-脚本

文章目录 01_下标.py02_查找.py03_判断是否存在.py04_体验案例判断是否存在.py05_列表增加数据之append.py06_列表增加数据之extend.py07_列表增加数据之insert.py08_列表删除数据.py09_列表修改数据.py10_列表复制数据.py11_列表的循环遍历之while.py12_列表的循环遍历之for.p…

Linux 存储管理(磁盘管理、逻辑卷LVM、交换分区swap)

目录 1.磁盘管理 1.1 磁盘简介 1.2 管理磁盘 添加磁盘 管理磁盘流程三步曲 1.查看磁盘信息 2.创建分区 3.创建文件系统 4.挂载mount 5.查看挂载信息 6.MBR扩展分区 7.重启后的影响 2.逻辑卷LVM 2.1 简介 ​​​​​​2.2 创建LVM 2.3 VG管理 2.4 LV管理实战-在…

铱塔 (iita) 开源 IoT 物联网开发平台,基于 SpringBoot + TDEngine +Vue3

01 铱塔 (iita) 物联网平台 铱塔智联 (open-iita) 基于Java语言的开源物联网基础开发平台&#xff0c;提供了物联网及相关业务开发的常见基础功能, 能帮助你快速搭建自己的物联网相关业务平台。 铱塔智联平台包含了品类、物模型、消息转换、通讯组件&#xff08;mqtt/EMQX通讯组…

学习Android的第八天

目录 Android ImageView 图像视图 ImageView 的基本使用 src属性和background属性的区别 范例 解决 anndroid:blackground 属性拉伸导致图片变形的方法 设置透明度的问题 范例 android:src 和 android:background 结合 范例 Java 代码中设置 blackground 和 src 属性…

基于鲲鹏服务器的LNMP配置

基于鲲鹏服务器的LNMP配置 系统 Centos8 # cat /etc/redhat-release CentOS Linux release 8.0.1905 (Core) 卸载已经存在的旧版本的安装包 # rpm -qa | grep php #查看已经安装的PHP旧版本# rpm -qa | grep php | xargs rpm -e #卸载已经安装的旧版&#xff0c;如果提示有…

OpenCV 笔记(21):图像色彩空间

1. 图像色彩空间 图像色彩空间是用于定义颜色范围的数学模型。 它规定了图像中可以使用的颜色以及它们之间的关系。它决定了图像中可以显示的颜色范围。不同的色彩空间可以包含不同的颜色范围&#xff0c;因此选择合适的色彩空间对于确保图像在不同设备上看起来一致非常重要。…

跳跃表的底层实现

跳跃表的底层是由 C 语言实现的&#xff0c;它的实现源码如下&#xff1a; typedef struct zskiplistNode {// 成员对象robj *obj;double score; // 分值struct zskiplistNode *backward; // 回退指针//层struct zskiplistLevel {// 前进指针struct zskiplistNode *forward;//…

架构之模板方法等模式的使用

目录 一、程序编写背景 二、编程思路讲解 - 类图 - 实现逻辑 - 工厂模式 - 模板方法模式 接口类&#xff08;代码&#xff09;抽象类&#xff08;代码&#xff09;具体实现类&#xff08;代码&#xff09;工厂类&#xff08;代码&#xff09;注册类&#xff08;代码&…

Python爬虫实战:抓取猫眼电影排行榜top100#4

爬虫专栏系列&#xff1a;http://t.csdnimg.cn/Oiun0 抓取猫眼电影排行 本节中&#xff0c;我们利用 requests 库和正则表达式来抓取猫眼电影 TOP100 的相关内容。requests 比 urllib 使用更加方便&#xff0c;而且目前我们还没有系统学习 HTML 解析库&#xff0c;所以这里就…

LiteFlow规则引擎框架

LiteFlow规则引擎框架 Hi&#xff0c;我是阿昌&#xff0c;今天介绍一个规则引擎框架&#xff0c;LiteFlow&#xff1b; 一、前言 那首先得知道什么是规则引擎&#xff1f;规则引擎是 一种用于自动化处理业务规则的软件组件。 在软件行业中&#xff0c;规则引擎通常用于解决…

如何使用Docker本地部署一个开源网址导航页并分享好友公网使用

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《Linux》《Cpolar》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;…

备战蓝桥杯---动态规划(基础3)

本专题主要介绍在求序列的经典问题上dp的应用。 我们上次用前缀和来解决&#xff0c;这次让我们用dp解决把 我们参考不下降子序列的思路&#xff0c;可以令f[i]为以i结尾的最大字段和&#xff0c;易得&#xff1a; f[i]max(a[i],a[i]f[i-1]); 下面是AC代码&#xff1a; #in…

有哪些方法可以配置并发服务器?

通过合理配置并发服务器&#xff0c;可以提高服务器的处理能力和响应速度&#xff0c;从而更好地满足用户需求。本文将介绍一些常见的并发服务器配置方法&#xff0c;以帮助您更好地实现服务器的高效运行。 一、选择合适的操作系统 操作系统的选择是并发服务器配置的重要环节…

【数据结构与算法-初学者指南】【附带力扣原题】队列

&#x1f389;&#x1f389;欢迎光临&#x1f389;&#x1f389; &#x1f3c5;我是苏泽&#xff0c;一位对技术充满热情的探索者和分享者。&#x1f680;&#x1f680; &#x1f31f;特别推荐给大家我的最新专栏《数据结构与算法&#xff1a;初学者入门指南》&#x1f4d8;&am…

面向数据报编程-UDP协议

目录 前言&#xff1a; 1.UDP协议API 1.1UDP编程原理 1.2DatagramSocket类 &#xff08;1&#xff09;DatagramSocket构造方法 &#xff08;2&#xff09;DatagramSocket普通方法 1.3DatagramPacket类 &#xff08;1&#xff09;DatagramPacket构造方法 &#xff08;2…