一、查詢數據庫和數據表信息
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
