MySql补充知识点

news2024/11/24 20:35:05

这里写自定义目录标题

    • 1、sql语句查询表结构信息
      • (1)查询某库某表的字段、数据类型、字段注释
      • (2)查询某库的所有表名、表注释
      • (3)查询库下所有表名、表注释、所有字段名、数据类型、字段注释
      • (4)查询某个表在哪个库
    • 2、MySQL操作符
      • (1)Union
      • (2)having、on、where的区别
        • having、where
        • on、where
      • (3) order by
    • 3、MySQL 高级函数
      • (1)IF(expr,v1,v2)
      • (2)IFNULL(expression_1,expression_2)
      • (3)group_concat
      • (4)CAST、CONVERT
      • (5)FIND_IN_SET(str,strlist)
        • strlist是变量使用IN,查询不到结果
        • strlist是变量使用FIND_IN_SET,能查询到结果
      • (6)avg()函数
    • 4、奇怪的bug记录
      • (1)order by 失效
    • 5、Navicat快捷键

更多参考自:https://www.runoob.com/mysql/mysql-functions.html

1、sql语句查询表结构信息

文章参考自https://blog.csdn.net/yilovexing/article/details/107068569

今天使用navicat发现当库中表的数量太大时,部分表就不会出现在下拉项中(表太多眼睛也要看花了),所以不方便查询表的结构信息。如表在哪个库,表的字段、数据类型、字段注释,表的注释等。所以学习了一下使用information_schema 系统数据库查询这些信息的sql语句。

原理:创建数据库、表、字段时,MySQL 会将其存储在 information_schema 系统数据库中,所以我们可以对任意库、任意表、任意字段进行查询。

TABLE_SCHEMA = 数据库名称 
TABLE_NAME = 表名

(1)查询某库某表的字段、数据类型、字段注释

SELECT
	COLUMN_NAME AS 字段名,
	DATA_TYPE AS 数据类型,
	COLUMN_COMMENT AS 字段注释 
FROM
	INFORMATION_SCHEMA.COLUMNS 
WHERE
	TABLE_SCHEMA = 'pxk_nxmu_2022_2023_1' 
	AND TABLE_NAME = 'expertpublishrange_task';

(2)查询某库的所有表名、表注释

SELECT
	TABLE_NAME AS 表名,
	TABLE_COMMENT AS 表注释 
FROM
	INFORMATION_SCHEMA.TABLES 
WHERE
	TABLE_SCHEMA = 'pxk_nxmu_2022_2023_1';

(3)查询库下所有表名、表注释、所有字段名、数据类型、字段注释

SELECT
	t.TABLE_NAME AS 表名,
	t.TABLE_COMMENT AS 表注释,
	c.COLUMN_NAME AS 字段名,
	c.COLUMN_TYPE AS 数据类型,
	c.COLUMN_COMMENT AS 字段注释 
FROM
	INFORMATION_SCHEMA.TABLES AS t,
	INFORMATION_SCHEMA.COLUMNS AS c 
WHERE
	c.TABLE_NAME = t.TABLE_NAME 
	AND t.TABLE_SCHEMA = 'pxk_nxmu_2022_2023_1';

在这里插入图片描述

(4)查询某个表在哪个库

SELECT table_schema FROM information_schema.TABLES WHERE table_name = '表名';

2、MySQL操作符

(1)Union

可以使两张毫不相干的表的查询结果拼接在一起输出,前提是两个查询的列数要相同。

(2)having、on、where的区别

参考自:https://zhuanlan.zhihu.com/p/169737345

having、where

having是对group by之后的数据进行过滤,且having后面跟着的条件中只能使用分组后选中的字段(可以是select后的别名),having跟着的过滤条件中可以使用聚合函数,如having count(*)>5

where是对group by之前的数据进行过滤,且where跟着的过滤条件中不可以使用聚合函数,如having count(*)>5

on、where

当查询涉及多个表的关联时,我们既可以使用WHERE子句也可以使用ON子句指定连接条件和过滤条件。这两者之间的主要区别在于:
对于内连接(inner join)查询,WHERE和ON中的过滤条件等效;
对于外连接(outer join)查询,ON中的过滤条件在连接操作之前执行,WHERE中的过滤条件(逻辑上)在连接操作之后执行。

(3) order by

参考自: https://blog.csdn.net/u010757785/article/details/84619941
order by 字段名 是对按照该字段进行排序,降序desc,默认情况为升序asc
但前提是,该字段类型必须是数字类型如 int 、float、double
若为字符串类型则使用 order by cast(字段 as char)
若为字符串类型的数字则使用 order by (字段+0)order by cast(字段 as unsigned)

3、MySQL 高级函数

(1)IF(expr,v1,v2)

