教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢/投訴熱線:400-618-4000

MySQL主鍵約束:?jiǎn)瘟泻投嗔兄麈I的添加刪除方法【大數(shù)據(jù)技術(shù)文章】

更新時(shí)間:2023年10月27日18時(shí)00分 來(lái)源:傳智教育 瀏覽次數(shù):

MySQL主鍵約束是一個(gè)列或者多個(gè)列的組合,其值能唯一地標(biāo)識(shí)表中的每一行,方便在RDBMS中盡快的找到某一行。主鍵約束相當(dāng)于 唯一約束 + 非空約束 的組合,主鍵約束列不允許重復(fù),也不允許出現(xiàn)空值。主鍵約束的關(guān)鍵字是:primary key。當(dāng)創(chuàng)建主鍵的約束時(shí),系統(tǒng)默認(rèn)會(huì)在所在的列和列組合上建立對(duì)應(yīng)的唯一索引。

本節(jié)來(lái)講主鍵的添加操作,包含單列主鍵,多列聯(lián)合主鍵和刪除主鍵。

添加單列主鍵

創(chuàng)建單列主鍵有兩種方式,一種是在定義字段的同時(shí)指定主鍵,一種是定義完字段之后指定主鍵。

在定義字段的同時(shí)指定主鍵的語(yǔ)法格式如下:

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

實(shí)現(xiàn):

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

定義完字段之后指定主鍵的語(yǔ)法格式如下:

--在定義字段之后再指定主鍵,語(yǔ)法格式如下:
create table 表名(
   ...
   [constraint <約束名>] primary key [字段名]
);

實(shí)現(xiàn):

create table emp2(
    eid INT,
    name VARCHAR(20),
    deptId INT,
    salary double,
    constraint  pk1 primary key(id)
 );

添加多列主鍵

所謂的聯(lián)合主鍵,就是這個(gè)主鍵是由一張表中多個(gè)字段組成的。當(dāng)主鍵是由多個(gè)字段組成時(shí),不能直接在字段名后面聲明主鍵約束。 一張表只能有一個(gè)主鍵,聯(lián)合主鍵也是一個(gè)主鍵。

添加聯(lián)合主鍵的語(yǔ)法格式如下:

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

實(shí)現(xiàn):

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

通過(guò)修改表結(jié)構(gòu)添加主鍵

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

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

實(shí)現(xiàn):

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

刪除主鍵約束

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

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

實(shí)現(xiàn):

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

0 分享到:
和我們?cè)诰€交談!