当前位置: 首页 > news >正文

测试基础笔记第十一天

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 一、查询连接
    • 1.内连接
    • 2.左连接
    • 3.右连接
    • 4.左右连接的必要性
    • 5.自关联
    • 6.普通查询
    • 7.子查询
    • 8.子查询充当数据源
  • 二、数据库高级扩展内容
    • 1.外键
    • 2.索引
    • 3.验证索引效果案例实现步骤


一、查询连接

1.内连接

– 需求1: 查询所有存在商品分类的商品信息
select * from goods;
select * from category;
– 内连接: select * from 表1 inner join 表2 on 表1.列=表2.列
– 显示效果: 两张表中有对应关系的数据都会显示出来, 没有对应关系的数据
均不再显示
select * from goods
inner join category on goods.typeId=category.typeId;
– 扩充: 给表起别名(1> 缩短表名利于编写 2> 用别名给表创建副本)
select * from goods go
inner join category ca on go.typeId=ca.typeId;
– 扩展: 内连接的另一种写法(旧式写法)
– select * from 表1, 表2 where 表1.字段名=表2.字段名;
select * from goods, category where
goods.typeId=category.typeId;

2.左连接

– 需求2: 查询所有商品信息,包含商品分类
– 左连接: select * from 表1 left join 表2 on 表1.列=表2.列
– 注意: 如果要保证一张数据表的全部数据都存在, 则一定不能选择内连接,
可以选择左连接或右连接
– 说明:
– 以 left join 关键字为界, 关键字左侧表为主表(都显示), 而关键字右侧的表为从表(对应内容显示, 不对应为 null)
select * from goods go
left join category ca on go.typeId=ca.typeId;
– 扩充需求: 以分类为主展示所有内容(以哪张表为主表, 显示结果上是有区别
的!)
select * from category ca
left join goods go on ca.typeId=go.typeId;

3.右连接

– 需求3: 查询所有商品分类及其对应的商品的信息
– 右连接: select * from 表1 right join 表2 on 表1.列=表2.列
– 说明:
– 以 right join 关键字为界, 关键字右侧表为主表(都显示), 而关键字左侧的表为从表(对应内容显示, 不对应为 null)
select * from goods go
right join category ca on go.typeId=ca.typeId;
– 扩充需求: 查询所有商品信息及其对应分类信息
select * from category ca
right join goods go on ca.typeId=go.typeId;

4.左右连接的必要性

  • 说明: 能够体现左右连接必要性的场景为: 至少为三张表进行连接查询
  • 注意: 实际工作中, 最多也就三张表连接查询
  • 在这里插入图片描述

5.自关联

  • 前提: 1> 数据表只有一张 2> 数据表中至少有两个字段之间有某种联系
  • 方式: 通过给表起别名的形式, 将原本只有一张的数据表变为两张, 然后通过对应字段实现连接查

6.普通查询

– 需求4: 查询河南省所有的市
– 说明: 无论是使用内连接还是左连接, 都只影响中间数据表的内容多少, 由于最终的过滤条件相同, 因此查询结果一致
– 使用内连接
select * from areas a1
inner join areas a2 on a1.aid=a2.pid
where a1.atitle=‘河南省’;
– 使用左连接
select * from areas a1
left join areas a2 on a1.aid=a2.pid
where a1.atitle=‘河南省’;

7.子查询

  • 子查询: 在一个 select 语句句中,嵌入了另外一个 select 语句,那么嵌入的select 语句称之为子查询语句
    作用: 子查询是辅助主查询的,要么充当[条件],要么充当[数据源]

8.子查询充当数据源

– 需求7: 查询所有来自并夕夕的商品信息, 包含商品分类
– 子查询语句充当数据源:
– select * from goods go
– left join category ca on go.typeId=ca.typeId;
– select * from (select * from goods go left join category ca
on go.typeId=ca.typeId) new
– where new.company=‘并夕夕’;
– 问题: 连接查询的结果中, 表和表之间的字段名不能出现重复, 否则无法直接使用
– 解决: 将重复字段使用别名加以区分(表名.* : 当前表的所有字段)
select * from (select go.*, ca.id cid, ca.typeId ctid,
ca.cateName from goods go left join category ca on
go.typeId=ca.typeId) new
where new.company=‘并夕夕’;

二、数据库高级扩展内容

  • E 表示 entry,实体: 描述具有相同特征事物的抽象[数据表]
  • 属性: 每个实体的具有的各种特征称为属性[数据(表内的字段)]
  • R 表示 relationship,联系: 实体之间存在各种关系,关系的类型包括包括一对一、一对多、多对
    多[表和表之间的联系]
    在这里插入图片描述

1.外键

  • 说明: 通过外部数据表的字段, 来控制当前数据表的数据内容变更, 以避免单方面移除数据, 导致关联表数据产生垃圾数据的一种方法
  • 注意: 如果大量增加外键设置, 会严重影响除数据查询操作以外的其他操作(增/删/改)的操作效率, 因此在实际项目中很少会被采用, 但是在面试中容易被问到.

2.索引

  • 说明: 可以大幅度提高查询语句的执行效率
  • 注意: 如果⼤大量量增加索引设置, 会严重影响除数据查询操作以外的其他操作(增/删/改)的操作效率, 不方便过多添加.

3.验证索引效果案例实现步骤

– 开启运行时间监测
set profiling=1;
– 查找第一万条数据 10000
select * from test_index where num=‘10000’;
– 查看执行的时间
show profiles;
– 为表 text_index 的 num 列创建索引
create index test_index on test_index(num);
– 执行查询语句
select * from test_index where num=‘10000’;
– 再次查看执行的时间
show profiles;

相关文章:

  • 济南国网数字化培训班学习笔记-第二组-2节-输电线路施工及质量
  • Linux基础篇、第四章_01软件安装rpm_yum_源码安装_二进制安装
  • Linux基础
  • yt-dlp 下载时需要 cookie
  • 【Redis】 Redis中常见的数据类型(二)
  • 【玩转全栈】—— 无敌前端究极动态组件库--Inspira UI
  • 大语言模型的“模型量化”详解 - 02:量化参数 主流量化参数全面解读与实战-Q/K/IQ/TQ 到 GGUF 的完整流程
  • SpringMVC处理请求映射路径和接收参数
  • Android studio进阶开发(四)--okhttp的网络通信的使用
  • 【云计算】云计算中IaaS、PaaS、SaaS介绍
  • Linux Awk 深度解析:10个生产级自动化与云原生场景
  • 大语言模型的“模型量化”详解 - 03:【超轻部署、极致推理】KTransformers 环境配置 实机测试
  • 函数模板 (Function Templates)
  • Kafka命令行的使用/Spark-Streaming核心编程(二)
  • MCP协议最新进展分析报告
  • 产品经理对于电商接口的梳理||电商接口文档梳理与接入
  • 【Axure教程】表格嵌套卡片
  • Axure复选框组件的深度定制:实现自定义大小、颜色与全选功能
  • NestJS 统一异常处理 + 日志追踪链路设计
  • MySQL数据库基本操作-DQL-基本查询
  • 3岁男童疑遭父亲虐待,杭州警方:在异地发生,嫌疑人已被抓
  • 又双叒叕出差太空了!神二十成功出发,神十九乘组扫榻以待
  • 东阿至聊城公交票价取消八折优惠:运行成本高昂
  • 泽连斯基提议乌俄“立即、全面和无条件”停火
  • 欧盟数字法开出首张罚单:苹果和Meta合计被罚7亿欧元
  • 看正背面月壤、听火星上的声音,记者探营“中国航天日”科普展