主鍵
主鍵(primary key):全稱叫做“主鍵約束”,可以是一列或者多列組合,其值可以唯一標識這條數據。
所以主鍵唯一性,不可以為空。
創建主鍵:
創建表的時候創建主鍵
CREATE TABLE food(id INT PRIMARY KEY,name CHAR(32));
創建主鍵,並且自增長
(就是插入數據時可不指定主鍵字段,一般都為id int類型)
缺陷:
如果刪除之前的數據,不會自動填充補全數字,如把id=3的數據從表中刪除
1
2
4
5
這樣的,中間3會沒有,空的
CREATE TABLE food(id INT PRIMARY KEY AUTO_INCREMENT,name CHAR(32));
添加主鍵:
在已經存在的表當中添加主鍵(字段是已經存在的字段)
ALTER TABLE food ADD PRIMARY KEY (id);
ALTER TABLE food ADD PRIMARY KEY AUTO_INCREMENT (id); 由於版本 問題,當前命令不會報錯,但是無法將主鍵設置自增長。導致添加的 數據主鍵為0
修改為自增長:modify
ALTER TABLE food MODIFY id INT AUTO_INCREMENT PRIMARY EKY;
添加實際上是將一個已經存在的字段修改為主鍵
ALTER TABLE food DROP PRIMARY KEY ;
刪除主鍵只是刪除了主鍵類型,並沒有刪除字段
如果主鍵設置自增長,先通過修改語句去掉自增長,然后在刪除主鍵。
ALTER TABLE food MODIFY id INT; 去掉自增長
ALTER TABLE food DROP PRIMARY KEY ; 刪除主鍵
外鍵
外鍵:(foreign key):全稱叫做“外鍵約束”,主要用來約束一對多關系, 一對多關系當中,多表當中用外鍵來關聯一表當中的主鍵字段。
create table parent(id int primary key auto_increment,name char(32));
create table child(
id int primary key auto_increment,
name char(32),
p_id int,
foreign key(p_id) references parent(id)
);
1、必須先有外鍵字段,再設置外鍵
2、一表必須先創建出來,最好有主鍵;
3、外鍵字段的數據必須一表對應字段(主鍵)有的數據。
多對多關系中,需在關系表創建時設置多個外鍵,對應相應表中的主鍵字段
多對多關系中:
專業:
課程:
關系:
創建多對多關系:
創建專業表
create table major(id int primary key auto_increment,name char(32));
創建課程表
create table course(id int primary key auto_increment,name char(32));
創建關系表
create table major_course(
id int primary key auto_increment, 設置主鍵
major_id int, 設置和專業關聯的字段
course_id int, 設置和課程關聯的字段
foreign key(major_id) references major(id), 使用major_id和major表的 id字段進行外鍵關聯
foreign key(course_id) references course(id)使用course_id和course表 的id字段進行外鍵關聯
);