常用SQL語句分享

前言:

日常工作或?qū)W習(xí)過程中骤公,我們可能會(huì)經(jīng)常用到某些SQL,建議大家多多整理記錄下這些常用的SQL扬跋,這樣后續(xù)用到會(huì)方便很多阶捆。筆者在工作及學(xué)習(xí)過程中也整理了下個(gè)人常用的SQL,現(xiàn)在分享給你钦听!可能有些SQL你還不常用洒试,但還是希望對(duì)你有所幫助,說不定某日有需求就可以用到朴上。

注:下文分享的SQL適用于MySQL 5.7 版本垒棋,低版本可能稍許不同。有些SQL可能執(zhí)行需要較高權(quán)限痪宰。

1.show相關(guān)語句

# 查看實(shí)例參數(shù) 例如:
show variables like '%innodb%';
show global variables like '%innodb%';

# 查看實(shí)例狀態(tài)捕犬,例如:
show status like 'uptime%';
show global status like 'connection%';

# 查看數(shù)據(jù)庫鏈接:
show processlist;
show full processlist;

# 查詢某個(gè)表的結(jié)構(gòu):
show create table tb_name;

# 查詢某個(gè)表的詳細(xì)字段信息:
show full columns from tb_name;

# 查詢某個(gè)表的全部索引信息:
show index from tb_name;

# 查詢某個(gè)庫以cd開頭的表:
show tables like 'cd%';

# 查詢某個(gè)庫中的所有視圖:
show table status where comment='view';

# 查詢某個(gè)用戶的權(quán)限:
show grants for 'test_user'@'%';

2.查看賬戶相關(guān)信息

# 這里先介紹下CONCAT函數(shù):在MySQL中 CONCAT()函數(shù)用于將多個(gè)字符串連接成一個(gè)字符串,
利用此函數(shù)我們可以將原來一步無法得到的sql拼接出來酵镜,后面部分語句有用到該函數(shù)碉碉。
# 當(dāng)拼接字符串中出現(xiàn)''時(shí) 需使用\轉(zhuǎn)義符

# 查看所有用戶名:
SELECT DISTINCT
    CONCAT(
        'User: \'',
        user,
        '\'@\'',
        host,
        '\';'
    ) AS QUERY
FROM
    mysql.user;

# 查看用戶詳細(xì)信息:
SELECT user,
    host,
    authentication_string,
    password_expired,
    password_lifetime,
    password_last_changed,
    account_locked 
FROM
    mysql.user;

3.KILL數(shù)據(jù)庫鏈接

# 下面列舉SQL只是拼接出kill 鏈接的語句,若想執(zhí)行 直接將結(jié)果復(fù)制執(zhí)行即可淮韭。
# 殺掉空閑時(shí)間大于2000s的鏈接:
SELECT
    concat( 'KILL ', id, ';' ) 
FROM
    information_schema.`PROCESSLIST` 
WHERE
    Command = 'Sleep' 
    AND TIME > 2000;
  
# 殺掉處于某狀態(tài)的鏈接:
SELECT
    concat( 'KILL ', id, ';' ) 
FROM
    information_schema.`PROCESSLIST` 
WHERE
    STATE LIKE 'Creating sort index';
  
# 殺掉某個(gè)用戶的鏈接:
SELECT
    concat( 'KILL ', id, ';' ) 
FROM
    information_schema.`PROCESSLIST` 
WHERE
    where user='root';

4.拼接創(chuàng)建數(shù)據(jù)庫或用戶語句

# 拼接創(chuàng)建數(shù)據(jù)庫語句(排除系統(tǒng)庫):
SELECT
    CONCAT(
        'create database ',
        '`',
    SCHEMA_NAME,
    '`',
    ' DEFAULT CHARACTER SET ',
    DEFAULT_CHARACTER_SET_NAME,
        ';'
    ) AS CreateDatabaseQuery
FROM
    information_schema.SCHEMATA
WHERE
    SCHEMA_NAME NOT IN (
        'information_schema',
        'performance_schema',
        'mysql',
        'sys'
    );
    
# 拼接創(chuàng)建用戶語句(排除系統(tǒng)用戶):
SELECT
    CONCAT(
        'create user \'',
    user,
    '\'@\'',
    Host,
    '\''
    ' IDENTIFIED BY PASSWORD \'',
    authentication_string,
        '\';'
    ) AS CreateUserQuery
FROM
    mysql.`user`
WHERE
    `User` NOT IN (
        'root',
        'mysql.session',
        'mysql.sys'
    );
# 有密碼字符串哦 在其他實(shí)例執(zhí)行 可直接創(chuàng)建出與本實(shí)例相同密碼的用戶垢粮。

5.查看庫或表大小

