MySQL常用SQL整理

一、DDL

#创建数据库
CREATE DATABASE IF NOT EXISTS product DEFAULT CHARSET utf8 COLLATE utf8_general_ci; SET FOREIGN_KEY_CHECKS=0;
#创建表
DROP TABLE IF EXISTS `t_app`;
CREATE TABLE `t_app` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`create_date` datetime NOT NULL,
`is_delete` bit(1) DEFAULT b'0',
`re_order` int(11) DEFAULT '0',
`update_date` varchar(255) DEFAULT NULL,
`type_code` varchar(32) NOT NULL COMMENT '类型编码',
`type_name` varchar(32) NOT NULL COMMENT '类型名称',
`memo` TEXT COMMENT '备注信息',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; #取得空字符串
UPDATE t_app SET type_code=REPLACE(type_code,' ',''); #增加一个字段
ALTER TABLE t_app ADD COLUMN create_id INT(11) DEFAULT 0; ALTER TABLE t_app ADD COLUMN create_id INT(11) DEFAULT 0 AFTER id;
ALTER TABLE t_app ADD COLUMN create_id INT(11) DEFAULT 0 FIRST id; #修改表字段长度
ALTER TABLE t_app MODIFY COLUMN type_code VARCHAR(255); #PRIMARY KEY(主键索引)
mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) #UNIQUE(唯一索引)
mysql>ALTER TABLE `table_name` ADD UNIQUE (
`column`
)
#INDEX(普通索引)
mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column` ) #FULLTEXT(全文索引)
mysql>ALTER TABLE `table_name` ADD FULLTEXT (
`column`
) #多列索引
mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` ) #删除索引
ALTER TABLE table_name DROP INDEX index_name;

二、DML


