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

联表查询相关语法

1.查询sql语句的执行顺序

sql:语法
select distinct * from 左表名
(left/inner/right)join 右表名
on 连接条件
where 筛选条件
group by 分组的列表(按什么字段分组)
having 分组条件 
order by 排序的字段
limit 分页
以上为语法结构,顺序不能乱

执行顺序:

  1. from 左表名
  2. on 连接条件
  3. 连接类型 (inner/left/right) join 右表名
  4. where 筛选条件
  5. group by 分组列表(按什么字段分组)开始使用select中的别名,后面的语句中都可以使用
  6. 聚合函数avg、sum、max、min、count
  7. having having_condition
  8. select
  9. distinct 查询列表(要查询的字段)
  10. order by 排序的字段等
  11. limit limit_number

123步骤先确定要查询的大表;4步骤确定要的记录,去掉不要的记录;56分组并筛选要的;78留下要的字段列;9排序一下;10留下想要的记录数

  • 详解:从上述顺序中不难发现,所有的查询语句都是从from语句开始执行的,在执行过程中,每个步骤都会为下一个步骤生成一个虚拟表,这个虚拟表将作为下一个执行步骤的输入。
  1. 首先对from子句中的前两个表执行一个笛卡尔积,此时生成虚拟表vt 1(选中相对小的表做基础表)

  2. 应用on筛选器,on中的逻辑表达式将应用到vt 1 中的各个行,筛选出满足on逻辑表达式的行,生成虚拟表vt 2。

  3. 如果是outer join 那么这一步就将添加外部行,left outer join 就把左表在第二步中过滤的添加进来,如果是right outer join 那么就将右表在第二步中过滤掉的行添加进来,这样生成虚拟表 vt 3 。

  4. 如果 from 子句中的表数目多余两个表,那么就将vt 3和第三个表连接从而计算笛卡尔乘积,生成虚拟表,该过程就是一个重复1-3的步骤,最终得到一个新的虚拟表 vt 3。

  5. where筛选器,对上一步生产的虚拟表引用where筛选器,生成虚拟表 vt 4

    注意where和on的区别:先执行on,后执行where;on是建立关联关系,在生成临时表时执行;where是在临时表生成后对数据进行筛选的

  6. group by子句将列中的唯一的值组合成为一组,得到虚拟表 vt 5。如果应用了 group by ,那么后面是所有步骤都只能得到vt 5 的列或聚合函数,原因在于最终的结果集中只为每一个组包含一行从这一步开始才可以使用select中的别名,他返回的是一个游标,而不是一个表,所以在where中不可以使用select中的别名,而having却可以使用

  7. 聚合函数,为vt 5生成超组,生成vt 6

  8. having 筛选器,生成vt 7,having筛选器是第一个也是唯一一个应用到已分组数据的筛选器

  9. 处理select子句,将vt 7中的select中出现的列筛选出来,生成 vt 8

  10. distinct,对vt 8进行去重,生成vt 9

  11. order by,按照排序条件排序 vt 9,此时返回的一个游标,而不是虚拟表

  12. limit ,生成 vt 10 返回结果给请求者即用户

outer join:完全外连接,返回左表和右表的所有行

left (outer)join:左外连接,返回匹配条件的行和左表的所有行

right(Outer)join:右外连接,返回匹配条件的行和右表的所有行

笛卡尔积: 假设A和B是两个集合,存在一个集合,它的元素是用A中元素为第一元素,B中元素为第二元素构成的有序二元组,这个集合称为集合A和集合B的笛卡尔积,记为A X B。

2.联表查询

多表联合查询:同时查询两个或两个以上的表

why:当我们查询的结果不在一张表中,就需要联表查询

联表查询的种类:

  • 内连接:查询两个表中公共部分
  • 外连接
    • 左外连接:查询左边中所有的内容以及公共内容
    • 右外连接:查询右边中所有的内容以及公共内容
  • 自连接:自己和自己连接

2.1表与表之间的关系

  1. 表与表之间有联系:外键
  2. 表与表之间的关系:
    • 多对一(n : 1):员工表和部门表**外键放置在多那方**
    • 多对多(n : n):学生和课程设置一个中间表,用来存放两个外键,即两张表的主键
    • 一对一(1 : 1)

2.2内连接

  • 语法