如果表达式 expr 返回值为true,返回结果 v1;否则,返回结果 v2。

SELECT
	*,
IF
	( max( count )= 1, 1, 0 ) IsCanUse 
FROM  expertpublishrange_task

max( count ) 选取最大的count值,
IF( max( count )= 1, 1, 0 ) IsCanUse最大的count值为1则结果为1,否则为0,并将结果赋给IsCanUse字段
在这里插入图片描述

(2)IFNULL(expression_1,expression_2)

Where时后碰见一个这样的写法

AND ( IFNULL( maindep.TeacherAvgScore, 0 )<> 0 OR IFNULL( mainsch.AvarageScore, 0 )<> 0 ) 

其中

IFNULL(expression_1,expression_2);

如果expression_1不为NULL,则IFNULL函数返回expression_1; 否则返回expression_2的结果
此处expression_1为maindep.TeacherAvgScore,其值不为NULL但为0 ,所以返回0;
<>是不等于,0=0所以IFNULL( maindep.TeacherAvgScore, 0 )<> 0返回false,另一边也返回false。所以and这边的限制为false,最后是一条数据也取不到的。

Select时还可以组合这样的写法

SELECT
	...
	ifnull( t.OwnerName, '-' ) OwnerName 
...

如果t.OwnerCode为null,则返回 - ,将结果返回给OnwerCode;如果不为空则正常显示数据
在这里插入图片描述

(3)group_concat

参考自:https://blog.csdn.net/qq_33323054/article/details/125193170

可以将查询的结果拼接为一行记录
例子1:

SELECT
	GROUP_CONCAT(
	IF
	( IsMaster = 1, TeacherName, NULL )) Managers 
FROM
	teachinggroupteachers 
WHERE
	TeachingGroupId IN ( 1, 2, 3, 4 );
IF
	( IsMaster = 1, TeacherName, NULL ) Managers

取IsMaster字段,如果为1则将TeacherName赋值给Managers,否则将TeacherName赋值给Managers

GROUP_CONCAT(
	IF
	( IsMaster = 1, TeacherName, NULL )) Managers 

在上一步的基础上将得到的多个结果以逗号为分隔符拼为字符,串赋给Managers

例子2:
在例子1的基础上组合select、ifnull得到teachinggroup的Managers字段(这里只select了Managers字段,下图只看Managers的效果)

SELECT 
	ifnull(
				( SELECT 
					GROUP_CONCAT( IF ( IsMaster = 1, TeacherName, NULL )) Managers 
				  FROM teachinggroupteachers 
				),
	  '-' ) Managers;
FROM
	teachinggroup

在这里插入图片描述

(4)CAST、CONVERT

参考自:https://www.cnblogs.com/kissdodog/p/3165944.html

cast、convert都用于类型转换:

  • CAST('12.5' AS DECIMAL(9,2)),as后面跟着目标类型
  • CONVERT('12.5',DECIMAL(9,2)),逗号 后面跟着目标类型

表示将12.5的类型变为decimal小数类型,(9,2)规定了(整数部分+小数部分,小数部分)的位数,精度与小数位数分别为9与2。精度是总的数字位数,而小数位数是小数点右边的位数。能够支持的最大的整数有9-2=7位,值是9999999,而最小的小数有2位,值是0.01。

在大部分情况下,两者执行同样的功能,不同的是CONVERT还提供一些特别的日期格式转换,而CAST只提供一般的日期格式转换,详见参考链接。
但CAST是ANSI兼容的,而CONVERT则不是。(这里略有不懂,后续跟进)

(5)FIND_IN_SET(str,strlist)

参考自https://blog.csdn.net/m0_37389955/article/details/78893138

FIND_IN_SET函数是IN函数的升级版,区别在于如果strlist是常量,则可以直接用IN, 否则要用FIND_IN_SET()函数

  • 假如字符串str在由N个被 ‘,’ 符号分开的子链组成的字符串列表strlist 中,则返回值为str第一次出现的位置,范围在 1 到 N之间。
  • 如果第一个参数是一个常数字符串,而第二个是type SET列,则FIND_IN_SET() 函数被优化,使用比特计算。
  • 如果str不在strlist 或strlist 为空字符串,则返回值为 0 。如任意一个参数为NULL,则返回值为 NULL。
  • 这个函数在第一个参数包含一个逗号( , )时将无法正常运行。

strlist是变量使用IN,查询不到结果

在这里插入图片描述
这样只有当list字段的值等于’daodao’时(和IN前面的字符串完全匹配),查询才有效(如下图)
否则都得不到结果即使’daodao’真的在list中(如上图)
在这里插入图片描述

strlist是变量使用FIND_IN_SET,能查询到结果

在这里插入图片描述
strlist是常量时,二者在查询结果上是没有区别的
在这里插入图片描述
在这里插入图片描述

