MySQL常用函数、关键词

2023-10-26

一、关键词

1、unsigned : 非负数,定义非负,可以在定义主键的自增列时使用。

	column_name int UNSIGNED AUTO_INCREMENT

2、desc :降序,从大到小;
asc 或 缺省 :为升序,从小到大,和order by 配合使用。

	order by column_name desc

3、union :连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。
column_name 为列名,table 为表名,[] 为可选条件,where conditions 为检索条件,
all 结果集中包含重复数据,distinct 为默认 结果集中不包含重复数据

	select column_name1,column_name2...
	from table1
	[where conditions] 
	union [all | distinct]
	select column_name1,column_name2...
	from table2
	[where conditions]

4、is null : 当列的值是 NULL,此运算符返回 true;
is not null :当前列的值不为空,运算符返回true。

	select * from table column_name is null;
	select * from table column_name is not null;

5、inner join、join :内连接,获取两个表中字段匹配关系的记录;
left join :左连接,获取左表所有记录,即使右表没有对应匹配的记录;
right join :右连接, 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。

	select table1.column_name1, teable2.column_name2...
	from table1
	left join table2 on table1.column_name1= table2.column_name2;

6、between :配合WHERE使用,选取介于value1和value2之间的数据范围,值可以是数值、文本或者日期。如需过滤范围之外的,可在 between 前加 not 关键词(not between value1and value2)

	SELECT column_name FROM teable WHERE column_name BETWEEN value1 AND value2;

7、case:条件判断关键词

CASE [column_name] WHEN [value1] THEN [result1]... ELSE [default] END
select
	CASE 'a'
	WHEN 'a' THEN '1'
	WHEN 'b' THEN '2'
	ELSE '3' END; -- 1
CASE WHEN [expr] THEN [result1]... ELSE [default] END
select
	CASE
	WHEN 1 >= 2 THEN 'a'
	WHEN 3 >= 2 THEN 'b'
	ELSE 'c' END; -- b

二、函数

(一)、处理字符串

1、replace(str,from_str,to_str)

	把str中的from_str替换为to_str。
	from_str 为null时会将str置为null,str不局限于字符型,但是to_str的类型需要和str一致。
	replace('abcd','b',',') -- a,cd

2、substring_index(str, delimiter, number)

	返回从字符串 str 的第 number 个出现的分隔符 delimiter 之后的子串。
	如果 number 是正数,返回第 number 个字符左边的字符串。
	如果 number 是负数,返回第(number 的绝对值(从右边数))个字符右边的字符串。
	substring_index('aa*bb' , '*' , 1) -- aa
	substring_index('aa*bb' , '*' , -1) -- bb

3、substr(str, start, length)

	从字符串 str 的 start 位置截取长度为 length 的子字符串
	下标从1开始包括start和length []闭合区间。
		substr('abcd',2,2) -- bc

4、trim(str)

	去掉字符串 str 开始和结尾处的空格。
	trim('  qwer  ') -- qwer

5、position(str1 IN str)

	从字符串 str 中获取 str1 的开始位置
	从1开始,返回位置包括 str1。
	position( 'aad' in 'qweraadqwre') -- 5

6、character_length(str)

	返回str的字符数。
	character_length('asdf') -- 4
	character_length('嘎嘎') -- 2

7、length(str)

	返回str的字节数
	utf8编码下,一个汉字3个字节,一个数字或字母1个字节
	gbk编码下,一个汉字2个字节,一个数字或字母1个字节。
	length('哈哈!') -- 9
	length('qwer') -- 4

8、instr(field, str)

	返回串 str 的位置,没找到返回0,从1开始
	第一个参数 field 是字段,第二个参数 str 是要查询的串。
	instr('qwer','e') -- 3

9、concat(str1,str2…)

	返回多个字符串的连接值,
	如果有任何一个参数为null,则返回值为nullselect concat('aa','-','bb') -- aa-bb
	select concat('a',',','b',',','c') -- a,b,c

10、concat_ws(separator,str1,str2…)

	和concat()一样,将多个字符串连接成一个字符串,
		但是可以一次性指定分隔符,str参数为null时可正常返回连接值,
	separator参数:
		分隔符,如果分隔符为null,则返回值为nullselect concat_ws('-','a','b') -- a-b
	select concat_ws(',','a','b','c') -- a,b,c
	select concat_ws(',','a','b','c',null,'d',null,null) -- a,b,c,d

11、group_concat(column_name1,column_name2…)

group by产生的同一个分组中的值连接起来,返回一个字符串结果。分组字符串连接。
	注意:有最大长度的限制,超过最大长度就会被截断掉,默认长度为1024字符。
		获取当前设置的长度
			select @@global.group_concat_max_len;
			show variables like "group_concat_max_len";
		修改全局变量设置的长度,之后重启MySQL服务。
			SET GLOBAL group_concat_max_len=10240;
			SET SESSION group_concat_max_len=10240; 
			或者在MySQL配置文件中my.conf或my.ini中添加:
			  #[mysqld]
			  group_concat_max_len=10240
	group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator 'separator'] )
		[]为选参数,
		distinct,去重,通过使用distinct可以排除重复值;
		order by 排序字段 asc/desc ,如果要对连接结果集中的值进行排序,可以使用order by子句;
		separator 'separator',是一个字符串值(可以是换行符),如果缺省不写,默认为一个逗号。

