mysql组件如何进行多次查询

mysql组件如何进行多次查询,第1张

这边先给你提供一个动态SQL

select

*

from

table

where

1=1 //这一步是针对所有条件均未满足(where后必须跟子句)

if(name != "" and name!=null){ and name=条件一}

if(sex != "" and sex!=null){ and sex=条件二}

。。。。。。

个人解题思路

第一种:

不额外创建表(连接查询)

首先,将所有条件单独查询并将这些语句内连接

例:

select * from tb as t1

join

(select * from tb where name=条件) as t2

on

t1.id=t2.id

join

(select * from tb where age=条件) as t3

on

t1.id=t2.id

(join........ on .......)

where

t1.sex=条件

然后 将上面的查询结果看作一个表t

select t.*,count(t.id) from t

group by t.id // 以id分组

order by count(t.id) asc //以id数量为降序

limit(0,1) //取第一行值

论文答辩问题。问题是mySQL数据库查询时 如何使用组件(主键?)精确查询某一条记录。

一个表中的主键都是唯一的,想要查找某一条记录的话直接用主键就可以查到、

比如select * from tablename where id=1

mysql底层架构分为:

1、client(客户端)

2、server(服务端)

client: 主要有各种plugin、jdbc等

server: 包含了连接器、查询缓存、分析器、优化器、执行器、存储引擎

连接器 的主要作用是与 客户端 建立联系,管理客户端的连接、会话、权限验证等。

查询缓存 的作用是,在sql通过连接器之后到达服务端之后,如果sql是sel开头的语句,那么先在 查询缓存 中获取命中结果,如果有命中结果则直接返回结果。没有结果那么sql会通往 分析器 。

分析器 拿到sql后,会对sql进行词法、语法分析,同时创建sql Id,如果sql有错误,那么将会终止sql行为,将异常返回客户端。

优化器 的作用主要是对通过 分析器 的sql进行优化,比如进行 索引选择 、 重写查询 等,同时会创建 sql执行计划 ,可以通过 explain 指令进行查看。

执行器 拿到了经过优化器的sql,将会 *** 作 存储引擎 ,通过调用 存储引擎 提供的读写接口,得到返回结果。

存储引擎 是sql的最终执行者,它对外提供了读写接口,本身主要作用为执行sql、存储数据、获取数据等, 存储引擎 的设计是插件形式实现的,常见了有 InnoDB 、 MyISAM 等。

未完待续......


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/8687862.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-19
下一篇 2023-04-19

发表评论

登录后才能评论

评论列表(0条)

保存