基础信息 相关部分
查询数据库版本
select @@version;
显示正在执行的线程
show processlist;
显示最近的警告详情
show warnings;
查询定义的packet大小
select @@max_allowed_packet;
查看slave状态
show slave status
查看某表的创建脚本
show create table tableName;
显示所有数据库
show databases;
切换数据库
use databaseName;
显示所有表
show tables;
查看表结构
desc tableName;
查看表索引
show index from user;
导入数据库
source d:/backupfile.sql
导入导出
导出表结构
mysqldump -u用户名 -p密码 -d 数据库名 > 数据库名.sql
导出结构
mysqldump -uroot -proot -d zxb > d:/zxb.sql
导入结构
mysql -uroot -proot zxb < d:/zxb.sql
导出整个数据库结构和数据
mysqldump -h localhost -uroot -p123456 database > dump.sql
导出单个数据表结构和数据
mysqldump -h localhost -uroot -p123456 database table > dump.sql
导出整个数据库结构(不包含数据)
mysqldump -h localhost -uroot -p123456 -d database > dump.sql
导出单个数据表结构(不包含数据)
mysqldump -h localhost -uroot -p123456 -d database table > dump.sql
实例参数variables 相关部分
查询mysql实例端口
show variables like 'port';
查看实例的socket数据
show variables like 'socket';
查看实例的数据路径
show variables like 'datadir';
指定条件的参数设置查询,例如查询以log_slave开头的参数设置
show variables like 'log_slave%'
查看是否开启了慢查询日志;ON代表开启。可以在线打开。set global slow_query_log = 1;
show variables like 'slow_query_log';
查看慢查询日志的路径
show variables like 'slow_query_log_file';
查看慢查询定义的阈值,单位是秒。记录的查询是大于该值,不包括该值。
show variables like 'long_query_time';
查看日志的输出格式(file或table)
show variables like 'log_output';
查看日志的时间信息,UTC时间或者SYSTEM时间
show variables like 'log_timestamps';
查看从服务器是否开启慢查询日志,ON代表开启
show variables like 'log_slow_slave_statements';
查看是否将没有使用索引的SQL语句记录到慢查询日志中
show variables like 'log_queries_not_using_indexes';
集合上面的参数一起使用,限制每分钟内,在慢查询日志中,记录没有使用 索引的次数。避免日志快速增长
show variables like 'log_throttle_queries_not_using_indexes';
查看创建的临时表的存储引擎类型
show variables like "default%tmp%";
查询log文件大小
show variables like 'innodb_log_file_size';
查询页的大小。一旦数据库通过innodb_page_size设置完成,则后续无法更改。innodb_page_size 是针对普通表的,压缩表不受限制
show variables like 'innodb_page_size';
查看缓冲池的大小,每次读写数据都是通过buffer pool;当buffer pool中没有所需的数据时,才去硬盘中获取,该值设置的越大越好,buffer pool 也是以页(page)为单位的,且大小和innodb_page_size一致。
show variables like 'innodb_buffer_pool_size';
查看设置的缓冲池个数,设置多个instance可将热点打散,提高并发性能(建议设置成cpu 个数值)
show variables like 'innodb_buffer_pool_instances';
查看buffer pool的状态
show engine innodb status;
查看默认存储引擎的类型
SELECT @@default_storage_engine;
在线调整innodb_buffer_pool_size
set global innodb_buffer_pool_size=2*1024*1024*1024;
查看锁的信息,在数据库sys下执行
select * from innodb_lock_waits;
查看隔离级别
show variables like 'transaction_isolation';
设置隔离级别
set transaction_isolation='read-committed';
查看死锁打印设置,设置为ON,表示将死锁信息打印到err_log中
show variables like 'innodb_print_all_deadlocks';
查看 刷新间隔时间 master thread 每秒刷新redo的buffer到logfile
show variables like "%innodb_flush_log_at_timeout%";
查看binlog的类型,statement 记录SQL语句;ROW 记录SQL语句操作的那些行(行的变化);mixed 混合statement 和 Row 格式(不推荐)。
show variables like 'binlog_format';
查看gtid相关数据及配置
show variables like "%gtid%";
查看 binlog_cache大小
show variables like "binlog_cache_size";
记录了使用临时文件写二进制日志的次数
show global status like 'binlog_cache_disk_use';
从数据库用来还原的并发线程数
show variables like '%slave_parallel_workers%';
mysql查询今天、昨天、本周、本月、上一月 、今年数据
昨天
SELECT * FROM 表名 WHERE TO_DAYS(NOW()) - TO_DAYS( 时间字段名) <= 1
今天
select * from 表名 where to_days(时间字段名) = to_days(now());
上周
SELECT * FROM 表名 WHERE YEARWEEK(date_format(时间字段名,'%Y-%m-%d')) = YEARWEEK(now())-1;
本周
SELECT * FROM 表名 WHERE YEARWEEK(date_format(时间字段名,'%Y-%m-%d')) = YEARWEEK(now()) ;
上月
SELECT * FROM 表名 WHERE PERIOD_DIFF(date_format(now(),'%Y%m'),date_format(时间字段名,'%Y%m') =1
本月
SELECT * FROM 表名 WHERE DATE_FORMAT(时间字段名,'%Y%m') = DATE_FORMAT(CURDATE(),'%Y%m');
上季度
select * from `表名` where QUARTER(create_time)=QUARTER(DATE_SUB(now(),interval 1 QUARTER));
本季度
select * from `表名` where QUARTER(create_time)=QUARTER(now());
上年
select * from `ht_invoice_information` where year(create_date)=year(date_sub(now(),interval 1 year));
本年
SELECT * FROM 表名 WHERE YEAR(create_time) = YEAR(NOW());
select * from `表名` where YEAR(create_date)=YEAR(NOW());
距当前现在6个月的数据
select * from 表名 where create_time between date_sub(now(),interval 6 month) and now();
当前1小时内的数据
select * from 表名 where create_time >= date_sub(now(), interval 1 hour);
当前30分钟内的数据
select * from 表名 where create_time >= date_add(now(),interval -30 minute);
后30分钟
select date_add(now(),interval 30 minute)
mysql时间函数
now(), current_timestamp(); -- 当前日期时间
current_date(); -- 当前日期
current_time(); -- 当前时间
date('yyyy-mm-dd hh:ii:ss'); -- 获取日期部分
time('yyyy-mm-dd hh:ii:ss'); -- 获取时间部分
date_format('yyyy-mm-dd hh:ii:ss', '%d %y %a %d %m %b %j'); -- 格式化时间
unix_timestamp(); -- 获得unix时间戳
from_unixtime(); -- 从时间戳获得时间
根据format字符串格式化
%S, %s 两位数字形式的秒( 00,01, ..., 59)
%I, %i 两位数字形式的分( 00,01, ..., 59)
%H 两位数字形式的小时,24 小时(00,01, ..., 23)
%h 两位数字形式的小时,12 小时(01,02, ..., 12)
%k 数字形式的小时,24 小时(0,1, ..., 23)
%l 数字形式的小时,12 小时(1, 2, ..., 12)
%T 24 小时的时间形式(hh:mm:ss)
%e 数字形式表示月中的天数(1, 2, ..., 31)
%D 英文后缀表示月中的天数(1st, 2nd, 3rd,...)
%r 12 小时的时间形式(hh:mm:ss AM 或hh:mm:ss PM)
%p AM或PM
%W 一周中每一天的名称(Sunday, Monday, ..., Saturday)
%a 一周中每一天名称的缩写(Sun, Mon, ..., Sat)
%d 两位数字表示月中的天数(00, 01,..., 31)
%w 以数字形式表示周中的天数( 0 = Sunday, 1=Monday, ..., 6=Saturday)
%j 以三位数字表示年中的天数( 001, 002, ..., 366)
%m 两位数字表示的月份(01, 02, ..., 12)
%c 数字表示的月份(1, 2, ...., 12)
%U 周(0, 1, 52),其中Sunday 为周中的第一天
%u 周(0, 1, 52),其中Monday 为周中的第一天
%M 月名(January, February, ..., December)
%b 缩写的月名( January, February,...., December)
%Y 四位数字表示的年份
%y 两位数字表示的年份
%% 直接值“%”




