gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網
最全最豐富的資訊網站

mysql中主鍵是索引嗎

mysql中主鍵不是索引。主鍵全稱“主鍵約束”,是對表中數據的一種約束,它是表的一個特殊字段,該字段能唯一標識該表中的每條信息;而索引是一種特殊的數據庫結構,由數據表中的一列或多列組合而成,可以用來快速查詢數據表中有某一特定值的記錄。

mysql中主鍵是索引嗎

本教程操作環境:windows7系統、mysql8版本、Dell G3電腦。

MySQL 主鍵

在 MySQL 中,主鍵(PRIMARY KEY)的完整稱呼是“主鍵約束”,是 MySQL 中使用最為頻繁的約束。一般情況下,為了便于 DBMS 更快的查找到表中的記錄,都會在表中設置一個主鍵。

約束是指對表中數據的一種約束,能夠幫助數據庫管理員更好地管理數據庫,并且能夠確保數據庫中數據的正確性和有效性。

主鍵是表的一個特殊字段,該字段能唯一標識該表中的每條信息。例如,學生信息表中的學號是唯一的。

主鍵分為單字段主鍵和多字段聯合主鍵,本節將分別講解這兩種主鍵約束的創建、修改和刪除。

使用主鍵應注意以下幾點:

  • 每個表只能定義一個主鍵。

  • 主鍵值必須唯一標識表中的每一行,且不能為 NULL,即表中不可能存在有相同主鍵值的兩行數據。這是唯一性原則。

  • 一個字段名只能在聯合主鍵字段表中出現一次。

  • 聯合主鍵不能包含不必要的多余字段。當把聯合主鍵的某一字段刪除后,如果剩下的字段構成的主鍵仍然滿足唯一性原則,那么這個聯合主鍵是不正確的。這是最小化原則。

在創建表時設置主鍵約束

在創建數據表時設置主鍵約束,既可以為表中的一個字段設置主鍵,也可以為表中多個字段設置聯合主鍵。但是不論使用哪種方法,在一個表中主鍵只能有一個。下面分別講解設置單字段主鍵和多字段聯合主鍵的方法。

1)設置單字段主鍵

在 CREATE TABLE 語句中,通過 PRIMARY KEY 關鍵字來指定主鍵。

在定義字段的同時指定主鍵,語法格式如下:

<字段名> <數據類型> PRIMARY KEY [默認值]

例 1

在 test_db 數據庫中創建 tb_emp3 數據表,其主鍵為 id,SQL 語句和運行結果如下。

mysql> CREATE TABLE tb_emp3     -> (     -> id INT(11) PRIMARY KEY,     -> name VARCHAR(25),     -> deptId INT(11),     -> salary FLOAT     -> ); Query OK, 0 rows affected (0.37 sec)  mysql> DESC tb_emp3; +--------+-------------+------+-----+---------+-------+ | Field  | Type        | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | id     | int(11)     | NO   | PRI | NULL    |       | | name   | varchar(25) | YES  |     | NULL    |       | | deptId | int(11)     | YES  |     | NULL    |       | | salary | float       | YES  |     | NULL    |       | +--------+-------------+------+-----+---------+-------+ 4 rows in set (0.14 sec)

或者是在定義完所有字段之后指定主鍵,語法格式如下:

[CONSTRAINT <約束名>] PRIMARY KEY [字段名]

例 2

在 test_db 數據庫中創建 tb_emp4 數據表,其主鍵為 id,SQL 語句和運行結果如下。

mysql> CREATE TABLE tb_emp4     -> (     -> id INT(11),     -> name VARCHAR(25),     -> deptId INT(11),     -> salary FLOAT,     -> PRIMARY KEY(id)     -> ); Query OK, 0 rows affected (0.37 sec) mysql> DESC tb_emp4; +--------+-------------+------+-----+---------+-------+ | Field  | Type        | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | id     | int(11)     | NO   | PRI | NULL    |       | | name   | varchar(25) | YES  |     | NULL    |       | | deptId | int(11)     | YES  |     | NULL    |       | | salary | float       | YES  |     | NULL    |       | +--------+-------------+------+-----+---------+-------+ 4 rows in set (0.14 sec)

