日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL主键的理解

發布時間:2024/4/15 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL主键的理解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MySQL主鍵的理解

主鍵(primary?key?)沒有著明確的概念定義,其是索引的一種,并且是唯一性索引的一種,且必須定義為“PRIMARY KEY”,主鍵不能重復,一個表只能有一個主鍵。

Mysql中規定自增列必須為主鍵,在插入時,如果自動增長列沒有輸入值,則插入的值為自動增長后的值;如果輸入的值為0或者null,則插入的值也為自動增長后的值;如果插入某個確定的值,且該值在前面沒有出現過,則可以直接插入。

1. 主鍵一定是唯一性索引,唯一性索引并不一定就是主鍵。?
所謂主鍵就是能夠唯一標識表中某一行的屬性或屬性組,一個表只能有一個主鍵,但可以有多個候選索引。因為主鍵可以唯一標識某一行記錄,所以可以確保執行數據更新、刪除的時候不會出現張冠李戴的錯誤。主鍵除了上述作用外,常常與外鍵構成參照完整性約束,防止出現數據不一致。數據庫在設計時,主鍵起到了很重要的作用。?
主鍵可以保證記錄的唯一和主鍵域非空,數據庫管理系統對于主鍵自動生成唯一索引,所以主鍵也是一個特殊的索引。?

2. 一個表中可以有多個唯一性索引,但只能有一個主鍵。

3. 主鍵列不允許空值,而唯一性索引列允許空值。?

4. 索引可以提高查詢的速度。?
其實主鍵和索引都是鍵,不過主鍵是邏輯鍵,索引是物理鍵,意思就是主鍵不實際存在,而索引實際存在在數據庫中,主鍵一般都要建,主要是用來避免一張表中有相同的記錄,索引一般可以不建,但如果需要對該表進行查詢操作,則最好建,這樣可以加快檢索的速度。?

1、聲明主鍵的方法:

您可以在創建表的時候就為表加上主鍵,如:

CREATE TABLE tbl_name ([字段描述省略...], PRIMARY KEY(index_col_name));

也可以更新表結構時為表加上主鍵,如:

ALTER TABLE tbl_name ADD PRIMARY KEY (index_col_name,…);

/*

創建一個qq表,將qq_id設為主鍵,且沒有對其進行NOT NULl約束

*/

create table qq(

qq_id int(10),

nick_name varchar(255) not null,

primary key (qq_id))

/*

插入一條數據,將qq號設為10000(咱也幻想一下),昵稱設為"simaopig"

*/

INSERT INTO qq( qq_id, nick_name )

VALUES (

'10000', 'simaopig');

2、示例

主鍵被認為是NOT NULLUNIQUE約束最好的結合。如果這些列沒有被明確地定義為NOT NULLMySQL會隱含地定義這些列。

3、主鍵也是索引:

剛才已經說了,主鍵其實也是索引,甚至在MySQL的術語里面“鍵”就等于“索引”,所以“外鍵”一定要先設為“索引”。所以主鍵也應該和索引一樣,既可以作用于單獨的字段,又可以作用于多個字段。

舉個簡的例子吧,我住3單元,501室,我叫小小子,那么只有3單元501室才能在本小區表里面唯一確定我家。因為2單元,501室住著的可能也是個小小子,所以只有兩個字段才能唯一確定我,也就是說可以二者組合作為主鍵。組合的主鍵,每個列都會隱含定義NOT NULL約束,且其二者加在一起被定義了UNIQUE?惟一約束。

/*

創建防火墻表,將host?port組合設為主鍵,注意我沒有將portNOT NULL約束

*/

create table firewall(

host varchar(11) not null,

port smallint(4),

access enum('deny', 'allow') not null,

primary key (host,port))

/*

插入一條新的記錄,沒有啥問題

1 row(s) inserted.

*/

INSERT INTO firewall (

host ,

port ,

access)

VALUES (

'202.65.3.87', '21', 'deny');

總結

以上是生活随笔為你收集整理的MySQL主键的理解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。