Select * from 左表名 
inner from 右表名
on 联表条件
-- 查询员工信息以及员工对应的部门信息。(我们查询的内容不在一张表中 需要联表查询)
-- select * from 表1 inner join 表2 on 联表条件
select * from tb_emp inner join tb_dept; -- 如果没有联表条件 则会出现笛卡尔积
-- 如何得到结果不在一张表中,就需要联表查询。
select * from tb_emp inner join tb_dept on tb_emp.dept_id=tb_dept.id;select e.*,d.name dname from tb_emp e inner join tb_dept d on e.dept_id=d.id

2.3左外连接

  • 语法
select * from 左表名
left join 右表名
on 联表条件
-- 查询员工信息以及对应部门得信息 没有部门的员工也显示。
select * from tb_emp e left join tb_dept d on e.dept_id=d.id

2.4右外连接

  • 语法
select * from 左表名
right join 右表名
on 联表条件
-- 查询员工信息以及对应部门得信息 显示没有员工的部门信息
select * from tb_emp e right join tb_dept d on e.dept_id=d.id;

2.5自连接

  • 自己连接自己的表,连接类型为上述三种
-- 查询员工姓名以及对应的领导名字
select yg.name 员工姓名,ld.name 领导名 from tb_emp yg inner join tb_emp ld on yg.managerid=ld.id-- -- 查询员工姓名以及对应的领导名字 显示没有领导员工信息
select yg.name 员工姓名,ld.name 领导名 from tb_emp yg left join tb_emp ld on yg.managerid=ld.id

3.嵌套查询

把一个sql查询的结果作为另一个sql查询的条件的值

例子: 查询研发部的员工信息。

【1】查询研发部的部门号 【2】根据查询的部门号查询对应的员工信息

select * from tb_emp where dept_id=(
select id from tb_dept where name='研发部')

例子: 查询研发部,市场部的员工信息

select * from tb_emp where dept_id in(
select id from tb_dept where name='研发部' or name='市场部')

例子: 查询薪资最高的员工信息。

select * from tb_emp where salary=(
select max(salary) from tb_emp);

4.把查询的结果作为一个临时表

例子: 查询各个部门中最高薪资的员工信息

select e.* from tb_emp e inner join
(select max(salary) m,dept_id from tb_emp group by dept_id) ton e.dept_id=t.dept_id and e.salary=t.m

5. mysql中内置的函数

mysql里面存在了很多函数方法,字符串函数,时间函数,数学函数等。

5.1字符串函数

操作字符串

函数功能
concat(s1,s2,…sn)字符串拼接,将s1,s2,…sn拼接成一个字符串
lower(string)将字符串全部转为小写
upper(string)将字符串全部转为大写
lpad(string,n,pad)左填充,用字符串pad对string的左边进行填充,达到n个字符串长度
rpad(string,n,pad)右填充,用字符串pad对string的右边进行填充的,达到n个字符串长度
trim(string)去掉字符串头部和尾部的空格
substring(string,start,len)返回从字符串string的start位置起的len个长度的字符串
char_length(string)返回字符串的长度
-- concat()字符串拼接
select name,concat('hello',name,'吃吗',salary) from tb_emp;
-- upper(str)转化为大写字母
select name, upper(name) from tb_emp;
-- lpad左填充 
select name,rpad(name,2,'A') from tb_emp;
-- trim()去除左右空格
select name,trim(name) from tb_emp;
-- substring()截取字符串 下标从1开始
select name,substring(name,1,1)from tb_emp;
-- 姓灭
select * from tb_emp where substring(name,1,1)='灭'
-- char_length 求字符串的长度
select name,char_length(name) from tb_emp;
-- 求名字长度为3
select * from tb_emp where char_length(name)=3

5.2 日期函数

函数功能
curdate()返回当前日期
curtime()返回当前时间
now()返回当前日期和时间
year(date)获取指定date的年份
month(date)获取指定date的月份
day(date)获取指定date的日期
date_add(date,interval expr type)返回一个日期/时间值加上一个时间间隔expr后的时间值
datediff(date 1,date 2)返回起始时间date 1和结束时间date 2之间的天数
-- 查找今天入职的员工信息
select * from tb_emp where entrydate=curdate()
-- 当前日期
select entrydate,curdate(),curtime(),now(),year(entrydate),month(entrydate) from tb_emp;-- date_add(日期数据,interval 值 单位) : 单位:year month day hour  MINUTE second
select entrydate,date_add(entrydate,INTERVAL 1 year) from tb_emp;-- datediff 两个日期的相差的天数
select entrydate, datediff(now(),entrydate) from tb_emp;

