日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

MySQL的主鍵命名策略相關(guān)

瀏覽:81日期:2023-10-06 13:13:44

最近在梳理數(shù)據(jù)生命周期管理的細(xì)節(jié)時(shí),發(fā)現(xiàn)了一個(gè)小問(wèn)題,那就是MySQL的主鍵命名策略,似乎會(huì)忽略任何形式的自定義命名。

也就意味著你給主鍵命名為idx_pk_id這種形式,在MySQL里面會(huì)統(tǒng)一按照PRIMARY來(lái)處理。

當(dāng)然我們可以在這個(gè)基礎(chǔ)之上做一些拓展和補(bǔ)充。

首先來(lái)復(fù)現(xiàn)下問(wèn)題,我們連接到數(shù)據(jù)庫(kù)test,然后創(chuàng)建表test_data2.

mysql> use testmysql> create table test_data2 (id int ,name varchar(30));Query OK, 0 rows affected (0.05 sec)

接著創(chuàng)建一個(gè)主鍵,命名為idx_pk_id,從執(zhí)行情況來(lái)看,MySQL是正常處理了。

mysql> alter table test_data2 add primary key idx_pk_id(id);Query OK, 0 rows affected (0.02 sec)Records: 0 Duplicates: 0 Warnings: 0

為了進(jìn)一步對(duì)比,我們添加一個(gè)唯一性索引(輔助索引),來(lái)看看它們的差異。

mysql> alter table test_data2 add unique key idx_uniq_name(name);Query OK, 0 rows affected (0.00 sec)Records: 0 Duplicates: 0 Warnings: 0查看主鍵命名方法1:使用show indexes命令

要查看MySQL索引的信息,使用show indexes from test_data2就可以。

mysql> show indexes from test_data2G*************************** 1. row *************************** Table: test_data2 Non_unique: 0 Key_name: PRIMARY Seq_in_index: 1 Column_name: id Collation: A Cardinality: 0 Sub_part: NULL Packed: NULL Null: Index_type: BTREE Comment: Index_comment: *************************** 2. row *************************** Table: test_data2 Non_unique: 0 Key_name: idx_uniq_name Seq_in_index: 1 Column_name: name Collation: A Cardinality: 0 Sub_part: NULL Packed: NULL Null: YES Index_type: BTREE Comment: Index_comment: 2 rows in set (0.00 sec)查看主鍵命名方法2:使用數(shù)據(jù)字典information_schema.statistics

使用命令的方式不夠通用,我們可以使用數(shù)據(jù)字典information_schema.statistics來(lái)進(jìn)行數(shù)據(jù)提取。

mysql> select *from information_schema.statistics where table_schema=’test’ and table_name=’test_data2’ limit 20 G*************************** 1. row ***************************TABLE_CATALOG: def TABLE_SCHEMA: test TABLE_NAME: test_data2 NON_UNIQUE: 0 INDEX_SCHEMA: test INDEX_NAME: PRIMARY SEQ_IN_INDEX: 1 COLUMN_NAME: id COLLATION: A CARDINALITY: 0 SUB_PART: NULL PACKED: NULL NULLABLE: INDEX_TYPE: BTREE COMMENT: INDEX_COMMENT: *************************** 2. row ***************************TABLE_CATALOG: def TABLE_SCHEMA: test TABLE_NAME: test_data2 NON_UNIQUE: 0 INDEX_SCHEMA: test INDEX_NAME: idx_uniq_name SEQ_IN_INDEX: 1 COLUMN_NAME: name COLLATION: A CARDINALITY: 0 SUB_PART: NULL PACKED: NULL NULLABLE: YES INDEX_TYPE: BTREE COMMENT: INDEX_COMMENT: 2 rows in set (0.00 sec)查看主鍵命名方法3:使用show create table 命令

如果查看建表語(yǔ)句,會(huì)發(fā)現(xiàn)主鍵名已經(jīng)被過(guò)濾掉了。

