首頁技術文章正文

主鍵約束是什么意思?如何實現(xiàn)MySQL主鍵約束?

更新時間:2022-08-10 來源:黑馬程序員 瀏覽量:

1660118906562_主鍵約束.jpg


MySQL主鍵約束是一個列或者多個列的組合,其值能唯一地標識表中的每一行,方便在RDBMS中盡快的找到某一行。主鍵約束相當于唯一約束+非空約束的組合,主鍵約束列不允許重復,也不允許出現(xiàn)空值。但每個表最多只允許一個主鍵。主鍵約束的關鍵字是primary key,當創(chuàng)建主鍵的約束時,系統(tǒng)默認會在所在的列和列組合上建立對應的唯一索引。

接下來將演示三種主鍵約束操作:

1.添加單列主鍵

2.添加多列聯(lián)合主鍵

3.刪除主鍵

添加單列主鍵

方法(1):創(chuàng)建單列主鍵有兩種方式,一種是在定義字段的同時指定主鍵,一種是定義完字段之后指定主鍵。添加單列主鍵的語法格式如下:

-- 在 create table 語句中,通過 PRIMARY KEY 關鍵字來指定主鍵。
--在定義字段的同時指定主鍵,語法格式如下:
create table 表名(
   ...
   <字段名> <數(shù)據類型> primary key 
   ...
)

實現(xiàn)代碼如下:

create table emp1(
    eid int primay key,
    name VARCHAR(20),
    deptId int,
    salary double
);

方法(2):在定義字段之后再指定主鍵,語法格式如下:

create table 表名(
   ...
   [constraint <約束名>] primary key [字段名]
);
實現(xiàn)代碼如下:
create table emp2(
    eid INT,
    name VARCHAR(20),
    deptId INT,
    salary double,
    constraint  pk1 primary key(id)
 );

添加多列主鍵(聯(lián)合主鍵)

所謂的聯(lián)合主鍵,就是這個主鍵是由一張表中多個字段組成的。若主鍵是由多個字段組成時,不能直接在字段名后面聲明主鍵約束。一張表只能有一個主鍵,聯(lián)合主鍵也是一個主鍵。
添加多列主鍵的語法格式如下:

create table 表名(
   ...
   primary key (字段1,字段2,…,字段n)
);

實現(xiàn)代碼如下:

create table emp3( 
  name varchar(20), 
  deptId int, 
  salary double, 
  primary key(name,deptId) 
);

主鍵約束不僅可以在創(chuàng)建表的同時創(chuàng)建,也可以在修改表時添加,語法格式如下:

create table 表名(
   ...
);
alter table <表名> add primary key(字段列表);

實現(xiàn)代碼如下:

-- 添加單列主鍵
create table emp4(
  eid int, 
  name varchar(20), 
  deptId int, 
  salary double, 
);
alter table emp4 add primary key(eid);

刪除主鍵約束

一個表中不需要主鍵約束時,就需要從表中將其刪除。刪除主鍵約束的方法要比創(chuàng)建主鍵約束容易的多。刪除主鍵約束的語法格式如下:

alter table <數(shù)據表名> drop primary key;

實現(xiàn)代碼如下:

-- 刪除單列主鍵 
alter table emp1 drop primary key;
 
-- 刪除聯(lián)合主鍵 
alter table emp5 drop primary key;


分享到:
在線咨詢 我要報名
和我們在線交談!