12、find_in_set(str,strlist)

	查询str于strlist中的位置,下标从1开始,如在strlist中未找到,则返回0
	str参数:
		如为null,则返回null;如参数包含“,”,则无法进行使用,返回0。
	strlist参数:
		以“,”分隔,如:(1,2,6,8,10,22)"1,2,3";如为null,则直接返回null。
		也可以为具体某个字段。
	select find_in_set(null,"1,2,3") -- null
	select find_in_set("","1,2,3") -- 0
	select find_in_set("1,2","1,2,3") -- 0
	select find_in_set(0,"1,0,3") -- 2
	select find_in_set(2,null) -- null

(二)、处理日期

1、timediff(time1 , time2)

	返回time1,time2两个时间相减得到的差值;返回差值格式为,时:分:秒
	time1-time2。
	timediff( '2021-11-12 10:00:00' , '2021-11-12 18:00:00') -- -08:00:00

2、time_to_sec(time1)

	返回time1的秒值,
	时间值转换为秒值,可配合timediff()使用。
	time_to_sec( '8:00:00' ) -- 28800
	time_to_sec ( timediff( '2021-11-12 10:00:00' , '2021-11-12 18:00:00') ) -- -28800

3、timestampdiff(interval, time1,time2)

	timediff的升级版,可以定义返回单位,
	返回time1,time2两个时间相减得到的差值,结果单位由interval参数给出,
	time2-time1,
	interval参数:
		frac_second 毫秒(低版本不支持MySQL 5.6之后才支持毫秒的记录和计算),
		second 秒,minute 分钟,hour 小时,day 天,week 周,month 月,quarter 季度,year 年。
	timestampdiff(second, '2021-11-12 10:00:00' , '2021-11-12 18:00:00') -- 28800

4、date_sub(date,INTERVAL expr type)、date_add(date,INTERVAL expr type)

	date_sub() 函数从日期减去指定的时间间隔,
	date_add() 函数从日期加上指定的时间间隔,
	date 参数是合法的日期表达式,
	expr 参数是希望添加的时间间隔(可以为负),
	type 参数:常用参数
		Second,Minute 分钟,Hour 小时,Day,Week 周,Month,Quarter 季度,Year...
	
	select now(),date_add(now(),interval 60 second) --当前时间加60秒
	select now(),date_sub(now(),interval -60 second) --当前时间加60秒

5、timestampadd(interval, expr ,date )

	与date_add()相仿,从日期加上指定的时间间隔,
	interval参数:
		frac_second 毫秒(低版本不支持MySQL 5.6之后才支持毫秒的记录和计算),
		second 秒,minute 分钟,hour 小时,day 天,week 周,month 月,quarter 季度,year 年。
	expr 参数是希望添加的时间间隔(可以为负),
	date 参数是合法的日期表达式。
	select now(),timestampadd(second,60,now()) --当前时间加60秒

(三)、服务器信息

1、version()

	返回mysql服务器信息,
	mycat也可以使用。
	mycat:
		version() -- 5.5.8-mycat-1.5.1-RELEASE-20160816173057 
	mysql:
		version() -- 5.7.26-log

三、运算符

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL常用函数、关键词 的相关文章

