国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

mysql快速獲得庫中無主鍵的表實例代碼

2020-01-18 20:40:38
字體:
來源:轉載
供稿:網友

概述

總結一下MySQL數據庫查看無主鍵表的一些sql,一起來看看吧~

1、查看表主鍵信息

--查看表主鍵信息 SELECT t.TABLE_NAME, t.CONSTRAINT_TYPE, c.COLUMN_NAME, c.ORDINAL_POSITION FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS t, INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS c WHERE t.TABLE_NAME = c.TABLE_NAME  AND t.CONSTRAINT_TYPE = 'PRIMARY KEY'  AND t.TABLE_NAME = '<TABLE_NAME>'  AND t.TABLE_SCHEMA = '<TABLE_SCHEMA>';


2、查看無主鍵表

--查看無主鍵表SELECT table_schema, table_name,TABLE_ROWSFROM information_schema.tablesWHERE (table_schema, table_name) NOT IN (SELECT DISTINCT table_schema, table_nameFROM information_schema.columnsWHERE COLUMN_KEY = 'PRI')AND table_schema NOT IN ('sys', 'mysql', 'information_schema', 'performance_schema');


3、無主鍵表

在Innodb存儲引擎中,每張表都會有主鍵,數據按照主鍵順序組織存放,該類表成為索引組織表 Index Ogranized Table

如果表定義時沒有顯示定義主鍵,則會按照以下方式選擇或創建主鍵:

1) 先判斷表中是否有"非空的唯一索引",如果有

如果僅有一條"非空唯一索引",則該索引為主鍵

如果有多條"非空唯一索引",根據索引索引的先后順序,選擇第一個定義的非空唯一索引為主鍵。

2) 如果表中無"非空唯一索引",則自動創建一個6字節大小的指針作為主鍵。

如果主鍵索引只有一個索引鍵,那么可以使用_rowid來顯示主鍵,實驗測試如下:

--刪除測試表DROP TABLE IF EXISTS t1;​--創建測試表CREATE TABLE `t1` ( `id` int(11) NOT NULL, `c1` int(11) DEFAULT NULL, UNIQUE uni_id (id), INDEX idx_c1(c1)) ENGINE = InnoDB CHARSET = utf8;​--插入測試數據INSERT INTO t1 (id, c1) SELECT 1, 1;INSERT INTO t1 (id, c1) SELECT 2, 2;INSERT INTO t1 (id, c1) SELECT 4, 4;​--查看數據和_rowidSELECT *, _rowid FROM t1;


可以發現,上面的_rowid與id的值相同,因為id列是表中第一個唯一且NOT NULL的索引。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 林西县| 广丰县| 雅安市| 宁都县| 江华| 梨树县| 安化县| 靖州| 苍山县| 和平县| 治县。| 英超| 蓬安县| 霍邱县| 元谋县| 平湖市| 安平县| 勐海县| 金沙县| 同江市| 来安县| 合山市| 南江县| 利川市| 肇庆市| 南昌县| 桐柏县| 资中县| 宁波市| 南开区| 贵南县| 资兴市| 秦安县| 新丰县| 阿拉善右旗| 阳春市| 扎鲁特旗| 荣成市| 元谋县| 德江县| 犍为县|