MySQL - 約束

約束

  • 概念:限制表中的數據,保證數據的正確性、有效性和完整性。

約束的分類

單表約束:
 		非空約束:not null,規定某一列的數據不能爲null.
 		唯一約束:unique,規定某一列的數據唯一不重複。
 		主鍵約束:primary key,規定某一列唯一不重複且不能爲null,一般用來作爲一條數據的唯一標識。
 	主鍵的特點:一個表中主鍵只有一個,如果主鍵是int類型,還可以配合auto_increment自動增長。
多表約束:
 		外鍵約束:

添加和刪除單表約束

1、創建表時添加約束(掌握)
	create table 表名(1 數據類型 約束1 約束2 ...,2 數據類型 約束1 約束2 ...,
    ...
    列n 數據類型 約束1 約束2 ...
  );
  例如:
	create table stu(
  	id int primary key auto_increment,
    name varchar(20) not null,
    phone varchar(20) unique
    -- primary key(id,name) -- 複合主鍵/聯合主鍵,id和name共同作爲一個主鍵。
  );
  
2、創建表之後添加約束(瞭解)
-- 添加非空約束
	alter table 表名 modify 列名 數據類型(長度) not null;
-- 刪除非空約束
	alter table 表名 modify 列名 數據類型(長度);
	
-- 添加唯一約束
alter table 表名 modify 列名 數據類型(長度) unique;
-- 刪除唯一約束
alter table 表名 drop index 列名;

-- 添加主鍵約束
alter table 表名 modify 列名 數據類型(長度) primary key;
-- 刪除主鍵約束
alter table 表名 drop primary key;
  • 補充:delete from 表名和truncate table 表名的區別?
1.delete from 表名是一條一條的刪除,屬於DML語句而truncate table 表名是先刪除表,
再創建一張一樣的新表,屬於DDL語句
2.delete from 表名 :刪除所有數據之後再重新添加數據,主鍵自動增長的列的值是接着之前的增
加。truncate table 表名 :刪除表之後創建新表重新添加數據,主鍵自動增長的列的值是從1開始。

外鍵約束

在這裏插入圖片描述

外鍵約束的概念

如果一張表(A表)的某一列的值都來自於另一張表(B表)的主鍵值(或者唯一非空的列的值也可以)。那麼就需要給A表的這一列添加約束,這個約束就叫做外鍵約束。有時候將A表叫做從表/外鍵表,B表叫做主表/主鍵表/引用表

添加外鍵

1. 在創建表時,可以添加外鍵
  create table 表名(
    ......
    constraint 外鍵名稱 foreign key (外鍵列名稱) references 主表名稱(主表列名稱)
  )
2. 刪除外鍵
  ALTER TABLE 表名 DROP FOREIGN KEY 外鍵名稱;
3. 創建表之後,添加外鍵
  ALTER TABLE 表名 ADD CONSTRAINT 外鍵名稱 FOREIGN KEY (外鍵字段名稱) REFERENCES 主表名稱(主表列名稱);

多表關係以及建表原則

一對一:在任意一方添加外鍵指向另一方的主鍵,但是外鍵字段必須添加unique唯一約束。
一對多/多對一:在多的一方添加外鍵指向一的一方的主鍵。
多對多:創建一張中間表,在中間表中至少有兩個字段分別指向多對多雙方的主鍵。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章