
数据库
文章平均质量分 73
冰阔落
Stay hungry, Stay foolish, Stop when you are perfect.
展开
-
MySQL 的 Replace into 与 Insert into on duplicate key update 真正的不同之处
但是实际上,根据我推测,如果是简单的update语句,auto_increment不会+1,应该也是先delete,再insert的操作,只是在insert的过程中保留除update后面字段以外的所有字段的值。有key的时候,replace是delete老记录,而录入新的记录,所以原有的所有记录会被清除,这个时候,如果replace语句的字段不全的话,有些原有的比如例子中c字段的值会被自动填充为默认值。- 意向共享锁(IS): 在一个事务获取表t的某行的S锁之前, 他必须获取表t的一个IS锁或更强的锁。原创 2023-04-20 17:42:34 · 1984 阅读 · 0 评论 -
mysql 字段值(字符串)累加
但是,在更新时,并不知道该记录的原值,也不希望通过mysql查询来获取原值(实际上,并不关心原值是多少,只需要在原值基础上添加新值即可)。结论:在create table时,需指定该字段NOT NULL,同时设置default 为""即可。如果原值为NULL,上述SQL语句将无法更新字段值(但mysql也不会报错)。即:针对以上记录,执行上述SQL后,country 值为NULL;mysql在更新记录时,需要在原来的值上在累加新的值。执行上述SQL后,country = "USA"。转载 2023-04-18 19:09:11 · 806 阅读 · 0 评论 -
如何使用 SQL 快速删除数百万行数据
【4】个人不建议上述的方式建表,上面的建表方式新表是不会复制原表的索引结构的,如果这个是一个大表那么后面单独加索引也是一个问题。注意:其中俩次rename可以先drop然后一次的rename,但是考虑到数据安全,毕竟是大数量数据删除,还是多操作一步,替换后自己检查下,然后再删除旧表,稳妥些。【7】小技巧,如果你的大表有递增的ID,删除的或者保留数据的能够以ID作为划分的那么select的条件可以通过这里进行优化,那么操作效率会更快。通过上面的方式500万的数据不到1分钟,还是比较快的。转载 2022-10-19 17:09:07 · 5068 阅读 · 0 评论 -
Mysql 分区大全及讲解
注意:RANGE分区与LIST分区有一定的相似性,RANGE分区是基于一个连续的区间范围分区,而LIST分区是基于一个给定的值列表进行分区,HASH分区与KEY分区类似,HASH分区既可以使用MySQL本身提供的HASH函数进行分区,也可以使用用户自定义的表达式分区,而KEY分区只能使用MySQL本身提供的函数进行分区。与hash分区不同的是,当数据表中存在主键的时候,可以不指定分区键,MySQL默认使用主键作为key分区的分区键。其中,子分区可以使用HASH分区,也可以使用KEY分区。转载 2022-10-13 13:41:32 · 2630 阅读 · 0 评论 -
SQL query on redshift to get the first and the last value
SQL query on redshift to get the first and the last value。原创 2022-10-13 11:39:38 · 156 阅读 · 0 评论 -
python 连接 SQLserver、oracle、redshift、mySQL 方法总结
本人是刚刚学习Python小白,因为工作关系,接触到几种不同类型的数据库。这是连接四种不同数据库并获取数据的方法总结。如有不足之处,望高手指点。oracle, SQL server,和 redshift 建立连接的时候大同小异,获取数据和列名的时候,使用的方法都是一样的。但是mysql是个奇葩,用原来的获取方式,拿到的是个tuple. 所以再创建要定义这个cursor类型。然后拿到的数据就是带列名的,神奇呀。pandas 有一个read_sql也挺好用,也包括列名,但是传参数我还没有尝试过怎么用。.....转载 2022-08-29 13:40:00 · 479 阅读 · 0 评论 -
Mysql生成任意指定两时间范围内的日期列表(三种方法)
前言:工作当中有一个场景是数据库存了一些数据,但是日期是零碎的,只有当用户进行了相应日期的操作才会有对应记录的生成。此时有一个需求就是要让用户看到哪个日期有操作,哪个日期没有操作。此时就需要有一个表可以提供一段时间范围内的所有日期。在看这篇文章以前呢,得明白几个知识点,存储过程(如何创建,如何调用,好处是什么)、变量(如何创建,赋值,使用)、DATE_SUB、DATE_FORMAT、在网上...转载 2020-04-23 16:16:48 · 4461 阅读 · 0 评论 -
[MySQL高级](一) EXPLAIN用法和结果分析
1. EXPLAIN简介使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是表结构的性能瓶颈。 ➤ 通过EXPLAIN,我们可以分析出以下结果:表的读取顺序数据读取操作的操作类型哪些索引可以使用哪些索引被实际使用表之间的引用每张表有多少行被优化器查询➤ 使用方式如下:EXPLAIN +SQL语句E...转载 2020-04-10 15:24:13 · 252 阅读 · 0 评论 -
mysql解析json/数组
mysql在5.7开始支持json解析了 也可以解析数组哦!直接上demo: SELECT Substr(col, 2, Length(col) - 2), Length(col) FROM (SELECT Json_extract(Json_extract(Json_extract(state, "$.tpl"),"$.items" ...转载 2020-04-08 16:40:26 · 5502 阅读 · 3 评论 -
删库了,我们一定要跑路吗?
在工作中,我们误删数据或者数据库,我们一定需要跑路吗?我看未必,程序员一定要学会自救,神不知鬼不觉的将数据找回。在 mysql 数据库中,我们知道 binlog 日志记录了我们对数据库的所有操作,所以 binlog 日志就是我们自救的利器。接下来就来开启程序员自救之路。想要自救成功,binlog 这把利器一定要好,在自己之前,我们一定要确定我们有 binlog 这把利器,以下就是确保有 b...转载 2020-02-26 13:46:23 · 350 阅读 · 1 评论 -
MySQL 根据出生日期计算年龄的五种方法比较
以前使用mysql不是很多,对mysql的函数也不是很熟悉,遇到这个问题第一时间百度搜索,搜索到这两种方法,这两种方法是排在百度第一条的博客。方法一SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(birthday)), '%Y')+0 AS age方法一,作者也说出了缺陷,就是当日期为未来日期时结果为0,而不是负数;这里使用了5个函数...转载 2019-12-10 14:03:20 · 1818 阅读 · 1 评论 -
mysql中in函数和find_in_set函数的区别详解
前段时间项目中使用到Mysql的FIND_IN_SET函数,感觉挺好用的。过一段时间,老大找到我说,这个需要改为IN,哈哈,只能改了,原因会在下面分析到!mysql> select * from test;+----+-------------+| id | name |+----+-------------+| 1 | name1,nam2 || 2 | name...转载 2019-12-04 14:52:24 · 448 阅读 · 0 评论 -
MySQL 中 row_number 的实现
oracle等数据库中可以方便的使用row_number函数,实现分组取组内特定数据的功能。但是MySQL中并没有引入类似的函数。为了实现这一功能,需要一些特别的处理。下面是row_number函数在MySQL中的实现,实现方法来源一篇英文资料,本文借用了其中的方法源地址 row_number函数 函数是对分组之后的数据进行组内编号,效果如下: 按年龄进行分组编号 由于...转载 2019-11-18 17:06:18 · 966 阅读 · 0 评论 -
sql用逗号连接多张表对应哪个join?
四种join的区别已老生常谈:INNER JOIN(也可简写为JOIN): 如果表中有至少一个匹配,则返回行LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行FULL JOIN: 只要其中一个表中存在匹配,就返回行那么问题来了,还有一种常见的写法是将表用逗号隔开,那这个又是怎么连接的呢。先...转载 2019-11-18 17:04:30 · 3237 阅读 · 0 评论 -
MySQL时间戳和时间的获取/相互转换/格式化
获取当前时间戳select unix_timestamp();1同select unix_timestamp(now());1获取当前时间select now();1时间转时间戳select unix_timestamp('2018-01-15 09:45:16');1时间戳转时间select from_unixtime(1515980716);1时间戳格式...转载 2018-09-04 17:36:09 · 4960 阅读 · 0 评论 -
MySQL 生成一个时间序列
今天遇到一个需求是生成以下表格的数据,一整天24小时,每秒一行数据。 寻找颇旧,找到另外两个实现的例子,暂且学习一翻。另一个见另外一篇。SELECT DATE_ADD('2018-01-01',INTERVAL @i := @i + 1 DAY) AS DATEFROM(SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNIO...转载 2018-09-04 17:24:08 · 2952 阅读 · 0 评论 -
各种数据库的分页查询语句
1.oracle数据库分页 select * from (select a.*,rownum rc from 表名 where rownum<=endrow) a where a.rc>=startrow 2.DB2数据库分页 Select * from (select rownumber() over() as rc,a.* from (select * from转载 2016-04-15 14:45:54 · 1614 阅读 · 0 评论 -
数据库事务隔离级别
本文系转载,原文地址:http://singo107.iteye.com/blog/1175084数据库事务的隔离级别有4个,由低到高依次为Read uncommitted、Read committed、Repeatable read、Serializable,这四个级别可以逐个解决脏读、不可重复读、幻读这几类问题。√: 可能出现 ×: 不会出现脏转载 2016-04-19 13:20:55 · 1323 阅读 · 0 评论 -
B树、B+树、B*树
B树具体讲解之前,有一点,再次强调下:B-树,即为B树。因为B树的原英文名称为B-tree,而国内很多人喜欢把B-tree译作B-树,其实,这是个非常不好的直译,很容易让人产生误解。如人们可能会以为B-树是一种树,而B树又是一种一种树。而事实上是,B-tree就是指的B树。特此说明。我们知道,B 树是为了磁盘或其它存储设备而设计的一种多叉(下面你会看到,相对于二叉,B树每个内结点有多个分支转载 2016-05-08 13:12:49 · 2404 阅读 · 0 评论 -
数据库设计三大范式
转载:http://www.cnblogs.com/linjiqin/archive/2012/04/01/2428695.html为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式。 在实际开发中最为常见的设计转载 2016-05-08 20:07:03 · 1635 阅读 · 0 评论 -
MySQL 查询优化: LIMIT 1 避免全表扫描提高查询效率
原文:http://www.jb51.net/article/35774.htm在某些情况下,如果明知道查询结果只有一个,SQL语句中使用LIMIT 1会提高查询效率。 例如下面的用户表(主键id,邮箱,密码):create table t_user(id int primary key auto_increment,email varchar(255),password v转载 2016-06-21 11:22:39 · 2328 阅读 · 0 评论 -
JAVA使用JDBC连接MySQL数据库
1. 在 pom.xml 文件中加入 mysql mysql-connector-java 6.0.22. 编写一个连接、关闭、查询数据库的类 package com.hu.demo; import java.sql.Connection; import java.sql.DriverManager;原创 2016-09-19 14:54:50 · 5423 阅读 · 0 评论 -
spring 配置 DataSource 三种方式
转自:http://www.cnblogs.com/batys/archive/2012/10/17/2727637.html1、使用org.springframework.jdbc.datasource.DriverManagerDataSource 说明:DriverManagerDataSource建立连接是只要有连接就新建一个connection,根本没有连接池的作用。原创 2017-01-12 11:26:26 · 2172 阅读 · 0 评论 -
Mysql 统计百分比
SELECT f_language, a.cnt, CONCAT(ROUND(a.cnt / b.cntSum * 100, 2),'','%')FROM ( SELECT f_language, count(*) AS cnt FROM t_video WHERE f_create_time >= '2017-05-06' GROUP BY原创 2017-05-08 15:24:16 · 22024 阅读 · 1 评论 -
hive 如何去掉重复数据,显示第一条
name adx tran_id cost tsck 5 125.168.10.0 33.00 1407234660ck 5 187.18.99.00 33.32 1407234661ck 5转载 2017-05-08 17:33:34 · 15509 阅读 · 0 评论 -
Hive 取非 Group by 字段数据的方法
遇到这么一个需求,输入数据为一个ID对应多个name,要求输出数据为ID是唯一的,name随便取一个就可以。执行以下Hive ql语句:123456SELECT sid, class_id FROM table2 GROUP BY sid ;会报错:转载 2017-05-08 14:21:58 · 2982 阅读 · 0 评论 -
MySQL 常用命令
1.导出整个数据库mysqldump -u 用户名 -p --default-character-set=latin1 数据库名 > 导出的文件名(数据库默认编码是latin1)mysqldump -u wcnc -p smgp_apps_wcnc >wcnc.sql2.导出一个表mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名mysqldump转载 2017-11-30 14:50:50 · 422 阅读 · 0 评论 -
我的 MongoDB 坎坷之路
摘要一直以来接触最多的都是关系型数据库,对于NoSQL确实是不甚了解。但是对于目前开发而言,NoSQL也算是一个比较火的方向,而在众多NoSQL数据库之中,MongoDB又是这么的“靓丽”,让人不禁心仪神往。然而没想到的是,在这个过程中,却又是那么的坎坷。于是作此文以记之。环境搭建前奏照常在官网上 https://www.mongodb.com/ ...转载 2018-02-13 15:34:48 · 283 阅读 · 0 评论 -
pymongo 使用教程
前言4个多月之前,写过一篇关于非关系型数据库mongodb的博文,介绍了怎么在Windows系统下来操作mongodb的细节。基础不太牢固的可以点击下面的链接http://blog.youkuaiyun.com/marksinoberg/article/details/53489989来加深一下印象。但是现在不一样了,因为我终于换系统了。之前得Windows7由于各种各样的问题,导致补丁包装...转载 2018-02-13 15:39:47 · 1223 阅读 · 0 评论 -
MongoDB+MongoVUE安装及入门
前言及概念环境安装MongoDB的安装MongoVUE安装建立连接基础操作创建表添加数据查询日期查询排序${Sort}查询字段${Fields}skip跳过Limit分页修改删除数据前言及概念据说nodejs和mongoDB是一对好基友,于是就忍不住去学习了解了一下MongoDB相关的一些东西, 那么,MongoDB是什么...转载 2018-03-27 14:43:56 · 264 阅读 · 0 评论 -
MongoDB GUI( Robo 3T) Shell使用及操作
MongoDB GUI( Robo 3T) Shell使用及操作Robo 3T 下载及使用之前叫 Robomongo,后面被收购了,改名 Robo 3T 。下载链接:https://robomongo.org/download (需要FQ)安装步骤省略,下一步下一步…图形界面,连接默认,取个名字就行。连接成功,可以愉快的使用了,不用总是敲命令了,简洁方便,...转载 2018-05-09 19:52:41 · 1306 阅读 · 0 评论 -
参数化 SQL 能防止注入的原理
转载:http://bbs.youkuaiyun.com/topics/390667952基本的注入方式注入的思想就是构造非法的sql语句。 string sql="select * from tb where username='" + username + "'"; 现在如果,我大概知道你的管理员表的表名是 admins, 我要往里面加一条记录,或者清空你的管理员表, 针对于上面一条语句, 我需要构造的转载 2016-03-25 15:47:03 · 2286 阅读 · 0 评论