MySQL主鍵約束
阿新 • • 發佈:2020-11-23
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;