2019 十一月 15 , 星期五
Home / 数据存储 / mysql

mysql

mysql 关联查询 索引失效

接手一个新项目数据导出需求 大致sql如下 select b.* from wms_sku_uuids a inner JOIN wms_entity_operate_log b on a.uuid=b.entity_code where a.uuid=”00617531″ and a.`status`=9 附表大约650w条记录 explain 发现附表每次都是全量查找 怀疑是不是sql语句的问题 于是换成where in 子查询的方式附表还是全量 show creat ...

Read More »

mysql 批量建表 存储过程

delimiter // CREATE procedure create_table() BEGIN DECLARE `@i` int(11); DECLARE `@sqlstr` varchar(65000); SET `@i`=0; WHILE `@i` < 256 DO SET @sqlstr = CONCAT( “CREATE TABLE box_item_pool_”, `@i`, “( `id` int(10) unsigned NOT NULL ...

Read More »

mysql Incorrect datetime value

从本地 迁移数据库到测试服 发现sql报错 MySQL []> INSERT INTO `table` VALUES (1, 1, 1, 1, 0, 0, 0, 0, 0, ’0000-00-00 00:00:00′, ’0000-00-00 00:00:00′, ’0000-00-00 00:00:00′, ’0000-00-00 00:00:00′, ’2017-08-31 11:41 ...

Read More »

ubuntu 16.10 重置mysql5.7密码

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf [mysqld]下加入”skip-grant-tables” sudo /etc/init.d/mysql restart mysql -u root update mysql.user set authentication_string=password(’123456′) where user=’root’;(mysql5.7取消了p ...

Read More »

修改mysql 默认编码

进入终端 输入 show variables like ‘%character%’ 可以看到 mysql数据库的默认编码并不是utf-8。 vim /etc/mysql/my.cnf character_set_server=utf8 init_connect='SET NAMES utf8' sudo /etc/init.d/mysql restart create database test default charset=utf8;

Read More »

MySQL concat函数的使用

MySQL concat函数是MySQL数据库中众多的函数之一,下文将对MySQL concat函数的语法和使用进行说明,供您参考和学习。 MySQL concat函数使用方法: CONCAT(str1,str2,…) 返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。 注意: 如果所有参数均为非二进制字符串,则结果为非二进制字符串。 如果自变量中含有任一二进制字符串,则结果为一个二进制字符串。 一个数字参数被转化为与之相等的二进制字符串格式;若要避免这种情况, ...

Read More »

MYSQL IFNULL函数的使用

下文对MYSQL IFNULL函数的使用进行了详细的叙述,供您参考学习,如果您在MYSQL IFNULL函数使用方面遇到过类似的问题,不妨一看。 MYSQL IFNULL(expr1,expr2) 如果expr1不是NULL,IFNULL()返回expr1,否则它返回expr2。IFNULL()返回一个数字或字符串值,取决于它被使用的上下文环境。 mysql> select IFNULL(1,0); -> 1 mysql> select IFNULL(0,10); -> ...

Read More »

mysqlbinlog恢复数据

1.前言 日志是把数据库的每一个变化都记载到一个专用的文件里,这种文件就叫做日志文件。Mysql默认只打开出错日志,因为过多的日志将会影响系统的处理性能。 在5.0前支持文本格式和二进制格式,5.0后只支持二进制格式,因为二进制日志在性能、信息处理方面有更多的优点。 2.基础知识 2.1、二进制日志的启用 二进制日志由配置文件的log-bin选项负责启用,Mysql服务器将在数据根目录创建两个新文件XXX-bin.001和XXX-bin.index,若配置选项没有给出文件名,Mysql将使用主机 ...

Read More »

MySQL中select * for update锁表的问题

MySQL中select * for update锁表的问题由于InnoDB预设是Row-Level Lock,所以只有「明确」的指定主键,MySQL才会执行Row lock (只锁住被选取的资料例) ,否则MySQL将会执行Table Lock (将整个资料表单给锁住)。 举个例子: 假设有个表单products ,里面有id跟name二个栏位,id是主键。 例1: (明确指定主键,并且有此笔资料,row lock) SELECT * FROM products WHERE id=’ ...

Read More »

mysql 行转列

在某些数据库中有交叉表,但在MySQL中却没有这个功能,但网上看到有不少朋友想找出一个解决方法,特发贴集思广义。 http://topic.csdn.net/u/20090530/23/0b782674-4b0b-4cf5-bc1a-e8914aaee5ab.html?96198 现整理解法如下: 数据样本: create table tx( id int primary key, c1 char(2), c2 char(2), c3 int ); insert into tx values ( ...

Read More »

MySQL exists的用法介绍

有一个查询如下: SELECT c.CustomerId, CompanyName FROM Customers c WHERE EXISTS( SELECT OrderID FROM Orders o WHERE o.CustomerID = cu.CustomerID) 这里面的EXISTS是如何运作呢?子查询返回的是OrderId字段,可是外面的查询要找的是CustomerID和CompanyName字段,这两个字段肯定不在OrderID里面啊,这是如何匹配的呢? EXISTS用于检查子查 ...

Read More »