久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

mysql主鍵指的是什么意思

149次閱讀
沒有評論

共計 4521 個字符,預計需要花費 12 分鐘才能閱讀完成。

本篇內容介紹了“mysql 主鍵指的是什么意思”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓丸趣 TV 小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

在 mysql 中,主鍵全稱“主鍵約束”,是一個列或者多個列的組合,其值能唯一地標識表中的每一行,通過它可強制表的實體完整性;主鍵的作用是確定該數據的唯一性,主要是用于和其他表的外鍵關聯,以及本記錄的修改與刪除。

mysql 主鍵是什么?

主鍵(PRIMARY KEY),也稱“主鍵約束”。

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)

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

刪除主鍵約束

當一個表中不需要主鍵約束時,就需要從表中將其刪除。刪除主鍵約束的方法要比創建主鍵約束容易的多。

刪除主鍵約束的語法格式如下所示:

ALTER TABLE  數據表名  DROP PRIMARY KEY;

例 5

刪除 tb_emp2 表中的主鍵約束,SQL 語句和運行結果如下。

mysql  ALTER TABLE tb_emp2
 -  DROP PRIMARY KEY;
Query OK, 0 rows affected (0.94 sec)
Records: 0 Duplicates: 0 Warnings: 0

由于主鍵約束在一個表中只能有一個,因此不需要指定主鍵名就可以刪除一個表中的主鍵約束。

“mysql 主鍵指的是什么意思”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注丸趣 TV 網站,丸趣 TV 小編將為大家輸出更多高質量的實用文章!

向 AI 問一下細節

丸趣 TV 網 – 提供最優質的資源集合!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2024-04-09發表,共計4521字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 宝清县| 射洪县| 哈尔滨市| 谷城县| 容城县| 留坝县| 洛南县| 同心县| 晋中市| 卓尼县| 游戏| 武鸣县| 青田县| 顺平县| 开阳县| 广丰县| 台湾省| 丹寨县| 苏尼特左旗| 许昌市| 囊谦县| 淮阳县| 明光市| 耒阳市| 华蓥市| 固安县| 福建省| 道孚县| 锡林郭勒盟| 长泰县| 固始县| 卢氏县| 泉州市| 北宁市| 民权县| 寿阳县| 阿拉尔市| 哈尔滨市| 峨山| 陇南市| 平邑县|