INSERT INTO t_app(create_date,is_delete,re_order,update_date,type_code,type_name) VALUES(NOW(),0,0,now(),"10000",'TestAPP'); UPDATE t_app SET is_delete=b'1' WHERE id=1; DELETE FROM t_app WHERE id=1; #按周分组汇总
SELECT
WEEK(t.create_date,3) AS w,
WEEKOFYEAR(t.create_date) AS w1,
YEARWEEK(t.create_date,3) AS w2,
CONCAT('今天星期',(WEEKDAY(CURDATE())+1)) AS wd,
CONCAT(DATE_ADD('1900-01-01',INTERVAL FLOOR(DATEDIFF(t.create_date,'1900-01-01')/7)*7 DAY),'~',
DATE_ADD('1900-01-01',INTERVAL FLOOR(DATEDIFF(t.create_date,'1900-01-01')/7)*7+6 DAY)) AS `按周分组汇总`,
COUNT(DISTINCT imsi) AS amount
FROM t_pay_log t
WHERE t.create_date BETWEEN '2016-05-01' AND NOW()
GROUP BY FLOOR(DATEDIFF(t.create_date,'1900-01-01')/7); #行转列
SELECT DATE_FORMAT(t.create_date,'%Y-%m-%d') AS d,
SUM(IF(result_code='1030000',1,0)) AS `b.支付成功`,
SUM(IF(result_code IN ('1000000','1010002','1000007','1020004','9018'),1,0)) AS `c.代理IP问题`,
SUM(IF(result_code='22',1,0)) AS `e.鉴权失败`,
SUM(IF(result_code='2085',1,0)) AS `i.IP异常`,
SUM(IF(result_code IN ('13','14','9019'),1,0)) AS `k.网络连接失败`,
COUNT(0) AS `总计`
FROM test.c_pay_log t
WHERE 1=1
AND t.create_date BETWEEN '2016-01-01 00:00:00' AND '2016-01-31 23:59:59'
GROUP BY d; SELECT DATE_FORMAT(t.create_date,'%Y-%m-%d') AS d,
t.result_code,
t.result_msg,
CASE
t.result_code
WHEN '1030000' THEN 'b.支付成功'
WHEN '1000000' THEN 'c.代理IP问题'
WHEN '1010002' THEN 'c.代理IP问题'
WHEN '1000007' THEN 'c.代理IP问题'
WHEN '1020004' THEN 'c.代理IP问题'
WHEN '9018' THEN 'c.代理IP问题'
WHEN '22' THEN 'e.鉴权失败'
WHEN '2085' THEN 'i.IP异常'
WHEN '13' THEN 'k.网络连接失败'
WHEN '14' THEN 'k.网络连接失败'
ELSE 'z.其他问题'
END AS category,
COUNT(0) AS amount
FROM test.c_pay_log t
WHERE 1=1
AND t.create_date BETWEEN '2016-01-01 00:00:00' AND '2016-01-31 23:59:59'
GROUP BY d,t.result_code,t.result_msg
ORDER BY d ASC,category ASC; SELECT x.d,CONCAT('',x.sp_code) AS sp_code,CONCAT(x.sp_code,'(',x.sp_name,')') AS sp,x.appCode,CONCAT(x.dev_code,'(',x.dev_name,')') AS cp,
SUM(req) AS req, #请求数
SUM(req_su) AS req_su,#请求成功数
IFNULL(ROUND((SUM(req_su)/SUM(req))*100,2),0) AS req_su_rate, #请求成功率=请求成功数/请求数
SUM(pay) AS pay,#支付数
SUM(pay_su) AS pay_su,#支付成功数
SUM(pay_su_amount) AS pay_su_amount,#支付成功金额
IFNULL(ROUND((SUM(pay_su)/SUM(pay))*100,2),0) AS pay_su_rate,#支付成功率
IFNULL(ROUND((SUM(pay)/SUM(req_su))*100,2),0) AS sure_rate,#确认率=支付数/请求成功数
IFNULL(ROUND((SUM(pay_su)/SUM(req))*100,2),0) AS req_conv_rate #总体转化率=支付成功数/请求数
FROM
(
SELECT DATE_FORMAT(t.create_date,'%Y-%m-%d') AS d,sp.sp_code,sp.dev_name AS sp_name,dev.dev_code,dev.dev_name, t.appCode,
COUNT(0) AS req,0 AS req_su,0 AS pay,0 AS pay_su,0 AS pay_su_amount
FROM t_pay_log_re t,t_sp_channel spchannel,t_sp sp,t_developer dev
WHERE 1=1
AND t.mscCode=spchannel.ringtones_id AND spchannel.sp_id=sp.id AND t.developer_id=dev.id
AND t.create_date BETWEEN CONCAT(CURDATE(),' 00:00:00') AND NOW()
AND sp.sp_code='0101'
GROUP BY d,t.appCode UNION ALL SELECT DATE_FORMAT(t.create_date,'%Y-%m-%d') AS d,sp.sp_code,sp.dev_name AS sp_name,dev.dev_code,dev.dev_name,t.appCode,
0 AS req,COUNT(0) AS req_su,0 AS pay,0 AS pay_su,0 AS pay_su_amount
FROM t_pay_log_re t,t_sp_channel spchannel,t_sp sp,t_developer dev
WHERE 1=1
AND t.mscCode=spchannel.ringtones_id AND spchannel.sp_id=sp.id AND t.developer_id=dev.id
AND t.create_date BETWEEN CONCAT(CURDATE(),' 00:00:00') AND NOW()
AND sp.sp_code='0101'
AND t.result='success'
GROUP BY d,t.appCode UNION ALL SELECT DATE_FORMAT(t.create_date,'%Y-%m-%d') AS d,sp.sp_code,sp.dev_name AS sp_name,dev.dev_code,dev.dev_name,t.appCode,
0 AS req,0 AS req_su,COUNT(0) AS pay,0 AS pay_su,0 AS pay_su_amount
FROM t_pay_log t,t_sp_channel spchannel,t_sp sp,t_developer dev
WHERE 1=1
AND t.mscCode=spchannel.ringtones_id AND spchannel.sp_id=sp.id AND t.developer_id=dev.id
AND t.create_date BETWEEN CONCAT(CURDATE(),' 00:00:00') AND NOW()
AND sp.sp_code='0101'
GROUP BY d,t.appCode UNION ALL SELECT DATE_FORMAT(t.create_date,'%Y-%m-%d') AS d,sp.sp_code,sp.dev_name AS sp_name,dev.dev_code,dev.dev_name,t.appCode,
0 AS req,0 AS req_su,0 AS pay,COUNT(0) AS pay_su,SUM(t.cost) AS pay_su_amount
FROM t_pay_log t,t_sp_channel spchannel,t_sp sp,t_developer dev
WHERE 1=1
AND t.mscCode=spchannel.ringtones_id AND spchannel.sp_id=sp.id AND t.developer_id=dev.id
AND t.create_date BETWEEN CONCAT(CURDATE(),' 00:00:00') AND NOW()
AND sp.sp_code='0101'
AND t.result='success'
GROUP BY d,t.appCode
) x GROUP BY x.d,x.appCode
ORDER BY x.req DESC LIMIT 10 SELECT DISTINCT paylog.id AS book_id
FROM t_pay_log paylog
WHERE paylog.create_date BETWEEN DATE_SUB(NOW(),INTERVAL 1 HOUR) AND DATE_SUB(NOW(),INTERVAL 1 MINUTE); 查询表
SELECT TABLE_NAME FROM information_schema.TABLES t WHERE t.TABLE_SCHEMA='sdk';
或 show tables; desc t_app;