# 查看整個(gè)實(shí)例占用空間大小:
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`;
  
# 查看各個(gè)庫占用大锌糠唷:
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;
  
# 查看單個(gè)庫占用空間大欣伞:
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';
  
# 查看單個(gè)表占用空間大小:
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.查看表碎片及收縮語句

# 查看某個(gè)庫下所有表的碎片情況:
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.查找無主鍵表

# 查找某一個(gè)庫無主鍵表:
SELECT
table_schema,
table_name
FROM
    information_schema.`TABLES`
WHERE
    table_schema = 'test_db'
AND TABLE_NAME NOT IN (
    SELECT
        table_name
    FROM
        information_schema.table_constraints t
    JOIN information_schema.key_column_usage k USING (
        constraint_name,
        table_schema,
        table_name
    )
    WHERE
        t.constraint_type = 'PRIMARY KEY'
    AND t.table_schema = 'test_db'
);

# 查找除系統(tǒng)庫外 無主鍵表:
SELECT
    t1.table_schema,
    t1.table_name
FROM
    information_schema.`TABLES` t1
LEFT OUTER JOIN information_schema.TABLE_CONSTRAINTS t2 ON t1.table_schema = t2.TABLE_SCHEMA
AND t1.table_name = t2.TABLE_NAME
AND t2.CONSTRAINT_NAME IN ('PRIMARY')
WHERE
    t2.table_name IS NULL
AND t1.TABLE_SCHEMA NOT IN (
    'information_schema',
    'performance_schema',
    'mysql',
    'sys'
) ;

總結(jié):

希望這些SQL語句能對(duì)你有所幫助昔善,可以收藏一下,說不定某次就用到了呢畔乙!原創(chuàng)不易君仆,感謝大家支持。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市返咱,隨后出現(xiàn)的幾起案子钥庇,更是在濱河造成了極大的恐慌,老刑警劉巖咖摹,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件评姨,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡萤晴,警方通過查閱死者的電腦和手機(jī)吐句,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來店读,“玉大人嗦枢,你說我怎么就攤上這事×饺耄” “怎么了净宵?”我有些...
    開封第一講書人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵敲才,是天一觀的道長(zhǎng)裹纳。 經(jīng)常有香客問我,道長(zhǎng)紧武,這世上最難降的妖魔是什么剃氧? 我笑而不...
    開封第一講書人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮阻星,結(jié)果婚禮上朋鞍,老公的妹妹穿的比我還像新娘。我一直安慰自己妥箕,他們只是感情好滥酥,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著畦幢,像睡著了一般坎吻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上宇葱,一...
    開封第一講書人閱讀 51,679評(píng)論 1 305
  • 那天瘦真,我揣著相機(jī)與錄音,去河邊找鬼黍瞧。 笑死诸尽,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的印颤。 我是一名探鬼主播您机,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了往产?” 一聲冷哼從身側(cè)響起被碗,我...
    開封第一講書人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎仿村,沒想到半個(gè)月后锐朴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蔼囊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年焚志,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片畏鼓。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡酱酬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出云矫,到底是詐尸還是另有隱情膳沽,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布让禀,位于F島的核電站挑社,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏巡揍。R本人自食惡果不足惜痛阻,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望腮敌。 院中可真熱鬧阱当,春花似錦、人聲如沸糜工。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽捌木。三九已至油坝,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間钮莲,已是汗流浹背免钻。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留崔拥,地道東北人极舔。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像链瓦,于是被迫代替她去往敵國(guó)和親拆魏。 傳聞我的和親對(duì)象是個(gè)殘疾皇子盯桦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 一.數(shù)據(jù)控制語句(DML)部分 1.INSERT(往數(shù)據(jù)表里插入記錄的語句) INSERTINTO表名(字段名1,...
    浮浮塵塵閱讀 3,529評(píng)論 0 19
  • 語 句 功 能 數(shù)據(jù)操作 SELECT——從數(shù)據(jù)庫表中檢索數(shù)據(jù)行和列INSERT——向數(shù)據(jù)庫表添加新數(shù)據(jù)行DELE...
    戰(zhàn)敭閱讀 5,094評(píng)論 0 53
  • ORA-00001: 違反唯一約束條件 (.) 錯(cuò)誤說明:當(dāng)在唯一索引所對(duì)應(yīng)的列上鍵入重復(fù)值時(shí),會(huì)觸發(fā)此異常渤刃。 O...
    我想起個(gè)好名字閱讀 5,320評(píng)論 0 9
  • 什么是SQL數(shù)據(jù)庫: SQL是Structured Query Language(結(jié)構(gòu)化查詢語言)的縮寫拥峦。SQL是...
    西貝巴巴閱讀 1,817評(píng)論 0 10
  • 1.今天一大早從男票家趕回來,姑姑那些還沒到卖子。整條路都很清靜呀略号,最喜歡這種感覺了。和腦公囝他們約好明天過來我家打邊...
    鈴鐺風(fēng)聆閱讀 140評(píng)論 0 0