標籤:primary alter 關係 class add 北海道 資料類型 總結 成績
1.多表的建立文法
alter table 從表名 add constraint 外鍵名 foreign key (從表類名) references 主表名(主表列);
準備資料:
CREATE DATABASE one2many;USE one2many;#建立學生表CREATE TABLE stu (stuid VARCHAR(32) PRIMARY KEY,NAME VARCHAR(32),number INT ,adress VARCHAR(32));INSERT INTO stu VALUES (‘s001‘,‘huluwa‘,123456,‘葫蘆山‘);INSERT INTO stu VALUES (‘s002‘,‘automan‘,654321,‘北海道‘);#建立成績表CREATE TABLE score(scoid VARCHAR(32),chinese INT,math INT,english INT,studentid VARCHAR(32) #在成績表中添加一列,存放學生表中學生ID);INSERT INTO score VALUES(‘sc1‘,100,90,90,‘s001‘);INSERT INTO score VALUES(‘sc2‘,90,80,90,‘s002‘);INSERT INTO score VALUES(‘sc3‘,90,70,70,‘s001‘);INSERT INTO score VALUES(‘sc4‘,100,95,95,‘s002‘);
在上述兩個表中,score表中的seudentid類儲存了stu表中學生的資訊,可以通過成績在score表中查詢到studentid後,在stu表中通過studentid的值查到該成績對應的學生的資訊,但此時兩個表並沒有添加外鍵關係,可以隨意從表可以隨意添加符合資料類型的值(這個值在主表中沒有對應的資訊).主表可以隨意刪除學生資訊,刪除後從表將查詢不到,但是對應的考試成績還存在,簡單說就是主表可以隨意刪除資料,從表可以隨意添加資料,這是不符合商務邏輯的
添加主鍵約束
ALTER TABLE score ADD CONSTRAINT stu_score FOREIGN KEY (studentid) REFERENCES stu(stuid);
此時主表隨意刪除資料(從表中未刪除)或從表隨意添加資料(主表中沒有對應的值)時就會報錯.------a foreign key constraint fails
2.多表的查詢
1.
mysql 中多表 總結