MySQL數據庫——外鍵約束詳解



#什么是外鍵約束 #一張表中的某個字段引用另一個表的主鍵 #主表: 約束別人 #副表/從表: 使用別人的數據,被別人約束 -- 已有表增加外鍵語法 ALTER TABLE 從表 ADD [CONSTRAINT] [外鍵約束名稱] FOREIGN KEY (外鍵字段名) REFERENCES 主表(主鍵字段名); # 一對多關系時,一般將多的一方作為從表,並在從表上添加外鍵約束 -- studentcourse(從表)上建立與student(主表)的外鍵約束 ALTER TABLE studentcourse ADD CONSTRAINT Stu_StuCourse_fk FOREIGN KEY(student_id)REFERENCES student(id); -- studentcourse(從表)上建立與course(主表)的外鍵約束 ALTER TABLE studentcourse ADD CONSTRAINT Course_StuCourse_fk FOREIGN KEY(course_id)REFERENCES course(id); -- course(從表)上建立與teacher(主表)的外鍵約束
ALTER TABLE course ADD CONSTRAINT Teacher_Course_fk FOREIGN KEY(teacher_id)REFERENCES teacher(id);

#注意事項:
-- 1外鍵約束字段的數據類型、大小必須一致否則報1215 Cannot add the foreign key constraint -- 2建表時,創建外鍵約束操作不當,可能會自動創建無關索引 -- 3無關索引可能會對外鍵約束造成影響,導致無法正確的插入外鍵約束,嘗試刪除索引
-- 4從表字段加上唯一約束后與主表形成一對一關系
-- 5空表時添加外鍵約束

-- 刪除外鍵約束
ALTER TABLE course DROP FOREIGN KEY 外鍵約束名;
-- 創建索引語法 CREATE INDEX indexName ON table_name (column_name) -- 更改索引語法 ALTER TABLE tableName ADD INDEX indexName(columnName) -- 刪除索引語法 DROP INDEX indexName ON course; -- 刪除course上的無關索引 DROP INDEX teacher_id ON course; -- 刪除studentcourse上的索引 DROP INDEX cid_ref_scid_fk ON studentcourse;

添加外鍵約束后的表結構

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM