1. 程式人生 > 資料庫 >MySQL主鍵約束

MySQL主鍵約束

1、主鍵約束
特點:
(1)一個表有且只能有一個主鍵約束
(2)主鍵約束意味著,唯一併且非空
(3)主鍵約束名PRIMARY
(4)建立主鍵會自動建立對應的索引,同樣刪除主鍵對應的索引也會刪除

2、在建表的時候如何指定主鍵約束

create table 【資料庫名.】表名稱(
	欄位名1 資料型別  primary key,
	欄位名2 資料型別,
	。。。。
);

例如:

create table test.t_stu(
	sid int primary key,
	sname varchar(20),
	gender char
);
mysql> desc t_stu;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| sid    | int(11)     | NO   | PRI | NULL    |       |
| sname  | varchar(20) | YES  |     | NULL    |       |
| gender | char(1)     | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
insert into t_stu values(1,'張三','男'),(1,'李四','女');#錯誤的
mysql> insert into t_stu values(1,'張三','男'),(1,'李四','女');
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'  違反了主鍵約束
insert into t_stu values(1,'張三','男'),(2,'李四','女');

3、建表後如何指定主鍵約束

alter table 【資料庫名.】表名稱 add primary key(欄位列表);
create table test.t_stu(
	sid int,
	sname varchar(20),
	gender char
);
alter table test.t_stu add primary key(sid);

4、主鍵約束分為兩種:
(1)單列主鍵約束
(2)複合主鍵約束
建表時如何指定複合主鍵約束:

create table 【資料庫名.】表名稱(
	欄位名1 資料型別,
	欄位名2 資料型別,
	。。。。,
	primary key(欄位列表)
);

建表後如何指定複合主鍵約束:

alter table 【資料庫名.】表名稱 add primary key(欄位列表);
create table t_course(
	cid int primary key,
	cname varchar(20)
);

#現在要求sid和cid的組合是主鍵,是唯一的
create table xuanke(
	sid int,
	cid int,
	score int,
	primary key(sid,cid)
);

5、刪除主鍵約束

alter table 【資料庫名.】表名稱 drop primary key;