MySQL建表約束

MySQL建表約束

一、主鍵約束

1、作用:它能夠唯一確定一張表中的一條記錄,也就是我們通過某個字段添加約束,就可以使得該字段不重複且不爲空。
	create table user(
		id int primary key,
		name varchar(20)
		);

使用peimary key 修飾後,插入(insert) id就不能爲空和重複了。

2、多個數據加主鍵約束

聯合約束:聯合約束可以在最後添加上primary key(value1,value2)

	create table user(
		id int primary key,
		name varchar(20),
		primary key (id,name)
		);

聯合主鍵和單個主鍵一樣,任何一個數據都不能爲空。但只有當聯合主鍵裏所有鍵都重複纔不能重複。

二、自增約束

1、作用:自增約束和主鍵約束primary key 搭配在一起可以自動幫我們輸入並增加數據值
	create table user(
 			 id int primary key auto_increment,
 			 name varchar(20),
 			  );

因此當我們輸入
insert into user (name) values(‘張三’);
時,數據表自動變成了。 1 張三

三、唯一約束

作用:約束脩飾的字段的值不可以重複。(可以爲空)
	create table user(
		id int,
		name varchar(20)  ,
		unique(name),
		);

因此name不能重複。如果使用unique(name,id)則表示這兩個鍵在一起不重複就行。

四、非空約束

作用:修飾的字段不能爲空NULL。
	create table user(
	id int,
	name varchar(20) not null
	);

此時name不能爲空。

五、默認約束

作用:插入字段的時候,如果沒有傳值,就會使用默認值
	create table user
		id int,
		name varchar(20),
		age int default 10
		);

此時,使用
insert into user(id,name) values(‘1’,‘張三’);
會發現,並沒有給age傳值,但表爲 1 張三 10

六、 外鍵約束

涉及到兩個表:父表,子表(主表,副表)。
創建班級表:
	create table classes(
		id int primary key,
		name varchar(20),
		);
創建學生表:
	create table students(
		id int primary key,
		name varchar(20),
		class_id int,
		foreign key(class_id)  references classes(id)
		);
		
		
	insert int (name) classes values(1,'一班');	
	insert int (name)classes  values(3,'二班');
	insert int (name) classes values(4,'三班');
	insert int (name) classes values(4,'四班');   
			
	insert into student values (1001,'張三',1);
	insert into student values (1002,'李四',5);//此時會報錯。
外鍵約束作用:
1.主表classes中沒有的數據值,在副標(子表)中,是不可以使用的
2.主表中的記錄被副表引用,是不可刪除的。

七、 如果說我們建表時忘記創建約束了,怎麼辦?

	create table user(
		id int,
		name varchar(20),
		);

1、添加約束

	alter table user add primary key(id);

2、刪除約束

	alter table user drop primary key;

注意:刪除指定字段約束是:(加上index 與字段名)

	alter tabe user drop index name;		

3、使用modify修改字段添加約束

	alter tabll user modify id int primary key;				
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章