mysql> show create table test_data2G*************************** 1. row *************************** Table: test_data2Create Table: CREATE TABLE `test_data2` ( `id` int(11) NOT NULL, `name` varchar(30) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `idx_uniq_name` (`name`)) ENGINE=InnoDB DEFAULT CHARSET=utf81 row in set (0.00 sec)有的同學(xué)可能想,是不是分別執(zhí)行了create,alter語(yǔ)句導(dǎo)致處理方式有差異,我們可以一步到位,在create語(yǔ)句里面聲明主鍵名。CREATE TABLE `test_data3` ( `id` int(11) NOT NULL, `name` varchar(30) DEFAULT NULL, PRIMARY KEY idx_pk_id(`id`), UNIQUE KEY `idx_uniq_name` (`name`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

這個(gè)時(shí)候查看建表語(yǔ)句,會(huì)發(fā)現(xiàn)結(jié)果和上面一樣,主鍵名都是PRIMARY.

mysql> show create table test_data3G *************************** 1. row *************************** Table: test_data3Create Table: CREATE TABLE `test_data3` ( `id` int(11) NOT NULL, `name` varchar(30) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `idx_uniq_name` (`name`)) ENGINE=InnoDB DEFAULT CHARSET=utf81 row in set (0.00 sec)查看主鍵命名方法4:查看約束命名

當(dāng)然還有多種驗(yàn)證方式,比如我們使用約束的方式來(lái)命名,得到的主鍵名都是PRIMARY.

CREATE TABLE IF NOT EXISTS `default_test` ( `default_test`.`id` SMALLINT NOT NULL AUTO_INCREMENT, `default_test`.`name` LONGTEXT NOT NULL,CONSTRAINT `pk_id` PRIMARY KEY (`id`));查看主鍵命名方法5:使用DML報(bào)錯(cuò)信息

當(dāng)然還有其他多種形式可以驗(yàn)證,比如我們使用DML語(yǔ)句。

mysql> insert into test_data2 values(1,’aa’);Query OK, 1 row affected (0.02 sec)mysql> insert into test_data2 values(1,’aa’);ERROR 1062 (23000): Duplicate entry ’1’ for key ’PRIMARY’

以上的方法都可以讓我們對(duì)這個(gè)細(xì)節(jié)有更深入的理解,當(dāng)然我們可以再深入一些。

查看主鍵命名方法6:官方文檔

官方文檔里面其實(shí)包含了這個(gè)信息,但是不是很明顯。

關(guān)于主鍵的描述,大體內(nèi)容如下,有一條是專門做了聲明,主鍵名為PRIMARY.

一個(gè)表只能有一個(gè)PRIMARY KEY。 PRIMARY KEY的名稱始終為PRIMARY,因此不能用作任何其他類型的索引的名稱。 如果您沒有PRIMARY KEY,而應(yīng)用程序要求您在表中提供PRIMARY KEY,則MySQL將返回沒有NULL列的第一個(gè)UNIQUE索引作為PRIMARY KEY。 在InnoDB表中,將PRIMARY KEY保持較短,以最小化輔助索引的存儲(chǔ)開銷。每個(gè)輔助索引條目都包含對(duì)應(yīng)行的主鍵列的副本。 在創(chuàng)建的表中,首先放置一個(gè)PRIMARY KEY,然后放置所有UNIQUE索引,然后放置非唯一索引,這有助于MySQL優(yōu)化器確定使用哪個(gè)索引的優(yōu)先級(jí),還可以更快地檢測(cè)重復(fù)的UNIQUE鍵。 查看主鍵命名方法7:源代碼

在sql_table.cc 里面對(duì)主鍵名稱做了定義聲明。

const char *primary_key_name='PRIMARY';

順著這條路,可以看到在不同層的實(shí)現(xiàn)中的一些邏輯情況。

MySQL的主鍵命名策略相關(guān)

小結(jié):

通過(guò)這樣的一些方式,我們對(duì)主鍵的命名情況有了一個(gè)整體的認(rèn)識(shí),為什么會(huì)采用PRIMARY這樣一個(gè)命名呢,我總結(jié)了幾點(diǎn):

1)統(tǒng)一命名可以理解是一種規(guī)范

2)和唯一性索引能夠區(qū)別開來(lái),比如一個(gè)唯一性索引非空,從屬性上來(lái)看很相似的,通過(guò)主鍵命名就可以區(qū)分出來(lái),在一些特性和索引使用場(chǎng)景中也容易區(qū)分。

3)主鍵是一個(gè)表索引的第一個(gè)位置,統(tǒng)一命名可以在邏輯判斷中更加清晰,包括字段升級(jí)為主鍵的場(chǎng)景等等。

4)在優(yōu)化器處理中也會(huì)更加方便,提高M(jìn)ySQL優(yōu)化器確定使用哪個(gè)索引的優(yōu)先級(jí)。

