MySQL常用SQL整理

一、DDL

  1. #创建数据库
  2. CREATE DATABASE IF NOT EXISTS product DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
  3. SET FOREIGN_KEY_CHECKS=0;
  4. #创建表
  5. DROP TABLE IF EXISTS `t_app`;
  6. CREATE TABLE `t_app` (
  7. `id` int(11) NOT NULL AUTO_INCREMENT,
  8. `create_date` datetime NOT NULL,
  9. `is_delete` bit(1) DEFAULT b'0',
  10. `re_order` int(11) DEFAULT '0',
  11. `update_date` varchar(255) DEFAULT NULL,
  12. `type_code` varchar(32) NOT NULL COMMENT '类型编码',
  13. `type_name` varchar(32) NOT NULL COMMENT '类型名称',
  14. `memo` TEXT COMMENT '备注信息',
  15. PRIMARY KEY (`id`)
  16. ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
  17. #取得空字符串
  18. UPDATE t_app SET type_code=REPLACE(type_code,' ','');
  19. #增加一个字段
  20. ALTER TABLE t_app ADD COLUMN create_id INT(11) DEFAULT 0;
  21. ALTER TABLE t_app ADD COLUMN create_id INT(11) DEFAULT 0 AFTER id;
  22. ALTER TABLE t_app ADD COLUMN create_id INT(11) DEFAULT 0 FIRST id;
  23. #修改表字段长度
  24. ALTER TABLE t_app MODIFY COLUMN type_code VARCHAR(255);
  25. #PRIMARY KEY(主键索引)
  26. mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )
  27. #UNIQUE(唯一索引)
  28. mysql>ALTER TABLE `table_name` ADD UNIQUE (
  29. `column`
  30. )
  31. #INDEX(普通索引)
  32. mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column` )
  33. #FULLTEXT(全文索引)
  34. mysql>ALTER TABLE `table_name` ADD FULLTEXT (
  35. `column`
  36. )
  37. #多列索引
  38. mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )
  39. #删除索引
  40. ALTER TABLE table_name DROP INDEX index_name;

二、DML


  1. INSERT INTO t_app(create_date,is_delete,re_order,update_date,type_code,type_name) VALUES(NOW(),0,0,now(),"10000",'TestAPP');
  2. UPDATE t_app SET is_delete=b'1' WHERE id=1;
  3. DELETE FROM t_app WHERE id=1;
  4. #按周分组汇总
  5. SELECT
  6. WEEK(t.create_date,3) AS w,
  7. WEEKOFYEAR(t.create_date) AS w1,
  8. YEARWEEK(t.create_date,3) AS w2,
  9. CONCAT('今天星期',(WEEKDAY(CURDATE())+1)) AS wd,
  10. CONCAT(DATE_ADD('1900-01-01',INTERVAL FLOOR(DATEDIFF(t.create_date,'1900-01-01')/7)*7 DAY),'~',
  11. DATE_ADD('1900-01-01',INTERVAL FLOOR(DATEDIFF(t.create_date,'1900-01-01')/7)*7+6 DAY)) AS `按周分组汇总`,
  12. COUNT(DISTINCT imsi) AS amount
  13. FROM t_pay_log t
  14. WHERE t.create_date BETWEEN '2016-05-01' AND NOW()
  15. GROUP BY FLOOR(DATEDIFF(t.create_date,'1900-01-01')/7);
  16. #行转列
  17. SELECT DATE_FORMAT(t.create_date,'%Y-%m-%d') AS d,
  18. SUM(IF(result_code='1030000',1,0)) AS `b.支付成功`,
  19. SUM(IF(result_code IN ('1000000','1010002','1000007','1020004','9018'),1,0)) AS `c.代理IP问题`,
  20. SUM(IF(result_code='22',1,0)) AS `e.鉴权失败`,
  21. SUM(IF(result_code='2085',1,0)) AS `i.IP异常`,
  22. SUM(IF(result_code IN ('13','14','9019'),1,0)) AS `k.网络连接失败`,
  23. COUNT(0) AS `总计`
  24. FROM test.c_pay_log t
  25. WHERE 1=1
  26. AND t.create_date BETWEEN '2016-01-01 00:00:00' AND '2016-01-31 23:59:59'
  27. GROUP BY d;
  28. SELECT DATE_FORMAT(t.create_date,'%Y-%m-%d') AS d,
  29. t.result_code,
  30. t.result_msg,
  31. CASE
  32. t.result_code
  33. WHEN '1030000' THEN 'b.支付成功'
  34. WHEN '1000000' THEN 'c.代理IP问题'
  35. WHEN '1010002' THEN 'c.代理IP问题'
  36. WHEN '1000007' THEN 'c.代理IP问题'
  37. WHEN '1020004' THEN 'c.代理IP问题'
  38. WHEN '9018' THEN 'c.代理IP问题'
  39. WHEN '22' THEN 'e.鉴权失败'
  40. WHEN '2085' THEN 'i.IP异常'
  41. WHEN '13' THEN 'k.网络连接失败'
  42. WHEN '14' THEN 'k.网络连接失败'
  43. ELSE 'z.其他问题'
  44. END AS category,
  45. COUNT(0) AS amount
  46. FROM test.c_pay_log t
  47. WHERE 1=1
  48. AND t.create_date BETWEEN '2016-01-01 00:00:00' AND '2016-01-31 23:59:59'
  49. GROUP BY d,t.result_code,t.result_msg
  50. ORDER BY d ASC,category ASC;
  51. 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,
  52. SUM(req) AS req, #请求数
  53. SUM(req_su) AS req_su,#请求成功数
  54. IFNULL(ROUND((SUM(req_su)/SUM(req))*100,2),0) AS req_su_rate, #请求成功率=请求成功数/请求数
  55. SUM(pay) AS pay,#支付数
  56. SUM(pay_su) AS pay_su,#支付成功数
  57. SUM(pay_su_amount) AS pay_su_amount,#支付成功金额
  58. IFNULL(ROUND((SUM(pay_su)/SUM(pay))*100,2),0) AS pay_su_rate,#支付成功率
  59. IFNULL(ROUND((SUM(pay)/SUM(req_su))*100,2),0) AS sure_rate,#确认率=支付数/请求成功数
  60. IFNULL(ROUND((SUM(pay_su)/SUM(req))*100,2),0) AS req_conv_rate #总体转化率=支付成功数/请求数
  61. FROM
  62. (
  63. 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,
  64. COUNT(0) AS req,0 AS req_su,0 AS pay,0 AS pay_su,0 AS pay_su_amount
  65. FROM t_pay_log_re t,t_sp_channel spchannel,t_sp sp,t_developer dev
  66. WHERE 1=1
  67. AND t.mscCode=spchannel.ringtones_id AND spchannel.sp_id=sp.id AND t.developer_id=dev.id
  68. AND t.create_date BETWEEN CONCAT(CURDATE(),' 00:00:00') AND NOW()
  69. AND sp.sp_code='0101'
  70. GROUP BY d,t.appCode
  71. UNION ALL
  72. 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,
  73. 0 AS req,COUNT(0) AS req_su,0 AS pay,0 AS pay_su,0 AS pay_su_amount
  74. FROM t_pay_log_re t,t_sp_channel spchannel,t_sp sp,t_developer dev
  75. WHERE 1=1
  76. AND t.mscCode=spchannel.ringtones_id AND spchannel.sp_id=sp.id AND t.developer_id=dev.id
  77. AND t.create_date BETWEEN CONCAT(CURDATE(),' 00:00:00') AND NOW()
  78. AND sp.sp_code='0101'
  79. AND t.result='success'
  80. GROUP BY d,t.appCode
  81. UNION ALL
  82. 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,
  83. 0 AS req,0 AS req_su,COUNT(0) AS pay,0 AS pay_su,0 AS pay_su_amount
  84. FROM t_pay_log t,t_sp_channel spchannel,t_sp sp,t_developer dev
  85. WHERE 1=1
  86. AND t.mscCode=spchannel.ringtones_id AND spchannel.sp_id=sp.id AND t.developer_id=dev.id
  87. AND t.create_date BETWEEN CONCAT(CURDATE(),' 00:00:00') AND NOW()
  88. AND sp.sp_code='0101'
  89. GROUP BY d,t.appCode
  90. UNION ALL
  91. 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,
  92. 0 AS req,0 AS req_su,0 AS pay,COUNT(0) AS pay_su,SUM(t.cost) AS pay_su_amount
  93. FROM t_pay_log t,t_sp_channel spchannel,t_sp sp,t_developer dev
  94. WHERE 1=1
  95. AND t.mscCode=spchannel.ringtones_id AND spchannel.sp_id=sp.id AND t.developer_id=dev.id
  96. AND t.create_date BETWEEN CONCAT(CURDATE(),' 00:00:00') AND NOW()
  97. AND sp.sp_code='0101'
  98. AND t.result='success'
  99. GROUP BY d,t.appCode
  100. ) x GROUP BY x.d,x.appCode
  101. ORDER BY x.req DESC LIMIT 10
  102. SELECT DISTINCT paylog.id AS book_id
  103. FROM t_pay_log paylog
  104. WHERE paylog.create_date BETWEEN DATE_SUB(NOW(),INTERVAL 1 HOUR) AND DATE_SUB(NOW(),INTERVAL 1 MINUTE);
  105. 查询表
  106. SELECT TABLE_NAME FROM information_schema.TABLES t WHERE t.TABLE_SCHEMA='sdk';
  107. show tables;
  108. desc t_app;

三、DCL

  1. #导出表结构
  2. mysqldump -h192.168.1.101 -uroot -p123456 -d test20160101 > test表结构_20160101.sql
  3. 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
  4. 更多mysqldump参考:
  5. http://www.cnblogs.com/qq78292959/p/3637135.html
  6. http://www.javaranger.com/archives/1598
  7. 授权/改密
  8. UPDATE user SET Password=PASSWORD('123456') where USER='root';
  9. GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
  10. GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '123456' WITH GRANT OPTION;
  11. FLUSH PRIVILEGES;
  12. GRANT ALL PRIVILEGES ON *.* TO 'root'@'112.87.45.22' IDENTIFIED BY '123456' WITH GRANT OPTION;
  13. DELETE FROM mysql.user WHERE Host='112.87.45.22';
  14. FLUSH PRIVILEGES;
  15. GRANT SELECT ON *.* TO 'readonly'@'192.168.1.%' IDENTIFIED BY '123456' WITH GRANT OPTION;
  16. DELETE FROM mysql.user WHERE Host='112.87.45.105';
  17. FLUSH PRIVILEGES;
  18. GRANT EXECUTE ON test.* TO 'jack'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
  19. GRANT ALL PRIVILEGES ON *.* TO 'jack'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
  20. DELETE FROM mysql.user WHERE Host='153.34.116.212';
  21. FLUSH PRIVILEGES;
  22. 通过RENAME操作大表(创建索引,删除,备份等)
  23. SHOW CREATE TABLE t_app;
  24. CREATE TABLE t_app_backup;
  25. RENAME TABLE t_app TO t_app_backup,t_app_new TO t_app;

四、综合


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

五、监控

  1. 查看mysql数据库连接数、并发数相关信息
  2. mysql> show status like 'Threads%';
  3. +-------------------+-------+
  4. | Variable_name | Value |
  5. +-------------------+-------+
  6. | Threads_cached | 58 |
  7. | Threads_connected | 57 | ###这个数值指的是打开的连接数
  8. | Threads_created | 3676 |
  9. | Threads_running | 4 | ###这个数值指的是激活的连接数,这个数值一般远低于connected数值
  10. +-------------------+-------+
  11. Threads_connected show processlist结果相同,表示当前连接数。准确的来说,Threads_running是代表当前并发数
  12. 这是是查询数据库当前设置的最大连接数
  13. mysql> show variables like '%max_connections%';
  14. +-----------------+-------+
  15. | Variable_name | Value |
  16. +-----------------+-------+
  17. | max_connections | 1000 |
  18. +-----------------+-------+
  19. 可以在/etc/my.cnf里面设置数据库的最大连接数
  20. [mysqld]
  21. max_connections = 1000
  22. mysql 性能优化方向
  23. http://www.cnblogs.com/AloneSword/p/3207697.html
  24. mysql>set profiling=1;
  25. 当前的连接数:
  26. show status like '%Threads_connected%';
  27. show status like '%Connections%';
  28. 最大连接数:
  29. show variables like '%max_connections%';
  30. 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. An entity cannot be annotated with both @Entity and @MappedSuperclass: com.example1.demo1.Entity.User错误

    项目问SpringDataJpa项目,在运行的过程中出现的以下错误: Caused by: org.hibernate.AnnotationException: An entity cannot be ...

  2. 模拟 - BZOJ 1510 [POI2006] Kra-The Disks

    BZOJ 1510 [POI2006] Kra-The Disks 描述 Johnny 在生日时收到了一件特殊的礼物,这件礼物由一个奇形怪状的管子和一些盘子组成. 这个管子是由许多不同直径的圆筒(直径 ...

  3. JavaScript简单继承

    很多C#或C++开发人员习惯使用继承来开发项目,所以当他们想学习JavaScript语言时,第一个问题一般是:“我怎么在JavaScript中使用继承?”. 实际上JavaScript使用了一种不同于 ...

  4. win7 64位旗舰版下载

    http://www.itqnh.com/deepin/win7-64.html mac   windows https://help.apple.com/bootcamp/assistant/6.0 ...

  5. 对于运用git将本地文件上传到coding总结

    首先需要在你的本地磁盘下建立一个目录,并且进入该目录. 前几次课程上有讲到&的用法,&&表示并且. 命令 ”makir 文件名 && cd 文件名”,cd指进入 ...

  6. python递归深度报错--RuntimeError: maximum recursion depth exceeded

    当你的程序递归的次数超过999次的时候,就会引发RuntimeError: maximum recursion depth exceeded. 解决方法两个: 1.增加系统的递归调用的次数: impo ...

  7. springmvc始终跳转至首页,不报404错误

    本篇博客特别补充:2017-3-4 9:42,经过分析和测试,本篇博客的解决方案只是碰巧,暂时的解决了问题.在后续的运行中,又出现了同样的毛病.经过日志跟踪,发现了端倪,下篇博客深入的剖析!本篇博客, ...

  8. hdu图论题目分类

    =============================以下是最小生成树+并查集====================================== [HDU] 1213 How Many ...

  9. 机器学习实战之AdaBoost算法

    一,引言 前面几章的介绍了几种分类算法,当然各有优缺.如果将这些不同的分类器组合起来,就构成了我们今天要介绍的集成方法或者说元算法.集成方法有多种形式:可以使多种算法的集成,也可以是一种算法在不同设置 ...

  10. 相机拍照功能之权限和Android版本问题

    代码改变世界 相机拍照功能之权限和Android版本问题 对于Android 6.0之前,想要使用系统的相机进行拍照,那么只要在AndroidManifedt.xml中进行添加相应的权限,主要是两个: ...