2)在創建表時設置聯合主鍵

所謂的聯合主鍵,就是這個主鍵是由一張表中多個字段組成的。

比如,設置學生選課數據表時,使用學生編號做主鍵還是用課程編號做主鍵呢?如果用學生編號做主鍵,那么一個學生就只能選擇一門課程。如果用課程編號做主鍵,那么一門課程只能有一個學生來選。顯然,這兩種情況都是不符合實際情況的。

實際上設計學生選課表,要限定的是一個學生只能選擇同一課程一次。因此,學生編號和課程編號可以放在一起共同作為主鍵,這也就是聯合主鍵了。

主鍵由多個字段聯合組成,語法格式如下:

PRIMARY KEY [字段1,字段2,…,字段n]

注意:當主鍵是由多個字段組成時,不能直接在字段名后面聲明主鍵約束。

例 3

創建數據表 tb_emp5,假設表中沒有主鍵 id,為了唯一確定一個員工,可以把 name、deptId 聯合起來作為主鍵,SQL 語句和運行結果如下。

mysql> CREATE TABLE tb_emp5     -> (     -> name VARCHAR(25),     -> deptId INT(11),     -> salary FLOAT,     -> PRIMARY KEY(name,deptId)     -> ); Query OK, 0 rows affected (0.37 sec) mysql> DESC tb_emp5; +--------+-------------+------+-----+---------+-------+ | Field  | Type        | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | name   | varchar(25) | NO   | PRI | NULL    |       | | deptId | int(11)     | NO   | PRI | NULL    |       | | salary | float       | YES  |     | NULL    |       | +--------+-------------+------+-----+---------+-------+ 3 rows in set (0.14 sec)

在修改表時添加主鍵約束

主鍵約束不僅可以在創建表的同時創建,也可以在修改表時添加。但是需要注意的是,設置成主鍵約束的字段中不允許有空值。

在修改數據表時添加主鍵約束的語法格式如下:

ALTER TABLE <數據表名> ADD PRIMARY KEY(<字段名>);

查看 tb_emp2 數據表的表結構,SQL 語句和運行結果如下所示。

mysql> DESC tb_emp2; +--------+-------------+------+-----+---------+-------+ | Field  | Type        | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | id     | int(11)     | NO   |     | NULL    |       | | name   | varchar(30) | YES  |     | NULL    |       | | deptId | int(11)     | YES  |     | NULL    |       | | salary | float       | YES  |     | NULL    |       | +--------+-------------+------+-----+---------+-------+ 4 rows in set (0.14 sec)

例 4

修改數據表 tb_emp2,將字段 id 設置為主鍵,SQL 語句和運行結果如下。

mysql> ALTER TABLE tb_emp2     -> ADD PRIMARY KEY(id); Query OK, 0 rows affected (0.94 sec) Records: 0  Duplicates: 0  Warnings: 0 mysql> DESC tb_emp2; +--------+-------------+------+-----+---------+-------+ | Field  | Type        | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | id     | int(11)     | NO   | PRI | NULL    |       | | name   | varchar(30) | YES  |     | NULL    |       | | deptId | int(11)     | YES  |     | NULL    |       | | salary | float       | YES  |     | NULL    |       | +--------+-------------+------+-----+---------+-------+ 4 rows in set (0.12 sec)

通常情況下,當在修改表時要設置表中某個字段的主鍵約束時,要確保設置成主鍵約束的字段中值不能夠有重復的,并且要保證是非空的。否則,無法設置主鍵約束。

MySQL 索引(Index)

索引是一種特殊的數據庫結構,由數據表中的一列或多列組合而成,可以用來快速查詢數據表中有某一特定值的記錄。

