1. 程式人生 > 其它 >MySQL:約束

MySQL:約束

  • 概念: 對錶中的資料進行限定,保證資料的正確性、有效性和完整性。
  • 分類:
    1. 主鍵約束:primary key
    2. 非空約束:not null
    3. 唯一約束:unique
    4. 外來鍵約束:foreign key

非空約束:not null,值不能為null

1. 建立表時新增約束
	CREATE TABLE stu(
		id INT,
		NAME VARCHAR(20) NOT NULL -- name為非空
	);
2. 建立表完後,新增非空約束
	ALTER TABLE stu MODIFY NAME VARCHAR(20) NOT NULL;

3. 刪除name的非空約束
	ALTER TABLE stu MODIFY NAME VARCHAR(20);

唯一約束:unique,值不能重複

1. 建立表時,新增唯一約束
	CREATE TABLE stu(
		id INT,
		phone_number VARCHAR(20) UNIQUE -- 添加了唯一約束
	
	);
	* 注意mysql中,唯一約束限定的列的值可以有多個null
    2. 刪除唯一約束

	ALTER TABLE stu DROP INDEX phone_number;

3. 在建立表後,新增唯一約束
	ALTER TABLE stu MODIFY phone_number VARCHAR(20) UNIQUE;

主鍵約束:primary key。

1. 注意:
	1. 含義:非空且唯一
	2. 一張表只能有一個欄位為主鍵
	3. 主鍵就是表中記錄的唯一標識

2. 在建立表時,新增主鍵約束
	create table stu(
		id int primary key,-- 給id新增主鍵約束
		name varchar(20)
	);

3. 刪除主鍵
	-- 錯誤 alter table stu modify id int ;
	ALTER TABLE stu DROP PRIMARY KEY;

4. 建立完表後,新增主鍵
	ALTER TABLE stu MODIFY id INT PRIMARY KEY;

5. 自動增長:
	1.  概念:如果某一列是數值型別的,使用 auto_increment 可以來完成值得自動增長

	2. 在建立表時,新增主鍵約束,並且完成主鍵自增長
	create table stu(
		id int primary key auto_increment,-- 給id新增主鍵約束
		name varchar(20)
	);

            3. 刪除自動增長
	ALTER TABLE stu MODIFY id INT;
	4. 新增自動增長
	ALTER TABLE stu MODIFY id INT AUTO_INCREMENT;

外來鍵約束:foreign key,讓表於表產生關係,從而保證資料的正確性。

1. 在建立表時,可以新增外來鍵
	* 語法:
		create table 表名(
			....
			外來鍵列
			constraint 外來鍵名稱 foreign key (外來鍵列名稱) references 主表名稱(主表列名稱)
		);

2. 刪除外來鍵
	ALTER TABLE 表名 DROP FOREIGN KEY 外來鍵名稱;

3. 建立表之後,新增外來鍵
	ALTER TABLE 表名 ADD CONSTRAINT 外來鍵名稱 FOREIGN KEY (外來鍵欄位名稱) REFERENCES 主表名稱(主表列名稱);

    4. 級聯操作
	1. 新增級聯操作
		語法:ALTER TABLE 表名 ADD CONSTRAINT 外來鍵名稱 
				FOREIGN KEY (外來鍵欄位名稱) REFERENCES 主表名稱(主表列名稱) ON UPDATE CASCADE ON DELETE CASCADE  ;
	2. 分類:
		1. 級聯更新:ON UPDATE CASCADE 
		2. 級聯刪除:ON DELETE CASCADE 

資料庫的備份和還原

  1. 命令列:
    • 語法:
      • 備份: mysqldump -u使用者名稱 -p密碼 資料庫名稱 > 儲存的路徑
      • 還原:
        1. 登入資料庫
        2. 建立資料庫
        3. 使用資料庫
        4. 執行檔案。source 檔案路徑
  2. 圖形化工具:

參考來自黑馬,侵刪