以上就是MySQL的主鍵命名策略相關(guān)的詳細(xì)內(nèi)容,更多關(guān)于MySQL 主鍵命名策略的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: MySQL 數(shù)據(jù)庫(kù)
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
嫩草伊人久久精品少妇av杨幂| 国产成人免费精品| 久久99蜜桃| 亚洲在线免费| 亚洲一二三区视频| 久久精品亚洲人成影院| 欧美国产中文高清| 国产精品一国产精品k频道56| 久久国产免费看| 久久爱www成人| 欧美久久天堂| 电影天堂国产精品| 蜜臀久久99精品久久一区二区| 久久亚洲欧洲| 亚洲一区二区三区四区五区午夜| 日韩精品欧美大片| 97在线精品| 欧美日韩视频网站| 亚洲欧美日本国产| 成人看片网站| 国产无遮挡裸体免费久久| 激情综合网站| 视频在线观看一区二区三区| 久久97久久97精品免视看秋霞| 欧美综合另类| 久久久水蜜桃av免费网站| 亚洲精品三级| 日韩av中文字幕一区二区三区| 国产在线|日韩| 精品国内亚洲2022精品成人| 亚洲午夜av| 麻豆国产一区| 精品在线播放| 日韩欧美中文字幕一区二区三区| 精品一区二区三区中文字幕| 亚洲免费福利一区| 亚洲精品1区| 亚洲精品极品少妇16p| 久久精品一区二区三区中文字幕| 日本亚洲视频| 91麻豆精品激情在线观看最新 | 日本精品另类| 久久亚洲电影| 免费人成黄页网站在线一区二区| 日韩一级精品| 婷婷激情综合| 日韩国产欧美| 亚洲精品少妇| 欧美日韩在线播放视频| 日韩有吗在线观看| 国产精品magnet| 日韩中文欧美在线| 日韩精品亚洲专区| 久久裸体视频| 群体交乱之放荡娇妻一区二区| 亚欧洲精品视频在线观看| 亚洲18在线| 美女黄网久久| 国产精品最新| 蜜桃成人av| 欧美色图国产精品| 久久久久久久久久久9不雅视频| 激情视频网站在线播放色| 欧美精品第一区| 99精品一区| 国产精品片aa在线观看| 1024精品一区二区三区| 宅男在线一区| 国产在线看片免费视频在线观看| 国产成人精品亚洲日本在线观看| 国产精品呻吟| 久久久久久美女精品| 亚洲精品在线影院| 国产精品一区二区三区四区在线观看| 亚洲精品一二三区区别| 麻豆视频久久| 国产激情综合| 亚洲成人av观看| 美女网站一区| 日韩激情av在线| 欧美成人基地 | 911亚洲精品| 久久麻豆视频| 久久精品亚洲人成影院 | 国产日韩免费| 99国产精品一区二区| 日韩视频精品在线观看| 老司机免费视频一区二区| 日韩中文影院| 亚洲精品在线a| 水蜜桃久久夜色精品一区| 国产99在线| 亚洲一区二区三区在线免费| 国产一区二区三区四区| 久久精品青草| 日韩欧美2区| 国产欧美在线| 国产专区精品| 波多野结衣久久精品| 在线精品亚洲欧美日韩国产| 精品亚洲美女网站| 日韩一区二区中文| 日韩精品一级| 国产日韩专区| 欧美激情网址| 欧美 日韩 国产一区二区在线视频| 精品国产欧美日韩一区二区三区| 日韩黄色av| 好吊日精品视频| 91精品一区二区三区综合在线爱 | 都市激情国产精品| 欧美激情三区| 国产亚洲精品久久久久婷婷瑜伽| 日韩av一区二区在线影视| 亚洲欧美一区在线| 91久久久精品国产| 久久久久久亚洲精品美女| 国产九一精品| 久久国产精品毛片| 久热re这里精品视频在线6| 精品美女久久| 丁香婷婷久久| 97久久中文字幕| 久久影院资源站| 欧美日韩亚洲一区在线观看| 一区二区三区四区日韩| 91久久中文| 99国产精品视频免费观看一公开| 成人精品国产亚洲| 伊伊综合在线| 老牛国产精品一区的观看方式| 老司机精品久久| 一区在线观看| 亚洲精品乱码| 蜜桃av一区二区在线观看| 国产日韩欧美一区在线| 亚洲日产av中文字幕| 久久久国产精品入口麻豆| 亚洲国产成人二区| 成人av二区| 91精品久久久久久久久久不卡| 久久国产99| 伊人久久亚洲| 久久国内精品自在自线400部| 国产日本久久| 日韩一区亚洲二区| 日韩欧美美女在线观看| 国产一区二区三区不卡视频网站 | 国产亚洲欧美日韩精品一区二区三区 | 亚洲网址在线观看| 7777精品| 成人在线黄色| 国产 日韩 欧美一区| 亚洲综合二区| 久久午夜影院| 日本成人一区二区| 你懂的亚洲视频| 国产中文一区| 国产一区不卡| 日本不卡视频在线观看| 国产精品xxx| 婷婷成人综合| 先锋影音国产一区| 99精品美女| 日韩高清一区在线| 欧美+日本+国产+在线a∨观看| 日韩欧美高清一区二区三区| 成人精品亚洲| 精品国产欧美日韩| 亚洲a级精品| 亚洲主播在线| 久久精品动漫| 精品中文字幕一区二区三区| 首页欧美精品中文字幕| 国模精品一区| 人在线成免费视频| 国产成人黄色| 制服诱惑一区二区| 日韩中文视频| 国产尤物精品| 偷拍欧美精品| 日韩成人精品一区二区| 国产欧美在线| 国产成人黄色| 国产毛片精品久久| 亚洲伦乱视频| 国产精品成人a在线观看| 日本三级亚洲精品| 国产精品久一| 国产精久久一区二区| 在线精品视频一区| 日本中文字幕不卡| 欧美在线日韩| 美腿丝袜亚洲一区| 国产精品nxnn| 欧美少妇精品| 亚洲国产欧美日本视频| 日韩精品一二三四| 丝袜美腿一区二区三区| 久久精品超碰|