日常工作或學習過程中,會常用到某些sql語句,又不太容易記憶的。建議大家多多整理記錄下這些常用的sql,這樣後續用到會方便很多。老魏在工作及學習過程中也整理了下個人常用的sql,現在借雲棲社群這個平台分享給大家。可能有些sql你還不常用,但還是希望有所幫助,說不定將來哪天有需求就能用到。
注:下文分享的sql適用於mysql 5.7 版本,低版本可能稍許不同。有些sql可能執行需要較高許可權。都在阿里雲rds資料庫中使用過沒問題。
1.show相關語句
show variables like 『%innodb%』;
show global variables like 『%innodb%』;
show status like 『uptime%』;
show global status like 『connection%』;
show processlist;
show full processlist;
show create table tb_name;
show full columns from tb_name;
show index from tb_name;
show tables like 『cd%』;
show table status where comment=『view』;
show grants for 『test_user』@』%』;
2.檢視賬戶相關資訊
利用此函式我們可以將原來一步無法得到的sql拼接出來,後面部分語句有用到該函式。
select distinct
concat(
『user: 『』,
user,
『』@』』,
host,
『』;』
) as query
from
mysql.user;
select user,
host,
authentication_string,
password_expired,
password_lifetime,
password_last_changed,
account_locked
from
mysql.user;
3.kill資料庫鏈結
select
concat( 'kill ', id, 『;』 )
from
information_schema.processlist
where
command = 『sleep』
and time > 2000;
select
concat( 'kill ', id, 『;』 )
from
information_schema.processlist
where
state like 『creating sort index』;
select
concat( 'kill ', id, 『;』 )
from
information_schema.processlist
where
where user=『root』;
4.拼接建立資料庫或使用者語句
select
concat( 'kill ', id, 『;』 )
from
information_schema.processlist
where
command = 『sleep』
and time > 2000;
select
concat( 'kill ', id, 『;』 )
from
information_schema.processlist
where
state like 『creating sort index』;
select
concat( 'kill ', id, 『;』 )
from
information_schema.processlist
where
where user=『root』;
5.檢視庫或表大小
select
concat( round( sum( data_length / 1024 / 1024 ), 2 ), 『mb』 ) as data_length_mb,
concat( round( sum( index_length / 1024 / 1024 ), 2 ), 『mb』 ) as index_length_mb
from
information_schema.tables
;
select
table_schema,
concat( truncate ( sum( data_length )/ 1024 / 1024, 2 ), 』 mb』 ) as data_size,
concat( truncate ( sum( index_length )/ 1024 / 1024, 2 ), 『mb』 ) as index_size
from
information_schema.tables
group by
table_schema;
select
concat( round( sum( data_length / 1024 / 1024 ), 2 ), 『mb』 ) as data_length_mb,
concat( round( sum( index_length / 1024 / 1024 ), 2 ), 『mb』 ) as index_length_mb
from
information_schema.tables
where
table_schema = 『test_db』;
select
concat( round( sum( data_length / 1024 / 1024 ), 2 ), 『mb』 ) as data_length_mb,
concat( round( sum( index_length / 1024 / 1024 ), 2 ), 『mb』 ) as index_length_mb
from
information_schema.tables
where
table_schema = 『test_db』
and table_name = 『tbname』;
6.檢視表碎片及收縮語句
select
t.table_schema,
t.table_name,
t.table_rows,
concat( round( t.data_length / 1024 / 1024, 2 ), 『m』 ) as size,
t.index_length,
concat( round( t.data_free / 1024 / 1024, 2 ), 『m』 ) as datafree
from
information_schema.tables
t
where
t.table_schema = 『test_db』
order by
datafree desc;
alter table tb_name engine = innodb;
optimize table tb_name;
7.查詢無主鍵表
select
t.table_schema,
t.table_name,
t.table_rows,
concat( round( t.data_length / 1024 / 1024, 2 ), 『m』 ) as size,
t.index_length,
concat( round( t.data_free / 1024 / 1024, 2 ), 『m』 ) as datafree
from
information_schema.tables
t
where
t.table_schema = 『test_db』
order by
datafree desc;
alter table tb_name engine = innodb;
optimize table tb_name;
更多參閱資料庫文件
希望這些sql語句能對你有所幫助,可以收藏一下,說不定某次就用到了呢!
Oracle 資料庫常用操作語句大全
文件摘自 一 oracle資料庫操作 1 建立資料庫 create database databasename 2 刪除資料庫 drop database dbname 3 備份資料庫 exp demo demo orcl buffer 1024 file d back.dmp full y dem...
Oracle 資料庫常用操作語句大全
轉 一 oracle資料庫操作 1 建立資料庫 create database databasename 2 刪除資料庫 drop database dbname 3 備份資料庫 exp demo demo orcl buffer 1024 file d back.dmp full y demo 使...
資料庫管理常用sql語句
一 creating a database 1 以系統管理員使用者登入。sqlplus as sysdba 2 啟動資料庫導nomount狀態。sql startup nomount 3 執行建立資料庫語句。sql create database invrep controlfile reuse m...