mysql約束以及數據庫的修改
一、約束
1、約束保證數據完整性和一致性。
2、約束分為表級約束和列級約束。
(1)表級約束(約束針對于兩個或兩個以上的字段使用)
(2)列級約束(針對于一個字段使用)
3、約束類型有:
(1)NOT NULL(非空約束)
(2)PRIMARY KEY(主鍵約束)
(3)UNiQUE KEY(唯一約束)
(4)DEFAULT(默認約束)
(5)FOREIGN KEY(外鍵約束)
實現一對一或一對多關系。
4、要求

(1)有參照列為父表,有外鍵列為子表
(2)加上FOREIGN KEY的列為外鍵列
【把my.ini文件里的default-storage-engine=innoDB】
(3)建立provinces表和users表




(4)查看INDEXES


5、外鍵約束參照操作

(1)我們建立一個表結構


(2)加入元素


(3)刪除父表一個元素

父表中的3、C刪除之后,子表1、Tom、3也刪除了
6、表級約束,列級約束

二、修改數據表
一 、添加列




二、添加約束
(示例)
1、添加主鍵約束

mysql>ALTER TABLE users2 ADD CONSTRAINT PK_users2_id PRIMARY KEY (id);
2、添加唯一約束

mysql> ALTER TABLE users2 ADD UNIQUE (username);
3、添加外鍵約束

mysql> ALTER TABLE users2 ADD FOREIGN KEY (pid) REFERENCES provinces (id);
4、添加/刪除默認約束

添加默認:mysql> ALTER TABLE users2 ADD age TINYINT UNSIGNED NOT NULL;
修改默認值:mysql> ALTER TABLE users2 ALTER age SET DEFAULT 15;
刪除默認值:mysql> ALTER TABLE users2 ALTER age DROP DEFAULT;
三、刪除約束
1、刪除主鍵約束

mysql> ALTER TABLE users2 DROP PRIMARY KEY;
2、刪除唯一約束

mysql> SHOW INDEXES FROM users2\G;//顯示INDEXES
*************************** 1. row ***************************
Table: users2
Non_unique: 0
Key_name: username
Seq_in_index: 1
Column_name: username
。。。。。。
*************************** 2. row ***************************
Table: users2
Non_unique: 1
Key_name: pid
Seq_in_index: 1
Column_name: pid
。。。。。。

mysql> ALTER TABLE users2 DROP INDEX username ;
(刪除約束而不是字段)
3、刪除外鍵約束

(1)查看屬性mysql> SHOW CREATE TABLE users2;

users2_ibfk_1為外鍵名字
mysql> ALTER TABLE users2 DROP FOREIGN KEY users2_ibfk_1;(利用外鍵名刪除外鍵)
此時外鍵已被刪除

此時還有索引‘pid’刪除它
ALTER TABLE users2 DROP INDEX pid;
四、修改列定義

mysql> ALTER TABLE users2 MODIFY id SMALLINT NOT NULL FIRST;(將id字段調整到第一的位置)
mysql> ALTER TABLE users2 MODIFY id TINYINT NOT NULL;(可以把SMALLINT強轉成TINYINT,會有溢出)

mysql> ALTER TABLE users2 CHANGE pid p_id TINYINT NOT NULL;(將pid改為p_id)

方法一:mysql> ALTER users2 RENAME users3;
方法二: mysql> RENAME users3 TO users1;(可以對多個數據表更名)
總結:

浙公網安備 33010602011771號