随机推荐

  • MySQL 远程登录与其常用命令的介绍

    以下的文章主要介绍的是MySQL 远程登录与其常用命令的介绍 MySQL 远程登录与其常用命令之所以能在很短的时间内被人们广泛的应用 原因也是因为它们的独特功能 以下的文章就有对其相关内容的介绍 MySQL 远程登录及常用命令 第一招 My
  • Unbantu22.04使用DevStack一键部署OpenStack(使用nat静态IP)

    d 学习openstack的小白 第一步就遇到了大麻烦 下载并部署Openstack 传统的基于组件 一个个的安装配置更加麻烦 使用DevStack工具 一键部署可能是个不错的选择 But devstack部署期间总是会出现各种各样的错误
  • JavaScript面向对象

    JavaScript面向对象 面向过程 面向过程就是讲需求一步一步自己完全实现 如 一堆衣服 需要自己一件一件洗 面向对象 面向对象是把有共同特征的方法抽取为类 比如 一堆衣服 都需要洗 创建洗衣机类 女朋友类 让她洗 类的定义和使用 定义
  • 机器学习 day09(如何设置学习率α,特征工程,多项式回归)

    1 常见的错误的学习曲线图 上方两个 当关于迭代次数的学习曲线图 出现波浪型或向上递增型 表示梯度下降算法出错 该情况可由 学习率 过大 或代码有bug导致 2 常用的调试方法 选择一个非常非常小的学习率 来查看学习曲线是否还是有误 即在某
  • uni-app网络请求的封装

    uni app网络请求的封装 这几天没事干 就去小程序开发小团队里看看 顺便看了一下代码 在网络请求上发现了一些问题 差点没忍住破口大骂 最终想了想 他们之前没做过 都是第一次就算了 其实是安慰自己而已 网络请求都写在page里 每个请求都
  • 池化方法总结(Pooling)

    在卷积神经网络中 我们经常会碰到池化操作 而池化层往往在卷积层后面 通过池化来降低卷积层输出的特征向量 同时改善结果 不易出现过拟合 为什么可以通过降低维度呢 因为图像具有一种 静态性 的属性 这也就意味着在一个图像区域有用的特征极有可能在
  • JAVA-while循环语句

    while循环语句用法比for语句用起来简单 格式也对的简单 while 判断条件 循环体 public class WhileTest public static void main String args int i 1 while i
  • 将tensorpack的inference改为pytorch

    最近在跑一个OCR模型 模型是用Tensorpack写的 模型做inference的时候 显存 速度都不是很理想 改成pytorch后 显存占用 速度比之前好了很多 记录下改inference的过程遇到的一些坑 将pb文件转为pth文件 i
  • Python 垃圾回收机制

    众所周知 我们当代的计算机都是图灵机架构 图灵机架构的本质 就是一条无限长的纸带 对应着我们今天的存储器 在工程学的演化中 逐渐出现了寄存器 易失性存储器 内存 和永久性存储器 硬盘 等产品 其实 这本身来自一个矛盾 速度越快的存储器 单位
  • 【易售小程序项目】请求包创建+登录功能实现【基于若依管理系统开发】

    文章目录 说明 请求包创建 创建文件夹 请求工具 request js 登录功能实现 请求方法 页面 涉及知识点 错误提示 前端校验 设置 token 到客户端缓存中 路由跳转 如果已经登录过 访问登录页直接跳转到首页 同项目其他文章 说明
  • 服务器配置填坑 wget: unable to resolve host address解决方法,最终成功

    项目上线 手续要配置服务器 甲方机房在单位内 无法使用公司云服务器 于是配置坑来了 配环境下载包 ubutun 16显示如下错误 wget unable to resolve host address wget 无法解析主机地址 这就能看出
  • 51单片机智能蓝牙小车

    作为大一电子小趴菜 在和队友学习制作蓝牙小车过程中遇到了许多困难 本文既为大家避坑 也作为团队总结 这篇文章分为两部分 1 组装篇 2 代码篇 思维导图 组装篇 先准备好一块电源拓展板 用于为电机驱动模块和降压模块连接电源 小车底盘可淘宝定
  • element ui 表单验证触发方式:trigger: ‘change‘和trigger: ‘blur‘区别

    推荐阅读 Vue2 7正式发布 代号为 Naruto 火影忍者 原生支持 Composition API 终于可以在Vue2项目中使用Vue3的新特性了 真香 南北极之间的博客 CSDN博客今天 Vue 创始人尤雨溪刚刚正式发布了 Vue
  • HTML+CSS+JavaScript复习笔记持更(十)——CSS3常用属性之定位

    定位 定位主要是用来设定元素在页面上的位置的 其代码为 position 定位有三种定位方式 static 无特殊定位 按照dom排序 absolute 绝对定位 往前面找最近的 有定位属性的元素 以该元素的起点为起点 绝对定位 脱离文档流
  • JS中sort()方法原理及使用

    sort 方法用于对数组的元素进行排序 并返回数组 默认排序顺序是根据字符串UniCode码 因为排序是按照字符串UniCode码的顺序进行排序的 所以首先应该把数组元素都转化成字符串 如有必要 以便进行比较 语法 arrayObject
  • 计算机组成原理(1)-软件设计(二十二)

    程序设计语言 软件设计 二十一 https blog csdn net ke1ying article details 129344983 计算机组成原理在软件设计考试分值占比较高 主要会考 1 数据的表示 数据进制转化 日常生活中使用的都
  • MAC 下 OpenCV4 配置 VScode 失败 Xcode 成功记录(2021年12月)

    2022 1 22更新 VScode 设置成功 详情请见 https blog csdn net qq 42067550 article details 122634801 问题描述 安装好了 OpenCV 但是在 VScode 里面花了3
  • 线程的状态及阻塞

    之前提到了线程和进程 那就提一下线程的状态吧 线程状态通常分为五种 New 新建状态 创建线程对象 该线程的生命周期开始 此时该线程已经有了相应的内存空间和其他资源 Runnable 就绪状态 线程对象创建后 调用该线程的start 方法就
  • 去哪儿,模拟登录(扫码登录)

    声明 本文仅限交流学习使用 请勿使用在任何非法商业活动 禁止用于非法用途 否则后果自负 如有侵权 请告知删除 谢谢 一 去哪儿 出行类大厂 为了安全 查询很多信息需要身份校验 有多种登陆方式 1 1 如查询航班信息时 自动弹出登录窗口 会有
  • MySQL常用函数、关键词

    一 关键词 1 unsigned 非负数 定义非负 可以在定义主键的自增列时使用 column name int UNSIGNED AUTO INCREMENT 2 desc 降序 从大到小 asc 或 缺省 为升序 从小到大 和order