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 ...
随机推荐
- return this 和return * this
this是指向自身对象的指针,*this是自身对象. 也就是说return *this返回的是当前对象的克隆或者本身(若返回类型为A, 则是克隆, 若返回类型为A&, 则是本身 ). retu ...
- Ubuntu 下的QQ WECHAT FOXMAIL解决方案
原文链接: https://www.lulinux.com/archives/1319 真心很强大. Ubuntu系发行版*安装deepin wine QQ的步骤 1,安装deepin-wine环境: ...
- ASP.NET Core使用EntityFrameworkCore CodeFrist
1,安装环境: 如果是VS2015,确保已经升级至 update3或以上 .net core sdk (https://www.microsoft.com/net/download/core) vs2 ...
- C#学习笔记14——TRACE、DEBUG和TRACESOURCE的使用以及日志设计
Trace.Debug和TraceSource的使用以及日志设计 .NET Framework 命名空间 System.Diagnostics 包含用于跟踪执行流程的 Trace.Debug 和 ...
- ES6 学习之旅
最常用的ES6特性 1.let, const 2.class, extends, super 3.arrow function (箭头函数) 4.template string (用反引号(`)来标识 ...
- oracle中向timeStamp类型字段插入当前时间
to_timestamp(to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'),'YYYY-MM-DD HH24:MI:SS')
- C/C++字符串相关知识使用整理
C++字符串处理有最原始的char以及string两种方式,这里对其常用的功能进行总结. #include <string>using namespace std; ]; string s ...
- go的基本数据类型
一,数据类型的介绍 在go语言中,数据类型是用于声明函数和变量的:数据类型是为了把数据分成所需内存不同大小的数据,除了在需要使用大数据的时候才会申请大内存,这样就会充分的使用内存 Go 语言按类别有以 ...
- js 对象与json的转化
1.将对象转换为JSON格式字符串 JSON.stringify(object) 2.将JSON字符串转换为对象 JSON.parse(jsonString);
- android与php使用base64加密的字符串结果不一样解决方法
base64将字符串转换为字节得到同一个值 一.错误 String signString = Base64.encodeToString(signContent.getBytes(),Base64.N ...