三、DCL

#导出表结构
mysqldump -h192.168.1.101 -uroot -p123456 -d test20160101 > test表结构_20160101.sql
mysqldump -h192.168.1.106 -uroot -p123456 testdb t_log --where=" appCode='200012' and create_date between '2001-07-01 00:00:00' and '2001-07-02 00:00:00'" > /data/t_log_0701.sql
更多mysqldump参考:
http://www.cnblogs.com/qq78292959/p/3637135.html http://www.javaranger.com/archives/1598 授权/改密
UPDATE user SET Password=PASSWORD('123456') where USER='root'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '123456' WITH GRANT OPTION;
FLUSH PRIVILEGES; GRANT ALL PRIVILEGES ON *.* TO 'root'@'112.87.45.22' IDENTIFIED BY '123456' WITH GRANT OPTION;
DELETE FROM mysql.user WHERE Host='112.87.45.22';
FLUSH PRIVILEGES; GRANT SELECT ON *.* TO 'readonly'@'192.168.1.%' IDENTIFIED BY '123456' WITH GRANT OPTION;
DELETE FROM mysql.user WHERE Host='112.87.45.105';
FLUSH PRIVILEGES; GRANT EXECUTE ON test.* TO 'jack'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; GRANT ALL PRIVILEGES ON *.* TO 'jack'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; DELETE FROM mysql.user WHERE Host='153.34.116.212';
FLUSH PRIVILEGES; 通过RENAME操作大表(创建索引,删除,备份等)
SHOW CREATE TABLE t_app;
CREATE TABLE t_app_backup;
RENAME TABLE t_app TO t_app_backup,t_app_new TO t_app;

四、综合


1.时间函数
http://www.w3school.com.cn/sql/sql_dates.asp (1)DATE_FORMAT
http://www.w3school.com.cn/sql/func_date_format.asp DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s') DATE_SUB(NOW(),INTERVAL 1 WEEK) SELECT FROM_UNIXTIME( 1249488000, '%Y%m%d' )
->20071120
mysql> SELECT UNIX_TIMESTAMP() ; (执行时的时间:2009-08-06 10:10:40)
->1249524739
mysql> SELECT UNIX_TIMESTAMP('2009-08-06') ;
->1249488000 #要得到正确的时间相减秒值,有以下3种方法:
1、time_to_sec(timediff(t2, t1)),
2、timestampdiff(second, t1, t2),
3、unix_timestamp(t2) -unix_timestamp(t1)

五、监控

 查看mysql数据库连接数、并发数相关信息
mysql> show status like 'Threads%';
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| Threads_cached | 58 |
| Threads_connected | 57 | ###这个数值指的是打开的连接数
| Threads_created | 3676 |
| Threads_running | 4 | ###这个数值指的是激活的连接数,这个数值一般远低于connected数值
+-------------------+-------+ Threads_connected 跟show processlist结果相同,表示当前连接数。准确的来说,Threads_running是代表当前并发数 这是是查询数据库当前设置的最大连接数
mysql> show variables like '%max_connections%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 1000 |
+-----------------+-------+ 可以在/etc/my.cnf里面设置数据库的最大连接数
[mysqld]
max_connections = 1000 mysql 性能优化方向
http://www.cnblogs.com/AloneSword/p/3207697.html mysql>set profiling=1; 当前的连接数:
show status like '%Threads_connected%';
show status like '%Connections%'; 最大连接数:
show variables like '%max_connections%'; show global variables like '%timeout';