通過索引,查詢數據時不用讀完記錄的所有信息,而只是查詢索引列。否則,數據庫系統將讀取每條記錄的所有信息進行匹配。

可以把索引比作新華字典的音序表。例如,要查“庫”字,如果不使用音序,就需要從字典的 400 頁中逐頁來找。但是,如果提取拼音出來,構成音序表,就只需要從 10 多頁的音序表中直接查找。這樣就可以大大節省時間。

索引的優缺點

索引有其明顯的優勢,也有其不可避免的缺點。

優點

索引的優點如下:

  • 通過創建唯一索引可以保證數據庫表中每一行數據的唯一性。

  • 可以給所有的 MySQL 列類型設置索引。

  • 可以大大加快數據的查詢速度,這是使用索引最主要的原因。

  • 在實現數據的參考完整性方面可以加速表與表之間的連接。

  • 在使用分組和排序子句進行數據查詢時也可以顯著減少查詢中分組和排序的時間

缺點

增加索引也有許多不利的方面,主要如下:

  • 創建和維護索引組要耗費時間,并且隨著數據量的增加所耗費的時間也會增加。

  • 索引需要占磁盤空間,除了數據表占數據空間以外,每一個索引還要占一定的物理空間。如果有大量的索引,索引文件可能比數據文件更快達到最大文件尺寸。

  • 當對表中的數據進行增加、刪除和修改的時候,索引也要動態維護,這樣就降低了數據的維護速度。

使用索引時,需要綜合考慮索引的優點和缺點。

