![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MYSQL
文章平均质量分 60
@航空母舰
这个作者很懒,什么都没留下…
展开
-
mysql根据查询结果连续序号
业务数据一般都不是连续的ID,导出Excel的时候要求连续序号。原创 2024-01-04 16:02:54 · 499 阅读 · 0 评论 -
大数据修改 表结构 数据库名称
比如数据库名称old_db想改名为new_db,通过修改表名称,间接实现修改数据库名称使用此方法实际上将所有表从一个数据库移动到另一个数据库,这实际上重命名了该数据库(MySQL没有单个语句的操作),移动后原始数据库继续存在,但是里面没有表。create database new_db;rename table old_db.tb to new_db.tb;drop database old_db;如何使用shell脚本来批量修改表名:当库下表比较多的时候,用上面方法纯手动也不现实,好原创 2022-03-11 09:16:17 · 662 阅读 · 0 评论 -
Navicat Premium数据库管理工具
专业的数据库管理工具,我们首选Navicat Premium,Navicat Premium是一个数据库开发工具,你可以同时连接到MySQL,MariaDB,SQL Server,Oracle,PostgreSQL和SQLite数据库,意思就是可以同时管理多个不容类型的数据库了,并且Navicat Premium与Amazon RDS,Amazon Aurora,Amazon Redshift,S...原创 2019-04-13 01:44:27 · 401 阅读 · 0 评论 -
MySql 大批量导入数据时关闭索引
1.建表create table goods(id int primary key,name varchar(20),key(name));2.插入数据delimiter $$create procedure p1(in num int)begin declare name varchar(20) default ''; declare i int default 0; while i<= num do set name = concat('Ap原创 2021-10-28 16:04:40 · 1755 阅读 · 0 评论 -
mysql覆盖索引与回表
什么是索引覆盖MySQL官网,类似的说法出现在explain查询计划优化章节,即explain的输出结果Extra字段为Using index时,能够触发索引覆盖。如何实现索引覆盖?常见的方法是:将被查询的字段,建立到联合索引里去。能够命中name索引,索引叶子节点存储了主键id,通过name的索引树即可获取id和name,无需回表,符合索引覆盖,效率较高。第二个SQL语句:能够命中name索引,索引叶子节点存储了主键id,但sex字段必须回表查询才能获取到,不符合索引覆盖.原创 2021-10-15 17:21:35 · 133 阅读 · 0 评论 -
MYSQL MERGE存储引擎 分表
M的,INNODB如何做分表并且保留事务和外键,我还不是很了解。 首先,我们需要想好到底分多少个表,前提当然是满足应用。这里我使用了一个比较简单的分表方法,就是根据自增id的尾数来分,也就是说分0-9一共10个 表,其取值也很好做,就是对10进行取模。另外,还可以根据某一字段的md5值取其中几位进行分表,这样的话,可以分的表就很多了。好了,先来创建表吧,代码如下http://hudeyong926.iteye.com/blog/1845997set @field_list ='`id` BIGI原创 2011-02-10 12:26:46 · 154 阅读 · 0 评论 -
MYSQL Archive存储引擎
archive储存引擎的应用场景就是它的名字的缩影,主要用于归档。archive储存引擎仅支持select和insert,最出众的是插入快,查询快,占用空间小。例如我们有大量的历史数据极少访问又不能删除,需要保存,那么它是非常不错的选择。archive最出名的就是压缩,它的引擎使用zlib无损数据压缩算法,压缩率非常好,这里测试下效果。根据英文的测试结论来看,Archive表比MyISAM表要小大约75%,比支持事务处理的InnoDB表小大约83%。当数据量非常大的时候Archive的插入性能表现会较M原创 2021-09-30 15:56:36 · 1995 阅读 · 0 评论 -
从mysql中日志表查截至时间最后一条记录
查询订单日志表截至2021年8月最后生效的一条日志记录select order_no,max(id) max_id fromorders_logwhere time<'2021-08-01' group by order_no;拉取所有记录SELECT * from orders_logwhere id in( select max(id) max_id fromorders_logwhere time<'2021-08-01' group by order_no)...原创 2021-08-26 12:02:29 · 655 阅读 · 0 评论 -
MySQL SUM()函数按条件求和
按条件求和SUM(IF(fee_type=1,fee_for_balance,0))数据示例统计每月账单的金额和支付金额select order_no,month, SUM(IF(fee_type=1,fee_for_balance,0)) bill_money,SUM(IF(fee_type=2,fee_for_balance,0)) receivable_money from bms_bills GROUP BY month...原创 2020-08-12 10:59:06 · 5716 阅读 · 0 评论 -
mysql kill process解决死锁
show processlist和show full processlistprocesslist命令的输出结果显示了有哪些线程在运行,不仅可以查看当前所有的连接数,还可以查看当前的连接状态帮助识别出有问题的查询语句等。如果是root帐号,能看到所有用户的当前连接。如果是其他普通帐号,则只能看到自己占用的连接。showprocesslist只能列出当前100条。如果想全部列出,可以使用SH...原创 2020-04-03 10:56:00 · 9801 阅读 · 1 评论 -
MySql中几种批量更新/新增/删除的方法
通常情况下,我们会使用以下SQL语句来更新字段值:UPDATE mytable SET myfield='value' WHERE other_field='other_value';但是,如果你想更新多行数据,并且每行记录的各字段值都是各不一样,你会怎么办呢?刚开始你可能会想到使用循环执行多条UPDATE语句的方式,就像以下的python程序示例:for x in xrange(...原创 2020-03-12 23:54:11 · 31941 阅读 · 1 评论 -
MYSQL 联表(查询/更新/删除)
li) { if (in_array($k, $this->_repeating_field)) { $where[$alias . '.' . $k] = $li; } elseif ($k) { $where[$k] = $li; }}联表更新UPDATE items,month SET items.price='12' WHERE items.id=month.id;UPDATE a LEFT JOIN b原创 2012-07-11 13:44:49 · 192 阅读 · 0 评论 -
mysql表删除重复记录方法
创建表CREATE TABLE `test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` char(20) DEFAULT NULL COMMENT '姓名', `age` tinyint(4) DEFAULT NULL COMMENT '年龄', `mate` tinyint(4) DEFAULT '1' COMMENT '...原创 2017-01-20 14:18:37 · 130 阅读 · 1 评论 -
MySQL5.7 JSON类型使用介绍
网络带宽的传输。 JSON的格式非常简单:名称/键值。之前MySQL版本里面要实现这样的存储,要么用VARCHAR要么用TEXT大文本。 MySQL5.7发布后,专门设计了JSON数据类型以及关于这种类型的检索以及其他函数解析。 我们先看看MySQL老版本的JSON存取。CREATE TABLE `json_test` ( `id` int(11) DEFAULT NULL, `person_desc` text) ENGINE=InnoDB DEFAULT CHARSET=utf原创 2017-01-13 13:19:03 · 442 阅读 · 0 评论 -
MySQL5.7 虚拟列实现表达式索引
原创 2017-01-13 13:09:01 · 93 阅读 · 0 评论 -
谈mysql中utf8和utf8mb4区别
做其他转换。当然,为了节省空间,一般情况下使用utf8也就够了。 二、内容描述 那上面说了既然utf8能够存下大部分中文汉字,那为什么还要使用utf8mb4呢? 原来mysql支持的 utf8 编码最大字符长度为 3 字节,如果遇到 4 字节的宽字符就会插入异常了。三个字节的 UTF-8 最大能编码的 Unicode 字符是 0xffff,也就是 Unicode 中的基本多文种平面(BMP)。也就是说,任何不在基本多文本平面的 Unicode字符,都无法使用 Mysql 的 utf8 字符集原创 2016-11-28 14:59:50 · 555 阅读 · 0 评论 -
【精】MYSQL联合主键应用
D和商品ID组成的联合主键,意义就大的多了。CREATE TABLE `order_comment` ( `user_id` int(11) NOT NULL DEFAULT '0', `order_id` int(11) NOT NULL DEFAULT '0', `name` varchar(30) NOT NULL, `address` varchar(60) NOT NULL, PRIMARY KEY (`user_id`,`order_id`)) ENGINE原创 2016-06-28 14:57:29 · 161 阅读 · 0 评论 -
mysql中的zerofill的应用
ol2` varchar(20) NOT NUL, PRIMARY KEY (`id`),) ENGINE=InnoDB; 1.这种用法,可以大量用于所谓“流水号”的生成上。比如,想要生成日期_0x的流水号。可以直接拼接select concat(concat(date(now()), '_'), id) from t1 2.比较常用的应该是月份或日期前补0,还是整形数字不是字符串CREATE TABLE `t1` ( `year` year(4) DEFAULT NUL原创 2014-06-24 09:10:54 · 103 阅读 · 0 评论 -
MySQL查询不区分大小写问题
原创 2013-09-17 15:27:15 · 107 阅读 · 0 评论 -
MySQL/Mongo大数据量分页查询优化
分页的2种写法SELECT keyword FROM keyword_rank WHERE advertiserid='59' order by keyword LIMIT 2 OFFSET 1;比如这个SQL ,limit后面跟的是2条数据,offset后面是从第1条开始读取SELECT keyword FROM keyword_rank WHERE advertiserid=...原创 2013-07-16 13:39:40 · 1035 阅读 · 0 评论 -
MySQL定时器Events
以下功能主要供学习。高并发场景不要使用mysql特性(触发器,存储过程,外键,自定义函数等)使用会降低系统的并发性,数据库升级困难,迁移困难诸多问题。MySQL从5.1开始支持event功能,有了这个功能之后我们就可以让MySQL自动的执行数据汇总等功能,不用像以前需要操作的支持了。如linux crontab功能一、背景我们MySQL的表A的数据量已经达到1.6亿,由于一些历史原因,需要把表A的数据转移到一个新表B,但是因为这是线上产品,所以宕机时间需要尽量的短,在不影响数据持续入库的情况下.原创 2013-01-30 10:54:13 · 266 阅读 · 0 评论 -
存储过程 循环创建多张表 和 多个数据库
创建所有数据库 调用:call create_databases('znke_z_log_', 0, 128);参数说明:1、要创建的数据库前缀2、目标数据库后缀最小数3、目标数据库后缀最大数(数据库总数量)CREATE PROCEDURE `create_databases`(IN db_pre VARCHAR(20),IN min_num INT,IN max_num INT)BEGIN DECLARE i INT; DECLARE db_name VARCHAR..原创 2017-05-25 11:00:19 · 718 阅读 · 0 评论 -
php mysql查询表的各字段名以及备注
UMN_DEFAULT, COLUMN_COMMENT from information_schema.columns where table_schema = 'db' and table_name='table';方法二/** * 取得数据表的字段信息 * @access public * @return array */public function getFields($tableName) { $result = $this->query('S原创 2017-06-21 11:25:02 · 757 阅读 · 0 评论 -
EXPLAIN sql优化方法(1) 添加索引
explain/desc显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。-- 实际SQL,查找用户名为Jefabc的员工select * from emp where name = 'Jefabc';-- 查看SQL是否使用索引,前面加上explain即可explain select * from emp where nam...原创 2010-10-14 11:46:36 · 684 阅读 · 0 评论 -
mysql group by和order by一起使用order by失效
这种需求,我想很多人都遇到过。下面是我模拟我的内容表我现在需要取出每个分类中最新的内容select * from test group by category_id order by `date`结果如下明显。这不是我想要的数据,原因是msyql已经的执行顺序是引用写的顺序:select ... from... where.... group by... having... ord...转载 2019-09-03 15:45:15 · 2464 阅读 · 0 评论 -
Mysql参数优化
原创 2018-11-28 08:45:47 · 115 阅读 · 0 评论 -
MYSQL 字符串类型
MySQL中varbinary、binary、char、varchar异同binary 与 varbinary 类型和char与varchar类型是相似的,只是他们存储的是二进制数据,也就是说他们是包含字节流而不是字符流,他们有二进制字符的集合和顺序,他们的对比,排序是基于字节的数值进行的。binary与varbinary的最大长度和char与varchar是一样的,只不过他们是定义字节长度,而char和varchar对应的是字符长度。存储和取出时对尾部空格的处理 char(N)用来存储非二.原创 2018-06-11 15:22:34 · 365 阅读 · 0 评论 -
mysql中操作符<=>的意思
<=>null -- 结果为1。用法:当两个操作数中可能含有NULL时,你需要一个一致的语句。... WHERE col_a <=> ? ...这里的占位符有可能是常量也有可能是NULL,当使用<=>运算符时,你没有必要对查询语句做任何修改。select * from test where id<=>1 相当于select * from test where id=1s原创 2018-06-04 14:47:47 · 438 阅读 · 0 评论 -
9种分布式ID生成方式
建以下数据表: int 主键自增表, guid主键表CREATE TABLE `tbl_test_int` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) DEFAULT NULL, `comment` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`)) ENGI...原创 2018-05-31 17:38:40 · 281 阅读 · 0 评论 -
MYSQL 排序规则
ORDER BY可以按一个或多个(最多16个)字段排序查询结果,可以是升序(ASC)也可以是降序(DESC),如果缺省,则是升序。ORDER BY中如果定义了多个字段,则按照字段的先后顺序排序,在最左边的优先级最高。f1用升序, f2降序,SQL该这样写ORDER BY f1, f2 DESC; #ORDER BY f1 ASC, f2 DESC对于特殊的排序,可...原创 2018-03-23 16:45:33 · 2130 阅读 · 0 评论 -
MySQL CSV存储引擎
l的ODBC驱动。Win7系统分为32位和64位,相对应的mysql的ODBC驱动也可以找到相应的32位和64位的。下载地址:http://dev.mysql.com/downloads/connector/odbc/ mysql-connector-odbc-5.3.8-winx64.msi在正常安装过mysql的ODBC驱动后,还要对ODBC进行配置。正常情况下配置odbc的方法为:打开控制面板找到管理工具,如果在控制面板下看不到管理工具,可以选择窗口右上角的查看方式,点击倒三角下拉菜原创 2017-07-12 13:43:28 · 168 阅读 · 0 评论 -
MYSQL 数据库模式
在MySQL数据库,SQL模式可以用来解决不同严格程度的数据校验,在不同数据库进行数据迁移时,可以达到迁移的目的。在生产环境必须将这个值设置为严格模式(严格模式是指将sql_mode变量设置为STRICT_TRANS_TABLES或STRICT_ALL_TABLES中的至少一种),所以开发、测试环境的数据库也必须要设置,这样在开发测试阶段就可以发现问题.ONLY_FULL_GROUP_BY:...原创 2017-06-27 23:15:36 · 491 阅读 · 0 评论 -
MYSQL FEDERATED存储引擎
。 但通过FEDERATED引擎创建的表只是在本地有表定义文件,数据文件则存在于远程数据库中(这一点很重要),默认情况下面,mysql是不启用该存储 引擎的,如下mysql> show engines;从上面可以看到FEDERATED的Support是NO,说明没有启用,如果没有的话说明没有编译进去,需要重新安装,要像启用的话使Support为YES,可以在/etc/my.cnf加federated(在mysqld加),然后重启就可以启用配置很简单注意:本地创建的表必须在远程服原创 2012-04-23 19:25:08 · 208 阅读 · 0 评论 -
MYSQL InnoDB表锁
原创 2012-04-19 19:55:07 · 155 阅读 · 0 评论 -
MYSQL MyISAM表锁
原创 2012-04-18 23:12:22 · 86 阅读 · 0 评论 -
MYSQL触发器
以下功能主要供学习。高并发场景不要使用mysql特性(触发器,存储过程,外键,自定义函数等)使用会降低系统的并发性,数据库升级困难,迁移困难诸多问题。触发器(trigger)是个特殊的存储过程, 触发器无需人工调用,程序满足一定条件时自动执行.存储过程需要手工调用,指定参数等;触发器在数据库系统开发过程中具有非常重要的作用,例如可以防止有害数据录入数据库,可以改变或取消insert、update和delete语句的执行及在一个会话中监听数据库中的数据的改变。有的时候,可以用触发器来维护数据的完整.原创 2011-01-05 13:50:46 · 75 阅读 · 0 评论 -
MySQL 中的 information_schema 和 mysql.user
库,并不物理存在。Mysql的INFORMATION_SCHEMA数据库包含了一些表和视图,提供了访问数据库元数据的方式,这台MySQL服务器上,到底有哪些数据库、各个数据库有哪些表,每张表的字段类型是什么,各个数据库要什么权限才能访问,等等信息都保存在information_schema表里面. 让我们来看看几个使用这个数据库的例子http://hudeyong926.iteye.com/blog/2380734查询数据库dj214中表数据超过 1000 行的表 select co...原创 2011-01-05 12:09:55 · 955 阅读 · 1 评论 -
mysql中的 IN FIND_IN_SET LIKE 正则
假如字符串str 在由N 子链组成的字符串列表strlist 中,则返回值的范围在 1 到 N 之间。一个字符串列表就是一个由一些被‘,’符号分开的自链组成的字符串 。如果第一个参数是一个常数字符串,而第二个是type SET列,则 FIND_IN_SET() 函数被优化,使用比特计算。如果str不在strlist 或strlist 为空字符串,则返回值为 0 。如任意一个参数为NULL,则返......原创 2011-01-05 10:05:11 · 493 阅读 · 1 评论 -
3>存储过程维护项目数据
DROP PROCEDURE IF EXISTS repalceSizeService;CREATE PROCEDURE repalceSizeService()BEGINdeclare _size_level int(10); declare _price int(10); declare _code_business VARCHAR(30); declare done int;...原创 2010-11-18 10:39:46 · 111 阅读 · 0 评论 -
2>存储过程的事务
原创 2010-11-16 23:09:23 · 65 阅读 · 0 评论