一、查询数据库和数据表信息
INFORMATION_SCHEMA:是MySQL自带数据库,看作信息数据库,并且只读。
INFORMATION_SCHEMA.TABLES:提供了关于数据库中的表的信息,属于那个数据库实例(TABLE_SCHEMA)。
INFORMATION_SCHEMA.COLUMNS:提供了表中的列信息。详细表述了某张表的所有列以及每个列的信息。
1、TABLE_SCHEMA:数据库实例名称;
2、TABLE_NAME:数据存放对象表名称;
3、TABLE_TYPE:数据存放对象类型(表或视图);
4、TABLE_ROWS:数据量;
5、COLUMN_NAME:字段名称
6、COLUMN_COMMENT:字段注释
7、COLUMN_TYPE:字段类型
日常使用场景示例:
查看某个数据库中所有表注释信息:
SELECT TABLE_NAME,TABLE_COMMENT FROM information_schema.TABLES WHERE table_schema='demo';
查看数据库下某张表所有字段注释信息:
SELECT COLUMN_name,COLUMN_comment FROM information_schema.`COLUMNS` WHERE TABLE_NAME='table_demo' AND TABLE_SCHEMA='demo'
一次性查询数据库下所有表注释和表下字段注释:
SELECT t.TABLE_NAME,t.TABLE_COMMENT,c.COLUMN_NAME,c.COLUMN_TYPE,c.COLUMN_COMMENT FROM information_schema.TABLES t,INFORMATION_SCHEMA.Columns c WHERE c.TABLE_NAME=t.TABLE_NAME AND t.`TABLE_SCHEMA`='demo'
查询数据库下所有表注释:
SELECT TABLE_SCHEMA 数据库名称,TABLE_NAME 表名称,COLUMN_NAME 表字段,COLUMN_COMMENT 表字段注释,COLUMN_TYPE 表字段类型
FROM information_schema.`COLUMNS` WHERE TABLE_SCHEMA='demo'
查询某个数据下某张表的所有字段的注释:
SELECT TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME,COLUMN_TYPE,COLUMN_COMMENT FROM information_schema.`COLUMNS` WHERE TABLE_SCHEMA='数据库名称' AND TABLE_NAME='表名称'
查看数据的数据条数和数据库存储数据多少MB?
SELECT CONCAT(sum(tt.data_size)," MB") data_size,SUM(tt.table_rows) table_rowsL FROM (select TABLE_NAME, concat(truncate(data_length/1024/1024,2)) as data_size,table_rows from information_schema.tables where TABLE_SCHEMA = 'demo-sl' ) tt ;
二、函数
if函数使用:
if(expr1,expr2,expr3);expr1成立则结果为expr2,否则为expr3
ifnull(expr1,expr2);expr1为null,则结果为expr2
-- 清空数据中的所有表
select CONCAT('truncate TABLE ',table_schema,'.',TABLE_NAME, ';') from INFORMATION_SCHEMA.TABLES where table_schema = '数据库1';
-- 删除数据库中所有表
SELECT concat('DROP TABLE IF EXISTS ', table_name, ';') FROM information_schema.tables WHERE table_schema = 'industry_brain';
报错 :Cannot delete or update a parent row: a foreign key constraint fails,
解决方法:
SET foreign_key_checks = 0; // 先设置外键约束检查关闭
drop table table1; // 删除表,如果要删除视图,也是如此
SET foreign_key_checks = 1; // 开启外键约束检查,以保持表结构完整性
-- mysql的MySQLdump备份语句
/usr/local/mysql/bin/mysqldump -hIP -PPORT -uUSER -pPASSWORD -A -B -F | gzip > /usr/local/data/all-2020-11-27.sql.gz