所以如果strlist是常量,则可以直接用IN, 否则要用find_in_set()函数。
二者的查询效率上请参考,扩展文章https://blog.csdn.net/ninisui/article/details/79410398

(6)avg()函数

参考文章:https://blog.csdn.net/m0_51088798/article/details/123906790
avg函数的分子为非NULL的选中字段之和,分母为非NULL的记录条数
若希望分母包含NULL,使用coalesce(price,0)会将NULL值替换为0

4、奇怪的bug记录

(1)order by 失效

我想对计分的问卷 IsScore =1 时的 Score 求平均并保留两位小数,并将结果赋值给 AvarageScore 字段
对不计分的问卷 IsScore =0 时,将 -1 赋值给 AvarageScore 字段
类似下面这样的效果
在这里插入图片描述
于是使用

if(IsScore>0 ,ROUND( avg( Score ),2),'-1' ) as AvarageScore -- 得分

最后跟上 order by AvarageScore desc,但是有时候会出现order by失效的情况如下,
在这里插入图片描述
原因是 当出现 IsScore = 0 时 AvarageScore 类型被从double转为了字符串的’-1’,导致排序出问题,所以应该将 ‘-1’ 改为 -1 ,如下

if(IsScore>0 ,ROUND( avg( Score ),2),-1 ) as AvarageScore -- 得分

5、Navicat快捷键

参考自 https://blog.csdn.net/cxyrfg/article/details/120007030
选中后运行:Ctrl+Shift+r

------ 持续更新中2022-12-14

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

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

相关文章

虚拟化与云计算技术硬核内幕

这种将物理硬件分配给多个使用者的技术&#xff0c;叫做“时分复用”。计算机操作系统的任务调度模块&#xff0c;实质上提供的就是将CPU以“时分复用”的方式给不同任务使用的机制。 那么&#xff0c;如果在虚拟化系统中&#xff0c;也利用时分复用机制&#xff0c;将一个物理…

Pspice——Source用法的汇总

信号源&#xff08;Source&#xff09;的用法 库所在位置&#xff1a;…CAPTURE\LIBRARY\PSPICE\SOURCE.OLB 模拟信号源列表 信号源 类型 用法 适用场景 VAC/IAC 交流 电压源/电流源 VDC/IDC 直流 电压源/电流源 直流特性分析、瞬态分析 VEXP/IEXP 指数 电压…

MVCC 多版本并发控制

Multi-Version Concurrency Control 多版本并发控制&#xff0c;MVCC 是一种并发控制的方法&#xff0c; 一般在数据库管理系统中&#xff0c;实现对数据库的并发访问&#xff1b;在编程语言中实现事务内存。 实现原理 放在中间件的用户进程通过tcp/ip连接到服务器上 服务器给…

ssm+Vue计算机毕业设计校园学生管理系统(程序+LW文档)

ssmVue计算机毕业设计校园学生管理系统&#xff08;程序LW文档&#xff09; 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技…

FENeRF: Face Editing in Neural Radiance Fields翻译

论文地址 代码地址 摘要: 以前的肖像生成方法大致分为两类&#xff1a;2D GAN和3D感知GAN。2D GAN可以生成高保真的肖像&#xff0c;但具有低的视觉一致性。3D感知GAN方法可以保持视觉一致性&#xff0c;但其生成的图像不具有局部可编辑性。为了克服这些限制&#xff0c;我们…

Java Timer(定时器)

概述&#xff1a; Timer是一种定时器工具&#xff0c;用来在一个后台线程计划执行指定任务。它可以安排任务“执行一次”或者定期“执行多次”。 然而在实际的开发过程当中&#xff0c;经常需要一些周期性的操作&#xff0c;比如每5分钟执行某一操作等。对于这…

【AI理论学习】Graph Embedding理论介绍及5种算法演示(DeepWalk)

Graph Embedding理论介绍及5种算法演示1.图数据结构2.图表示学习3.Graph Embedding3.1 DeepWalk算法DeepWalk算法理论DeepWalk 核心代码参考资料1.图数据结构 在现实世界中&#xff0c;网络只是互连节点的集合。为了表示这种类型的网络&#xff0c;我们需要一个与之相似的数据…

SDV进入新阶段,如何让智能汽车应用开发变得更容易?

软件定义汽车加速到来&#xff0c;基于域控制器架构的车型大规模量产&#xff0c;从域控架构到中央集成式架构&#xff0c;跨域融合已经成为明显趋势。 高工智能汽车研究院发布《2023-2025年智能网联产业趋势报告》显示&#xff0c;今年1-10月&#xff0c;智驾域控制器前装搭载…