5.3 数学函数

函数功能
ceil(x)向上取整
floor(x)向下取整
mod(x,y)返回x/y的模
abs(x)求某个数的绝对值
-- 查询最近1月的订单 
select salary,ceil(salary),floor(salary),RAND()*10 from tb_emp;

6. 查询存在一个表而不在另一个表中的数据

问题描述: A、B两表,找出ID字段中,存在A表,但是不存在B表的数据。A表总共13w数据,去重后大约3W条数据,B表有2W条数据,且B表的ID字段有索引。

  • 方法一: 使用 not in ,容易理解,效率低 ~执行时间为:1.395秒
1 select distinct A.ID from  A where A.ID not in (select ID from B)
  • 方法二: 使用 left join…on… , “B.ID isnull” 表示左连接之后在B.ID 字段为 null的记录 ~执行时间:0.739秒
1 select A.ID from A left join B on A.ID=B.ID where B.ID is null
  • 方法三: 逻辑相对复杂,但是速度最快 ~执行时间: 0.570秒
select * from  A where (select count(1) from B where A.ID=B.ID) = 0 

方法三完美!由于数据量大,方法一,二,根本打不开

相关文章:

联表查询相关语法

1.查询sql语句的执行顺序 sql:语法 select distinct * from 左表名 (left/inner/right)join 右表名 on 连接条件 where 筛选条件 group by 分组的列表(按什么字段分组) having 分组条件 order by 排序的字段 limit 分页 以上为语法结构,顺序不能乱执行顺序&#x…...

upload-labs(1-19关)通关攻略

Pass-01 本关思路&#xff1a;删除前端js校验 进入第一关环境 桌面新建一个php文件&#xff0c;命名为1.php <?php eval($_POST[a]);?> 我们上传此文件&#xff0c;发现不允许上传&#xff0c;且页面没有变化&#xff0c;说明前端进行了拦截 这时我们打开 F12 &…...

C语言小练习-求数组的最大子数组

#include <stdio.h>/***暴力求解最大子数组&#xff0c;使用两重循环&#xff0c;把所有情况全部遍历一遍。*/ int subArr1(int *arr,int size) {int sum 0, max arr[0];int i,j;for(i 0;i < size; i){for(j i; j < size; j){sum arr[j];if(sum > max){max…...

初识C语言之二维数组(中)

一.二维数组练习 ①题目描述:打印多个字符从两端移动&#xff0c;向中间汇聚。 eg. ################ H###############! He##############!! Hel#############!!! Hell############!!!! Hello##########t!!!! ................................................. He…...

Ubuntu下迁移Conda环境

Ubuntu下快速迁移Conda环境到其他电脑 安装conda-pack pip install conda-packOr conda install conda-pack压缩conda环境 解压到目标电脑或者目标文件下 conda pack -n your_envs_name -o your_envs_name.tar.gz解压conda环境 mkdir your_new_envs_name tar -zxvf your_e…...

数据可视化-1. 折线图

目录 1. 折线图适用场景分析 1. 1 时间序列数据展示 1.2 趋势分析 1.3 多变量比较 1.4 数据异常检测 1.5 简洁易读的数据可视化 1.6 特定领域的应用 2. 折线图局限性 3. 折线图代码实现 3.1 Python 源代码 3.2 折线图效果&#xff08;网页显示&#xff09; 1. 折线图…...

MATLAB绘图基础12:地理信息可视化

参考书&#xff1a;《 M A T L A B {\rm MATLAB} MATLAB与学术图表绘制》(关东升)。 12.地理信息可视化 12.1 地理散点图 地理散点图用于可视化地理坐标点分布的图形&#xff0c;适用于在地图上显示离散地理坐标点&#xff0c;每个点可以代表不同的实体、地点或其他类型的观测…...

C语言与C++

文件概念 在C语言中&#xff0c;文件是一个重要的概念&#xff0c;用于组织和存储数据。文件主要分为两类&#xff1a; 程序文件 &#xff1a;包含源代码、目标文件和可执行文件。 数据文件 &#xff1a;存储程序运行时读写的各类数据。 文件名通常由三部分组成&#xff1a;…...