MySQL常用SQL整理的更多相关文章

  1. DB2和MySQL常用SQL整理

    1.Truncate删除表中所有数据 truncate table USER immediate; 说明:Truncate是一个能够快速清空资料表内所有资料的SQL语法.并且能针对具有自动递增值的字段 ...

  2. Mysql 常用 SQL 语句集锦

    Mysql 常用 SQL 语句集锦 基础篇 //查询时间,友好提示 $sql = "select date_format(create_time, '%Y-%m-%d') as day fr ...

  3. Mysql 常用 SQL 语句集锦 转载(https://gold.xitu.io/post/584e7b298d6d81005456eb53)

    Mysql 常用 SQL 语句集锦 基础篇 //查询时间,友好提示 $sql = "select date_format(create_time, '%Y-%m-%d') as day fr ...

  4. mysql 常用 sql 语句 - 快速查询

    Mysql 常用 sql 语句 - 快速查询 1.mysql 基础 1.1 mysql 交互         1.1.1 mysql 连接             mysql.exe -hPup    ...

  5. php面试专题---MySQL常用SQL语句优化

    php面试专题---MySQL常用SQL语句优化 一.总结 一句话总结: 原理,万变不离其宗:其实SQL语句优化的过程中,无非就是对mysql的执行计划理解,以及B+树索引的理解,其实只要我们理解执行 ...

  6. Mysql常用sql语句(一)- 操作数据库

    21篇测试必备的Mysql常用sql语句,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1683347.html ...

  7. Mysql常用sql语句(二)- 操作数据表

    21篇测试必备的Mysql常用sql语句,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1683347.html ...

  8. Mysql常用sql语句(八)- where 条件查询

    测试必备的Mysql常用sql语句,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1683347.html 前言 ...

  9. Mysql常用sql语句(九)- like 模糊查询

    测试必备的Mysql常用sql语句,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1683347.html 前言 ...

随机推荐

  1. Linux性能查看

    1.TOP top  登录后默认按进程的CPU使用情况排序,  按M则按内存使用排序 2. vmstat 2 2 显示系统负载 3. free  -m 查看内存使用情况 4.抓包 tcpdump -i ...

  2. loj2026 「JLOI / SHOI2016」成绩比较

    orz #include <iostream> #include <cstdio> using namespace std; typedef long long ll; int ...

  3. Bootstrap-datepicker 用法

    <div class="input-group input-daterange"> <input type="text" id="s ...

  4. 【转】hibernate映射(单向双向的一对多、多对一以及一对一、多对一)

    多对一关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是多指向一 一对多关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是一指向多 也就是说一对多和多对一的映射策略是一样的,只是站 ...

  5. 【Luogu】P3358最长k可重区间集问题(费用流)

    题目链接 这题费用瘤,数据貌似还是错的. 把线段抽象抽象拆成两个点,入点表示左端,出点表示右端,连上容量为1费用-长度的边. 不相交线段随便连下,源点向拆出的原点S'连费用为0容量k,然后跑费用流. ...

  6. SJTU Summer Camp

    Day -2,-1 提前坐飞机来到了上海,在旁边的酒店住下来,晚上去了外滩,在黄浦江边吹着晚风,依旧感慨万千,在衡中高三的一年竟然已经过去,经常出现在噩梦中的高考也已成为历史,然而命运可能并未就此改变 ...

  7. 【Eclipse】Eclipse中tomcat的Server配置(解决修改代码不断的重启服务器)以及设置tomcat文件发布位置与JSP编译位置查看

     Eclipse有时候修改一点JS或者JSP都会自动重启,有时候修改完JS或者JSP之后必须重启服务器才生效,下面研究了server的一些选项之后彻底解决了这些问题,下面做记录: 我的 Eclipse ...

  8. 转 整理 Linux服务器部署系列之一—Apache篇

    花了差不多一天,参考了几个博客,终于初步配成功了 Apache,先总结一下: 如果apache安装成为linux的服务的话,可以用以下命令操作: service httpd start 启动 serv ...

  9. brk(), sbrk() 用法详解【转】

    转自:http://blog.csdn.net/sgbfblog/article/details/7772153 贴上原文地址,好不容易找到了:brk(), sbrk() -- 改变数据段长度 brk ...

  10. Linux 之 Samba服务器

    Samba服务器 参考教程:[千峰教育] 一:Samba简介: 360百科: Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成. SMB(Server M ...