【Kafka】Kafka 简介 || CentOS7 安装 Kafka || SpringBoot整合 Kafka 方式

最近的精神状态真的不是很好&#xff0c;刚刚脱离&#x1f40f;羊的苦海&#xff0c;收获了很多吧&#xff0c;任何经历都是我们成长的关键。本文是我 Kafka 入门部分的一个笔记&#xff0c;大家如果有有疑问的地方可以评论区或者私信我&#xff0c;我看见了都会回复的。最后&a…

安卓玩机搞机技巧综合资源-----手机隐藏拍照录像 取证软件 寻找隐藏摄像头 【十六】

接上篇 安卓玩机搞机技巧综合资源------如何提取手机分区 小米机型代码分享等等 【一】 安卓玩机搞机技巧综合资源------开机英文提示解决dm-verity corruption your device is corrupt. 设备内部报错 AB分区等等【二】 安卓玩机搞机技巧综合资源------EROFS分区格式 小米红…

计算机网络学习笔记(V):传输层

目录 1 传输层概述 1.1 功能 1.2 两种协议 1.TCP 2.UDP协议 1.3 传输层的寻址与端口 2 UDP协议 2.1 特点 2.2 首部格式 2.3 UDP检验 3 TCP协议 3.1 TCP协议 1.特点 2.报文段首部格式 3.2 TCP连接管理 1.连接建立 2.TCP连接释放 3.3 TCP可靠传输 1.校验 2.序…

java+MySQL 基于ssm的视频播放网站

随着现代视频播放网站管理的快速发展,可以说视频播放网站管理已经逐渐成为现代视频播放网站管理过程中最为重要的部分之一。但是一直以来我国传统的视频播放网站管理并没有建立一套完善的行之有效的视频播放网站管理系统,传统的视频播放网站管理已经无法适应高速发展,无论是从效…

中小型水库雨水情测报平台有哪些功能?水库雨水情数据孪生安全监测系统

平升电子中小型水库雨水情测报平台/雨水情监测及视频监控解决方案/水库雨水情数据孪生安全监测系统统辅助水利管理部门实现水库雨水情信息“全要素、全量程、全覆盖”自动测报。系统具备水库水位、雨量、现场图像/视频等水文信息采集、传输、处理及预警广播等功能&#xff0c;有…

美股l2接口有什么特别的功能服务?

美股l2接口主要是面向做美股投资的level2行行情接口&#xff0c;接下来小编说说它的两大特色&#xff01; 1、买卖盘从各五档扩展到各十档 为投资者、基金、机构提供更多的交易参考数据&#xff0c;可以更准确地确定交易任务的完成程度。 美股l2接口&#xff08;十档行情快照…

【ShaderGraph】关于ShaderGraph的的介绍和入门

目录 一.ShaderGraph入门介绍 二.创建SRP工程&#xff08;URP或者HDRP&#xff09; 1.创建URP工程 2.创建HDRP工程 三.创建一个Shader Graph文件资源 ​​​​​​​ 一.ShaderGraph入门介绍 Shader Graph 使您能够直观地构建着色器。您无需编写代码&#xff0c;而是在图…

实验室管理系统

开发工具(eclipse/idea/vscode等)&#xff1a; 数据库(sqlite/mysql/sqlserver等)&#xff1a; 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a;模块划分&#xff1a;班级模块、老师模块、学生模块、实验室模块、试脸模块、作业模块、作业提交、作业打分 管理员功能&…

ICG-Carboxylic Acid ICG标记羧基

ICG-Carboxylic Acid ICG标记羧基 外观&#xff1a; 绿色固体粉末 CAS: 181934-09-8 分子式&#xff1a;C45H50N2O5S 相对分子质量(g/mol): 730.6 溶解性&#xff1a;DMF/DMSO 注意事项 避免长时间接触光线。 保存条件&#xff1a;-20避光。 产品应用 ICG是一种带负电…

OA办公系统,推动企业管理革新

近年来&#xff0c;随着经济形势的发展与现代互联信息技术的高速发展&#xff0c;OA办公系统软件逐渐为人们所熟知&#xff0c;成为企业管理革新的重要选择。 1.OA办公系统助力企业实现组织管理 企业OA财务费控办公系统的扁平化组织可以说是组织创新最重要的一个利器。通过OA财…

基于springboot的电影推荐网站设计与实现(协同算法推荐)

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

猿如意中的【Qt Creator】工具详情介绍

一、工具名称 Qt Creator 二、下载安装渠道 Qt Creator通过CSDN官方开发的【猿如意】客户端进行下载安装。 2.1 什么是猿如意&#xff1f; 猿如意是一款面向开发者的辅助开发工具箱&#xff0c;包含了效率工具、开发工具下载&#xff0c;教程文档&#xff0c;代码片段搜索&…