关于MySql的几条有用的SQL语句

1.查询数据库总大小的SQL:

SELECT CONCAT(ROUND(SUM(DATA_LENGTH/1024/1024),2),'MB') AS data  FROM information_schema.TABLES

2.查询数据库中某个库大小的SQL:

SELECT CONCAT(ROUND(SUM(DATA_LENGTH/1024/1024),2),'MB') AS  DATA  FROM information_schema.TABLES WHERE table_schema = 'dbName';

3.查询数据库中某个库中某个表大小的SQL:

SELECT CONCAT(ROUND(SUM(DATA_LENGTH/1024/1024),2),'MB') AS  DATA  FROM information_schema.TABLES WHERE table_schema = 'dbName' AND table_name = 'tableNme';

4.备份数据的SQL:

将db库中t1表中的数据按条件查询的数据插入到db_bak库的t1表中,前提t和t1表结构相同(不同库之间的备份)

INSERT INTO db_bak.t1 SELECT * FROM db.t1 WHERE t1.id>1;

将db库中t1表中的数据按条件查询的数据插入到t1_bak表中,前提t1_bak和t1表结构相同(同库之间的备份)

INSERT INTO db.t1_bak SELECT * FROM db.t1 WHERE t1.id>1;

5.将t1表中column1字段中的所有出现xxx11都改为yyy22

UPDATE db.t1 SET column1=REPLACE(column1,"xxx11","yyy22");

6.当一个表的某个列的值为另一个表的某个列的值,更新这个列的值,一般都是为了打断外键关系,再重新建立一种弱关系

UPDATE db.`t1` AS b INNER JOIN (SELECT id,instance_id FROM db.`t2`) n ON b.`t2_pk`=n.id SET b.`code`=n.instance_id;

7.在同一张表中将一个字段的值按照一定条件赋值给另一字段,也可以是不同表按照一定规则赋值

UPDATE table2 t2,(SELECT id,NAME FROM table2) n2 SET t2.description=n2.name WHERE t2.id=n2.id

8.默认给一列数据加一个统一的后缀

UPDATE table2 t2 SET t2.col=CONCAT(t2.col,'}') 

9.数据库默认时区错误:

查看时间 select now();

修正方法一

SET GLOBAL time_zone='+08:00';

SET time_zone='+08:00';

修正方法二

my.cnf 文件中,在 [mysqld] 节下增加 default-time-zone = '+08:00'

 

 

好的sql可以事半功倍,以后会持续更新

 

posted @ 2020-09-10 14:20  雷诺2016  阅读(233)  评论(0编辑  收藏  举报