C# 中的闭包

文章目录 前言一、闭包的基本概念二、匿名函数中的闭包1、定义和使用匿名函数2、匿名函数捕获外部变量3、闭包的生命周期 三、Lambda 表达式中的闭包1、定义和使用 Lambda 表达式2、Lambda 表达式捕获外部变量3、闭包的作用域 四、闭包的应用场景1、事件处理2、异步编程3、迭代…...

基于DockerCompose搭建Redis主从哨兵模式

linux目录结构 内网配置 哨兵配置文件如下&#xff0c;创建3个哨兵配置文件 # sentinel26379.conf sentinel26380.conf sentinel26381.conf 内容如下 protected-mode no sentinel monitor mymaster redis-master 6379 2 sentinel down-after-milliseconds mymaster 60000 s…...

UIP协议栈 TCP通信客户端 服务端,UDP单播 广播通信 example

文章目录 1. TCP通信 客户端&#xff08;关键配置&#xff09;2. TCP 服务端配置3. UDP 点播通信4. UDP 广播通信5. UIP_UDP_APPCALL 里边的处理example6. TCP数据处理 &#xff0c;UIP_APPCALL调用的函数 UIP_APPCALL TCP的数据都在这个宏定义的函数里进行数据处理的 UDP 数据…...

LeetCode:226.翻转二叉树

跟着carl学算法&#xff0c;本系列博客仅做个人记录&#xff0c;建议大家都去看carl本人的博客&#xff0c;写的真的很好的&#xff01; 代码随想录 LeetCode&#xff1a;226.翻转二叉树 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 …...

Visual Studio 使用 GitHub Copilot 扩展

&#x1f380;&#x1f380;&#x1f380;【AI辅助编程系列】&#x1f380;&#x1f380;&#x1f380; Visual Studio 使用 GitHub Copilot 与 IntelliCode 辅助编码Visual Studio 安装和管理 GitHub CopilotVisual Studio 使用 GitHub Copilot 扩展Visual Studio 使用 GitHu…...

Unity实现Root Motion动画的Navigation自动导航

Root motion动画可以将角色的根节点&#xff08;通常是角色的骨盆或脚部&#xff09;的运动直接应用到游戏对象上&#xff0c;从而实现角色的自然移动和旋转&#xff0c;避免出现脚底打滑的现象。采用Root motion动画的游戏对象&#xff0c;通常是重载了onAnimatorMove函数&…...

vulnhub靶场【DriftingBlues】之9 final

前言 靶机&#xff1a;DriftingBlues-6&#xff0c;IP地址192.168.1.66 攻击&#xff1a;kali&#xff0c;IP地址192.168.1.16 都采用虚拟机&#xff0c;网卡为桥接模式 主机发现 使用arp-scan -l或netdiscover -r 192.168.1.1/24 信息收集 使用nmap扫描端口 网站探测 访…...

Python连接和操作Elasticsearch详细指南

Python连接和操作Elasticsearch详细指南 一、服务器端配置1. 修改 Elasticsearch 配置文件2. 开放防火墙端口 二、本地 Python 连接 Elasticsearch1. 连接 Elasticsearch2. 索引操作3. 文档操作4. 搜索内容5. 聚合查询6. 批量操作 三、注意事项四、故障排除结论 Elasticsearch …...

JMeter 使用详解

JMeter 使用详解 Apache JMeter 是一款开源的性能测试工具&#xff0c;可用于对静态和动态资源&#xff08;如 Web 应用、数据库、REST API 等&#xff09;进行负载测试和性能测试。以下是 JMeter 的详细使用指南&#xff1a; 1. JMeter 安装 下载 JMeter&#xff1a; 从 Apac…...

[SZ901]程序固化工具速度对比

SZ901高速下载器提供程序固化工具&#xff0c;能够快速将bin文件烧写到FLASH中。 相对传统方式有以下优点 1&#xff0c;固化时间是传统方式的1/2 到1/5&#xff0c;flash&#xff0c;程序越大&#xff0c;&#xff0c;效果越明显 2&#xff0c;操作简单&#xff0c;自动脚本…...

