天天看點

MySQL限制——添加主鍵限制(聯合主鍵)、删除主鍵限制

目錄

​​主鍵限制​​

​​添加單列主鍵​​

​​添加多列主鍵(聯合主鍵)​​

​​修改表結構添加主鍵​​

​​删除主鍵限制​​

​​文末資源推薦​​

​​每文一語​​

概念:

限制英文:constraint

限制實際上就是表中資料的限制條件

作用:

表在設計的時候加入限制的目的就是為了保證表中的記錄完整性和有效性,比如使用者表有些列的值(手機号)不能為空,有些列的值(身份證号)不能重複。

主鍵限制(primary key) PK

自增長限制(auto_increment)

非空限制(not null)

唯一性限制(unique)

預設限制(default)

零填充限制(zerofill)

外鍵限制(foreign key) FK

主鍵限制

MySQL主鍵限制是一個列或者多個列的組合,其值能唯一地辨別表中的每一行,友善在RDBMS中盡快的找到某一行。

主鍵限制相當于 唯一限制 + 非空限制 的組合,主鍵限制列不允許重複,也不允許出現空值。

每個表最多隻允許一個主鍵

主鍵限制的關鍵字是:primary key

當建立主鍵的限制時,系統預設會在所在的列和列組合上建立對應的唯一索引。

我們可以對其進行:

添加單列主鍵

添加多列聯合主鍵

删除主鍵

添加單列主鍵

建立單列主鍵有兩種方式,一種是在定義字段的同時指定主鍵,一種是定義完字段之後指定主鍵

文法1:

-- 在 create table 語句中,通過 PRIMARY KEY 關鍵字來指定主鍵。
--在定義字段的同時指定主鍵,文法格式如下:
create table 表名(
   ...
   <字段名> <資料類型> primary key 
   ...
)      
create table emp1(
    eid int primay key,
    name VARCHAR(20),
    deptId int,
    salary double
);      

文法2:

--在定義字段之後再指定主鍵,文法格式如下:
create table 表名(
   ...
   [constraint <限制名>] primary key [字段名]
);      
create table emp2(
    eid INT,
    name VARCHAR(20),
    deptId INT,
    salary double,
    constraint  pk1 primary key(id)
 );      

添加多列主鍵(聯合主鍵)

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

注意:

   1. 當主鍵是由多個字段組成時,不能直接在字段名後面聲明主鍵限制。

   2. 一張表隻能有一個主鍵,聯合主鍵也是一個主鍵

create table 表名(
   ...
   primary key (字段1,字段2,…,字段n)
);      
create table emp3( 
  name varchar(20), 
  deptId int, 
  salary double, 
  primary key(name,deptId) 
);      

修改表結構添加主鍵

有時候,我們面對的是已經建立好的資料表,也就是說資料表的結構已經成形了,那麼此時我們可以通過alter進行修改

alter table <表名> add primary key(字段清單);      
-- 添加單列主鍵
create table emp4(
  eid int, 
  name varchar(20), 
  deptId int, 
  salary double, 
);
alter table emp4 add primary key(eid);      

删除主鍵限制

一個表中不需要主鍵限制時,就需要從表中将其删除。删除主鍵限制的方法要比建立主鍵限制容易的多。

alter table <資料表名> drop primary key;      
-- 删除單列主鍵 
alter table emp1 drop primary key;
 
-- 删除聯合主鍵 
alter table emp5 drop primary key;      

每文一語