索引可以提高查詢速度,但是會影響插入記錄的速度。因為,向有索引的表中插入記錄時,數據庫系統會按照索引進行排序,這樣就降低了插入記錄的速度,插入大量記錄時的速度影響會更加明顯。這種情況下,最好的辦法是先刪除表中的索引,然后插入數據,插入完成后,再創建索引。

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
亚洲色婷婷久久精品av蜜桃| 伊人影院综合在线| 天堂av在线中文| 色乱码一区二区三区熟女| 不卡的av中文字幕| 天天操天天爱天天爽| 日本三级免费网站| 日韩精品无码一区二区三区免费| 能在线观看的av网站| 男人操女人免费| 韩国视频一区二区三区| 在线观看亚洲色图| 手机在线观看日韩av| 黄色a级片免费看| 欧美一级免费播放| 国产精品人人妻人人爽人人牛| 欧美日韩在线成人| 中文字幕一区二区在线观看视频| 国产精品美女在线播放| 91午夜在线观看| a在线视频观看| 99视频在线免费| 中国一级黄色录像| 国产精品50p| 免费一区二区三区在线观看| 中国一级黄色录像| 天天摸天天碰天天添| 免费在线观看污污视频| 99999精品视频| 一区二区三区四区毛片| 日韩日韩日韩日韩日韩| 亚洲精品www.| 国产成人a亚洲精v品无码| 在线视频日韩欧美| 日本免费一级视频| 亚洲色婷婷久久精品av蜜桃| 九九热在线免费| www.av毛片| 亚洲精品乱码久久久久久动漫| 人人妻人人澡人人爽欧美一区双| 国产视频1区2区3区| 久久久久久免费看| 麻豆md0077饥渴少妇| 国产wwwxx| 能在线观看的av| 久久亚洲精品无码va白人极品| 999精彩视频| 成年人免费大片| 中文字幕无码精品亚洲35| 成人一区二区av| 黄色片免费网址| 在线观看免费的av| jizz欧美激情18| 国产成人久久婷婷精品流白浆| 国产www免费| 激情小视频网站| 人妻激情另类乱人伦人妻| 日本一级淫片演员| 在线播放 亚洲| 午夜啪啪免费视频| 97精品国产97久久久久久粉红| 亚洲天堂2018av| 五月天开心婷婷| 中文字幕视频三区| 国产精品嫩草影院8vv8| 不用播放器的免费av| 性刺激的欧美三级视频| 中文字幕欧美人妻精品一区| 成人在线看视频| 看欧美ab黄色大片视频免费 | 国产91美女视频| 岳毛多又紧做起爽| 每日在线更新av| 污视频免费在线观看网站| 亚洲一区在线不卡| 国产精品久久久久久久av福利| 国产精品一区二区小说| 男插女免费视频| 欧美久久久久久久久久久久久| 美女日批免费视频| 日韩精品视频一二三| 亚洲美女自拍偷拍| 免费网站在线观看视频| 久草资源站在线观看| 中文字幕第88页| 男女爱爱视频网站| 人妻有码中文字幕| 伊人五月天婷婷| 日韩xxxx视频| 日韩一区二区三区不卡视频| 四虎1515hh.com| 久久久久久久中文| 欧美午夜精品理论片| 欧美人与动牲交xxxxbbbb| 精品国产免费av| 亚洲高清在线不卡| 一本大道熟女人妻中文字幕在线| 在线免费看污网站| 无码人妻丰满熟妇区毛片18| 天堂一区在线观看| 18岁网站在线观看| 韩国黄色一级大片| 五月婷婷深爱五月| 成人性生活视频免费看| 污污的视频免费| 成人av一级片| av电影一区二区三区| 美女黄色片视频| 国产夫妻自拍一区| 国产成人精品免费看在线播放| 日本熟妇人妻中出| 日韩精品综合在线| mm131午夜| 日韩不卡的av| 中文字幕亚洲影院| 在线观看高清免费视频| 日日摸日日碰夜夜爽av | wwww.国产| 国产男女无遮挡| 成人av一级片| 免费av观看网址| 欧美成人免费在线观看视频| 992tv快乐视频| 国产又爽又黄ai换脸| 天堂av8在线| 日本精品一区在线| 激情在线观看视频| 日韩欧美中文视频| 久久久成人精品一区二区三区| 五月天丁香花婷婷| 久久久精品视频国产| 中文字幕av导航| 97久久国产亚洲精品超碰热 | 人妻av无码专区| 美女av免费观看| 少妇一晚三次一区二区三区| 老司机午夜免费福利视频| 成人黄色片免费| 国产综合av在线| 无码内射中文字幕岛国片| 亚洲 欧美 另类人妖| 午夜av中文字幕| a级片一区二区| 波多野结衣50连登视频| www黄色av| 91免费视频污| 国产高清www| 91蝌蚪视频在线观看| 嫩草视频免费在线观看| 国产成人亚洲综合无码| 黄色动漫网站入口| 亚洲美女爱爱视频| 又大又硬又爽免费视频| 国内外免费激情视频| www.99在线| 黄色一级大片免费| 日韩有码免费视频| 免费在线精品视频| 苍井空浴缸大战猛男120分钟| 日本一二三四区视频| 人妻无码久久一区二区三区免费| 波多野结衣天堂| 搞av.com| 天堂网成人在线| 精品视频无码一区二区三区| 在线观看18视频网站| 波多野结衣天堂| 99er在线视频| 国产传媒免费观看| 激情六月丁香婷婷| 久久99国产精品一区| 亚洲黄色av网址| 动漫av网站免费观看| 天天做天天爱天天高潮| 成人性做爰aaa片免费看不忠| 日本免费a视频| 日本黄色a视频| 91精品无人成人www| 91成人在线观看喷潮教学| 午夜啪啪福利视频| 欧美性受xxxx黒人xyx性爽| 亚欧在线免费观看| 国产成人av影视| 欧美 国产 日本| 国产乱子伦农村叉叉叉| 丁香六月激情婷婷| 日本国产中文字幕| 只有这里有精品| 欧美国产日韩在线视频| 手机版av在线| www.se五月| 欧美又黄又嫩大片a级| 超碰超碰在线观看| 亚洲最大成人在线观看| 蜜臀视频一区二区三区| 国产精品天天av精麻传媒| 成年人小视频网站| 网站一区二区三区| 久久6免费视频| 吴梦梦av在线|