类OCSP靶场-Kioptrix系列-Kioptrix Level 4

一、前情提要 二、实战打靶 1. 信息收集 1.1. 主机发现 1.2. 端口扫描 1.3.目录遍历 1.4. 敏感信息 2.漏洞发现 2.1.登录框万能密码 2.2.系统用户密码-ssh链接 2.3.mysql-udf提权 一、前情提要 kali黑客-利用searchsploit搜索exp一键化攻击-CSDN博客 一篇文章带你理…...

C++ ——— 类的 6 个默认成员函数之 取地址函数 以及 const取地址操作符重载函数

目录 前言 取地址函数 const 取地址操作符重载函数 前言 在前几章学习了类的 6 个默认成员函数中的 4 个函数&#xff0c;也是最重要的 4 个 C ——— 类的 6 个默认成员函数之 构造函数-CSDN博客 C ——— 类的 6 个默认成员函数之 析构函数_结构体构析函数-CSDN博客 C…...

【C语言】头文件”“和<>的详解

前言 作者在刚开始学C语言的时候&#xff0c;都是用的< >去引用头文件&#xff0c;但在学习STM32的时候发现&#xff0c;程序中大量使用" "去引用双引号。 那么二者有什么区别呢? 无论使用哪种方式&#xff0c;头文件的目的都是为了引用你需要的文件供你编程使…...

sql server 字符集和排序

英文&#xff1a; Latin1_General_CI_AS 中文&#xff1a;Chinese_PRC_CI_AS 影响字符存储&#xff0c;解释用户存在单字节字符类型&#xff08;char&#xff0c;varchar等&#xff09;里面的数据 字符排序规则&#xff08;是否区分大小写等&#xff09; 中国的用户一定要注意…...

【linux】shell(39)-定时任务

在 Linux 和 Unix 系统中&#xff0c;定时任务是通过 cron 服务 和 crontab 工具 实现的&#xff0c;它允许用户在指定的时间自动执行命令或脚本。本教程将深入介绍 crontab 的工作原理、配置、常见用法和注意事项&#xff0c;帮助你高效地管理自动化任务。 1. cron 和 crontab…...

C# 基本信息介绍

总目录 前言 对 C# 做一个基本信息介绍&#xff0c;让我们对 C# 有个基本的认识。 在进行本文的阅读之前&#xff0c;可以瞧瞧 编程基础知识简述 简单的入个门儿。 一、C# 1. C# 概述 C#是由微软公司发布的一种由C和C衍生出来的面向对象的编程语言。 2. C# 详细介绍 C#&am…...

告别机器人味:如何让ChatGPT写出有灵魂的内容

目录 ChatGPT的一些AI味道小问题 1.提供编辑指南 2.提供样本 3.思维链大纲 4.融入自己的想法 5.去除重复增加多样性 6.删除废话 ChatGPT的一些AI味道小问题 大多数宝子们再使用ChatGPT进行写作时&#xff0c;发现我们的老朋友ChatGPT在各类写作上还有点“机器人味”太重…...

ECharts柱状图-柱图38,附视频讲解与代码下载

引言&#xff1a; 在数据可视化的世界里&#xff0c;ECharts凭借其丰富的图表类型和强大的配置能力&#xff0c;成为了众多开发者的首选。今天&#xff0c;我将带大家一起实现一个柱状图图表&#xff0c;通过该图表我们可以直观地展示和分析数据。此外&#xff0c;我还将提供…...

SAP ALV选择列排序时弹出定义排序顺序窗口问题

需求场景 使用REUSE_ALV_GRID_DISPLAY_LVC生成ALV&#xff0c;发现一个问题&#xff1a;使用it_events的时候选择列排序时会弹出定义排序顺序窗口&#xff0c;如下图所示。&#xff08;正常选择某一列再使用排序功能时会直接排序&#xff0c;不用再选择列&#xff09; CLASS l…...

HTML零基础入门教学

目录 一. HTML语言 二. HTML结构 三. HTML文件基本结构 四. 准备开发环境 五. 快速生成代码框架 六. HTML常见标签 6.1 注释标签 6.2 标题标签&#xff1a;h1-h6 6.3 段落标签&#xff1a;p 6.4 换行标签&#xff1a;br 6.5 格式化标签 6.6 图片标签&a…...

AI-PR曲线

