Mysql学习笔记整理手册
继上一篇博客《Oracle学习笔记整理手册》之后,我再写一篇Mysql版本的
PS:本博客收录自己工作中遇到学到的一些mysql技能,有时间就更新整理一下
(1) str_to_date
oracle有to_date函数,Mysql的格式是str_to_date(‘2019-02-12 11:34:32’, ‘%Y-%m-%d %H:%i:%s’)
(2) 递归查询
oracle实现递归查询的话,就可以使用start with … connect by,mysql并没有通过类似函数,解决方法是通过自定义函数的方法,具体可以参考我这篇博客
https://blog.csdn.net/u014427391/article/details/87297884
(3) 排序问题
oracle做数据排序的时候,有时候可以用nulls first或者nulls last将null值排在最前或者最后。
不过迁到Mysql的话,mysql并没有提供类似函数,所以要怎么实现?下面给出解决方法:
null值排在最后,用Mysql的IF和ISNULL函数。如果为空返回1,否返回0
select * from A order by IF(ISNULL(a),1,0),a desc
1
null值排在最前,用Mysql的IF和ISNULL函数。如果为空返回0,否返回1
select * from A order by IF(ISNULL(a),0,1),a desc
1
具体可以参考我写的这篇博客:https://blog.csdn.net/u014427391/article/details/87297068
(4) 条件函数
条件函数比如case..when在mysql、Oracle都是有的,除了case...when这最基本之外,Oracle有nvl、nvl2和decode函数,Mysql没有提供类似decode的函数,不过有类似Oracle的nvl和nvl2函数。
Oracle
介绍一下oracle的nvl函数和nvl2函数。
nvl函数
nvl函数基本语法为nvl(E1,E2),意思是E1为null就返回E2,不为null就返回E1。
nvl2函数
nvl2函数的是nvl函数的拓展,基本语法为nvl2(E1,E2,E3),意思是E1为null,就返回E3,不为null就返回E2。
nvl函数具体可以参考我这篇博客:https://blog.csdn.net/u014427391/article/details/84996009
Mysql
上面是Oracle的做法,mysql的做法可以用IFNULL(E1,E2)函数,其功能类似与Oracle的nvl函数。意思是E1为null就返回E2,不为null就返回E1。
Mysql IF函数,这里可以和Oracle的nvl2函数做对比,不过差别比较大了,nvl2函数是针对数值为空的情况,IF函数是针对自定义条件的
格式:IF(Condition,A,B)
意义:当Condition为TRUE时,返回A;当Condition为FALSE时,返回B。
(5) 列转行函数
Oracle列转行函数可以用vm_comcat函数,mysql的用concat_ws函数
使用方法:
CONCAT_WS(separator,str1,str2,...)
eg:
select concat_ws(',','11','22','33');
Oracle列转行函数的可以参考我以前博客:https://blog.csdn.net/u014427391/article/details/84981114
列转行函数不兼容问题:https://blog.csdn.net/u014427391/article/details/84867390
(6) find_int_set
Mysql有提供一个find_int_set函数,其语法为FIND_IN_SET(str,strlist)
- str: 要查询的字符串
- strlist: 序列,用逗号分隔,比如(1,2,3)
这个函数只要用于查询的时候,查询字符串是否在strlist序列里,like查询只是广泛的模糊匹配
(7) 类型转换函数
mysql的类型转换函数为cast(字段 as 类型),
mysql支持的类型有
- CHAR[(N)] 字符型
- DATE 日期型
- DATETIME 日期和时间型
- DECIMAL float型
- SIGNED int
- TIME 时间型
(8) 合并更新
Oracle实现merge into实现,意思是数据表已经有数据就更新,没数据就新增
mysql的函数是replace into,语法
replace into 表格(字段,...) values(数据,...)
Mysql学习笔记整理手册的更多相关文章
- 【mysql学习笔记整理】
/*mysql学习笔记整理*/ /*常用的数据库操作对象*/ #库的操作#创建#数据库的创建USE mysql;CREATE DATABASE db_x;#删除#删除数据库DROP DATABASE ...
- Oracle学习笔记整理手册
文章目录(1)Oracle正则匹配使用(2)Oracle修改有数据的数据字段类型(3)Oracle表数据回滚语句(4)sql筛选出记录数大于2的记录(5)oracle同义词(6)oracle内外连接( ...
- MySQL 学习笔记整理
1. 创建表 CREATE TABLE item( ID INT(6) NOT NULL AUTO_INCREMENT, Name CHAR(32) NOT NULL, Price DECI ...
- Mysql学习笔记整理之数据库优化
数据库性能瓶颈的原因 数据库连接数 数据量大 硬件资源限制 数据性能优化方案 sql优化 2.缓存 3.建好索引 4.读写分离 5. 分库分表 慢日志查 ...
- Mysql学习笔记整理之引擎
mysql的引擎: myisam引擎 Mysql 5.5之前默认的存储引擎 数据.索引分别存储 (数据物理磁盘---索引物理磁盘) .MYD 存储数据 表级索 ...
- Mysql学习笔记整理之选用B+tree结构
为什么mysql不使用平衡二叉树? 数据处的深度决定着他的IO操作次数,IO操作耗时大 每一个磁盘块保存的数据量太小 B+Tree和B-Tree的区别? B+树几点关键字搜索采用闭合区间 B+树非叶节 ...
- Mysql学习笔记整理之索引
索引的概念: 索引是一个分散存储的数据结构(检索)对数据库表中一列或多列的值进行排序 为什么要用索引? 索引能极大的减少存储引擎需要扫描的数据量 索引可以把随机IO变成顺序IO 索引可以帮助我们进行分 ...
- 一千行MySQL学习笔记 (转)
出处: 一千行MySQL学习笔记 /* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权 ...
- mysql basic operation,mysql总结,对mysql经常使用语句的详细总结,MySQL学习笔记
mysql> select * from wifi_data where dev_id like "0023-AABBCCCCBBAA" ; 1.显示数据库列表.show d ...
随机推荐
- iOS.mach_msg_trap()
mach_msg_trap() 1. mach_msg() mach_msg_trap() " > The Debugger window shows the calling stac ...
- GUI学习之十——QFrame和的QAbstractScrollArea学习总结
上一章我们学习了单行的文本框QLineEdit类,下面我们要为多行的文本框的学习坐下准备,总结一下QFrame类和QAbstractScrollArea类 一.QFrame类 1.描述 QFrame的 ...
- Finance API文档
0. 公共部分 请求url {apiRoot}/{method}?ver={version}&appkey={appkey}&sign={sign} 参数名 说明 示例 apiRoot ...
- Github常用用法
基本要求已安装Github客户端 一.新建项目 1.首先创建代码仓库,复制仓库地址: 2.本地带上传文件目录,鼠标右键,打开git -> Git Bash Here -> git init ...
- Spring Boot jsp页面无法跳转问题
可能的情况如下: 1.未在pom.xml中添加依赖 <!-- jsp 视图支持--> <dependency> <groupId>org.apache.tom ...
- python神器之fabric
官网:http://www.fabfile.org/ 中文站点:http://fabric-chs.readthedocs.io/zh_CN/chs/ Fabirc是基于python实现的SSH命令行 ...
- 检索html页自生成&nasp;标签,并替换为空(即去掉空格)
在开发过程中,遇到这样的一种情况,就是页面有时候不知道什么原因会自动生成一些元素,从而打乱自己原有的一些布局. 原html页源代码: 生成后的html源代码: 可以明显看出自动生成了很多 元素,现 ...
- makefile与动态链接库案例分析——动态库链接动态库
http://blog.csdn.net/huqinwei987/article/details/50517780 背景:效率考虑,要重用把服务器主备机方案,以库Libmdpha(高可用)的形式加进主 ...
- Combo控件失效
问题:点击combo控件,下拉选项不显示. 解决:注释HandleMessage中的MessageHandler相关语句,正常下拉.
- Web表现层
目录 Web表现层调用过程... 2 延迟... 3 什么是延迟... 3 延迟的构成... 3 最基本的优化思路:... 4 Web表现层性能优化... 4 Web性能的基本指标... 4 Web性 ...