mysql 查詢沒有主鍵的表

關(guān)于查找沒有主鍵的表這件事,我在網(wǎng)上看了一大堆灼卢,基本都是互相抄,全都一個樣来农,而且那SQL寫的也不好鞋真,我想查個沒有主鍵的表,還得手動替換庫名沃于,那我要是有20個庫我得查20次涩咖?更何況排除系統(tǒng)表的方式也很奇怪……所以我就自己寫了一個,能查所有庫的所有表繁莹,舒服了檩互。
壓縮版

SELECT a.TABLE_SCHEMA,a.TABLE_NAME FROM (SELECT TABLE_SCHEMA,TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA NOT IN('mysql','information_schema','performance_schema','sys','sysdb')) as a LEFT JOIN (SELECT TABLE_SCHEMA,TABLE_NAME FROM information_schema.TABLE_CONSTRAINTS WHERE CONSTRAINT_TYPE='PRIMARY KEY' AND TABLE_SCHEMA NOT IN('mysql','information_schema','performance_schema','sys','sysdb')) as b ON a.TABLE_SCHEMA=b.TABLE_SCHEMA AND a.TABLE_NAME=b.TABLE_NAME WHERE b.TABLE_NAME IS NULL;

美化版

SELECT
    a.TABLE_SCHEMA,
    a.TABLE_NAME 
FROM
    (
    SELECT
        TABLE_SCHEMA,
        TABLE_NAME 
    FROM
        information_schema.TABLES 
    WHERE
    TABLE_SCHEMA NOT IN ( 'mysql', 'information_schema', 'performance_schema', 'sys', 'sysdb' )) AS a
    LEFT JOIN (
    SELECT
        TABLE_SCHEMA,
        TABLE_NAME 
    FROM
        information_schema.TABLE_CONSTRAINTS 
    WHERE
        CONSTRAINT_TYPE = 'PRIMARY KEY' 
    AND TABLE_SCHEMA NOT IN ( 'mysql', 'information_schema', 'performance_schema', 'sys', 'sysdb' )) AS b 
    ON a.TABLE_SCHEMA = b.TABLE_SCHEMA 
    AND a.TABLE_NAME = b.TABLE_NAME 
WHERE
    b.TABLE_NAME IS NULL;

sql解釋
查詢結(jié)果中TABLE_SCHEMA是庫名,TABLE_NAME就是表名咨演。
其查詢原理就是information_schema庫中存儲了各個庫與表的結(jié)構(gòu)闸昨,在information_schema.TABLES表中存儲了所有表,information_schema.TABLE_CONSTRAINTS表中存儲了表相關(guān)的約束,主鍵就是一種約束饵较,所以CONSTRAINT_TYPE字段為PRIMARY KEY值的就是擁有主鍵的表拍嵌。
有了所有表的表名,還有了所有擁有主鍵的表循诉,那么就簡單了横辆,以查詢出的全部表為主表,左聯(lián)一下茄猫,右表為空的就是沒有主鍵的表狈蚤。
SQL中排除了mysql自帶的五個庫,同時解決了不同名的庫擁有相同名的表的情況划纽,還有優(yōu)化空間脆侮,不過我覺得不是業(yè)務(wù)SQL,沒必要優(yōu)化了阿浓。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末他嚷,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子芭毙,更是在濱河造成了極大的恐慌筋蓖,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件退敦,死亡現(xiàn)場離奇詭異粘咖,居然都是意外死亡,警方通過查閱死者的電腦和手機侈百,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進店門瓮下,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人钝域,你說我怎么就攤上這事讽坏。” “怎么了例证?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵路呜,是天一觀的道長。 經(jīng)常有香客問我织咧,道長胀葱,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任笙蒙,我火速辦了婚禮抵屿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘捅位。我一直安慰自己轧葛,他們只是感情好搂抒,可當我...
    茶點故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著朝群,像睡著了一般燕耿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上姜胖,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天誉帅,我揣著相機與錄音,去河邊找鬼右莱。 笑死蚜锨,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的慢蜓。 我是一名探鬼主播亚再,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼晨抡!你這毒婦竟也來了氛悬?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤耘柱,失蹤者是張志新(化名)和其女友劉穎如捅,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體调煎,經(jīng)...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡镜遣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了士袄。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片悲关。...
    茶點故事閱讀 40,615評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖娄柳,靈堂內(nèi)的尸體忽然破棺而出寓辱,到底是詐尸還是另有隱情,我是刑警寧澤赤拒,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布秫筏,位于F島的核電站,受9級特大地震影響需了,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜般甲,卻給世界環(huán)境...
    茶點故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一肋乍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧敷存,春花似錦墓造、人聲如沸堪伍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽帝雇。三九已至,卻和暖如春蛉拙,著一層夾襖步出監(jiān)牢的瞬間尸闸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工孕锄, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留吮廉,地道東北人。 一個月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓畸肆,卻偏偏與公主長得像宦芦,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子轴脐,可洞房花燭夜當晚...
    茶點故事閱讀 45,630評論 2 359

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