PR曲线 人工智能里面的一个小概念。 2.3 性能度量&#xff08;查全率&#xff0c;查准率&#xff0c;F1&#xff0c;PR曲线与ROC曲线&#xff09; 预测出来的是一个概率&#xff0c;不能根据概率来说它是正类还是负类&#xff0c;要有一个阈值。 查准率&#xff08;Precision&…...

[创业之路-199]:《华为战略管理法-DSTE实战体系》- 3 - 价值转移理论与利润区理论

目录 一、价值转移理论 1.1. 什么是价值&#xff1f; 1.2. 什么价值创造 &#xff08;1&#xff09;、定义 &#xff08;2&#xff09;、影响价值创造的因素 &#xff08;3&#xff09;、价值创造的三个过程 &#xff08;4&#xff09;、价值创造的实践 &#xff08;5&…...

问题解决: python 调用存储过程获取不到返回值

python 调用存储过程获取不到返回值 1. 检查存储过程是否有副作用&#xff08;例如关闭结果集&#xff09;2. 在 Python 代码中&#xff0c;确保在执行存储过程时按正确的顺序操作&#xff1a;3. 使用游标检查结果集 1. 检查存储过程是否有副作用&#xff08;例如关闭结果集&am…...

AI前沿分析:Github Copilot 推出免费版本,AI + 编程更高效!

名人说&#xff1a;莫听穿林打叶声&#xff0c;何妨吟啸且徐行。—— 苏轼 Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 一、GitHub Copilot&#xff1a;AI编程的“革命性”助力二、免费版本上线&#xff1a;AI编程的普及时代&…...

浅谈仓颉语言的优劣

仓颉语言&#xff0c;作为华为自研的新一代编程语言&#xff0c;以其高效、安全、现代化的特点&#xff0c;引起了广泛的关注。 仓颉语言的优势 高效并发 仓颉语言的一大亮点是其轻松并发的能力。它实现了轻量化用户态线程和并发对象库&#xff0c;使得高效并发变得轻松。仓颉…...

AI证件照制作 API 快速生成证件照

本文将介绍一种 AI证件照制作 API 对接说明&#xff0c;它是可以通过输入人像照片URL以及自己喜欢的模板来制作各种风格的证件照。 接下来介绍下 AI证件照制作 API 的对接说明。 申请流程 要使用 API&#xff0c;需要先到 AI证件照制作 API 对应页面申请对应的服务&#xff…...

Java.10--IO流

JavaSE&#xff08;Java Standard Edition&#xff09;中的IO&#xff08;输入输出&#xff09;库提供了用于读写数据的类和接口。 这些功能可以用来处理文件、网络连接、内存中的数据结构等。 一、IO流分类 Java中的IO&#xff08;输入输出&#xff09;库可以按照不同的标准…...

Firewalld 防火墙全面解析与配置指南

在当今网络环境中,网络安全至关重要,而防火墙作为网络安全的关键防线,在Linux系统中扮演着极其重要的角色。本文将深入探讨Firewalld防火墙,涵盖其基础概念,优势特点,配置方法等多面内容,为您提供全面的Firewalld防火墙知识体系 一,Linux防火墙基础 (一) 防火墙内核…...

Javascript-web API-day02

文章目录 01-事件监听02-点击关闭广告03-随机点名案例04-鼠标经过或离开事件05-可点击的轮播图06-小米搜索框07-键盘类型事件08-键盘事件-发布评论案例09-focus选择器10-评论回车发布11-事件对象12-trim方法13-环境对象14-回调函数15-tab栏切换 01-事件监听 <!DOCTYPE html…...

Python爬虫之代理的设置

【1】urllib中使用公开代理 import urllib.requesturl http://www.baidu.com/s?wdipheaders {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36 }# 请求对象的定制 request urllib.req…...

Qt:QMetaObject::connectSlotsByName实现信号槽自动关联

简介 在Qt中&#xff0c;QMetaObject::connectSlotsByName 是一个便利的方法&#xff0c;它可以根据对象的对象名&#xff08;objectName&#xff09;自动将信号和槽连接起来。但是&#xff0c;要使用这个方法&#xff0c;必须确保&#xff1a; 1 控件&#xff08;如按钮&…...

芝法酱学习笔记(2.1)——sql性能优化1

一、前言 做程序员这行&#xff0c;相信大家都会接触到性能优化这个概念。并且多数程序员&#xff0c;为自己能参与到性能优化的工作而感到自豪。 在普通应用系统的业务开发中&#xff0c;程序的性能瓶颈往往在数据库查询的IO上&#xff0c;所以优化数据库查询则是重中之重的工…...

【Mysql】Java的JDBC编程

本节目标 数据库驱动 JDBC的概念及作用 掌握JDBC的工作原理 掌握JDBC中几个常用接口和类 掌握基于数据库的应用程序开发流程 一. 数据库编程的必备条件 编程语言&#xff0c;如Java&#xff0c;C、C、Python等 数据库&#xff0c;如Oracle&#xff0c;MySQL&#xff0c;S…...

PHPUnit使用指南:编写高效的单元测试

PHPUnit使用指南&#xff1a;编写高效的单元测试 单元测试是软件开发中不可或缺的一部分&#xff0c;它能够帮助开发者确保代码的正确性和稳定性。PHPUnit是PHP中最流行的单元测试框架之一&#xff0c;提供了一套强大的工具和功能来编写和运行测试。本文将详细介绍如何使用PHP…...

二、HTML5

一、HTML5简介 1、什么是HTML5 HTML5 是新一代的 HTML 标准&#xff0c;2014年10月由万维网联盟&#xff08;W3C&#xff09;完成标准制定。 官网地址&#xff1a; W3C 提供&#xff1a; https://www.w3.org/TR/html/index.html WHATW…...

授权模型MAC

MAC&#xff08;Mandatory Access Control&#xff09;是一种授权模型&#xff0c;用于实现对系统资源访问的强制控制。在MAC模型中&#xff0c;授权是基于预先定义的安全策略&#xff0c;且该策略由系统管理员来配置和管理。 在MAC模型中&#xff0c;每个用户和每个资源都被赋…...

GaussDB数据库迁移方案介绍

云数据库GaussDB提供了多种数据迁移方案&#xff0c;可满足从MySQL数据库、Oracle数据库、GaussDB数据库、PostgreSQL数据库、DB2 for LUW、RDS for SQL Server、Microsoft SQL Server数据库到云数据库GaussDB的迁移。 数据迁移工具有DRS、DAS和gs_loader。推荐使用DRS&#x…...

web3跨链桥协议-Nomad

项目介绍 Nomad是一个乐观跨链互操作协议。通过Nomad协议&#xff0c;Dapp能够在不同区块链间发送数据&#xff08;包括rollups&#xff09;&#xff0c;Dapp通过Nomad的合约和链下的代理对跨链数据、消息进行验证、传输。其安全通过乐观验证机制和欺诈证明制约验证者实现&…...

白话java设计模式

创建模式 单例模式&#xff08;Singleton Pattern&#xff09;&#xff1a; 就是一次创建多次使用&#xff0c;它的对象不会重复创建&#xff0c;可以全局来共享状态。 工厂模式&#xff08;Factory Method Pattern&#xff09;&#xff1a; 可以通过接口来进行实例化创建&a…...

代码的注释

代码注释是程序开发中至关重要的一部分&#xff0c;良好的注释能够大大提升代码的可读性、可维护性和团队协作效率。注释帮助开发人员理解代码的逻辑、目的和背后的设计思想&#xff0c;尤其是在面对复杂的业务逻辑或算法时&#xff0c;注释可以帮助未来的开发人员快速理解并有…...

Java中的Consumer接口应该如何使用(通俗易懂图解)

应用场景&#xff1a; 第一次程序员A写好了个基础的遍历方法&#xff1a; public class Demo1 {public static void main(String[] args) {//假设main方法为程序员B写的,此时需要去调用A写好的一个遍历方法//1.如果此时B突然发现想将字符串以小写的形式打印出来&#xff0c;则…...

数据库设计的基础与进阶:1NF、2NF、3NF及BCNF解析

目录 什么是数据库范式&#xff1f; 1. 第一范式&#xff08;1NF&#xff09; 2. 第二范式&#xff08;2NF&#xff09; 3. 第三范式&#xff08;3NF&#xff09; 4. 博茨-科德范式&#xff08;BCNF&#xff09; 总结 在数据库设计中&#xff0c;范式是为了确保数据存储结…...