我是小白,剛接觸MySQL不久,現階段正在學習,為此在這裡留下自己的學習筆記。如果有錯誤的地方還請大家見諒,評論或者私發我錯誤的地方哦,謝謝大家,嘿嘿~
上一篇為外鍵多對一,傳送門:多對一
外鍵(foreign key)
引言:
要使兩張表形成關聯,外鍵隻能引用外表中的列的值或使用空值。可以保持資料一緻性,完整性,主要目的是控制存儲在外鍵表中的資料。
如果公共關鍵字在一個關系中是主關鍵字,那麼這個公共關鍵字被稱為另一個關系的外鍵。由此可見,外鍵表示了兩個關系之間的相關聯系。以另一個關系的外鍵作主關鍵字的表被稱為主表,具有此外鍵的表被稱為主表的從表。外鍵又稱作外關鍵字。
解釋資料庫多對多的關系:
比如 一名學生可以同時選修多門課程,一門課程也可以被多名學生選修。
下表,可以把表a拆分成表b
表a表b
s2c為表a中兩張表的中間橋梁。
s2c可以和student産生多對一的關系,也可以和course産生多對一的關系。這樣間接的student表與course表構成了多對多關系。
建立表
建立student表:
create table student(
id int primary key auto_increment,
name varchar(16),
age int
);
建立course表:
create table course(
id int primary key auto_increment,
cname varchar(16),
price int
);
運作截圖
建立s2c表:
create table s2c(
id int primary key auto_increment,
student_id int,
course_id int,
unique key(student_id,course_id),
foreign key(student_id) references student(id)
on update cascade on delete cascade,
foreign key(course_id) references course(id)
on update cascade on delete cascade
);
插入值
插入student值:
insert into student(name,age) values
('恪',27),
('顧',17),
('盛',17),
('停',35),
('原',33);
插入course值:
insert into course(cname,price) values
('draw',800),
('photograp',500),
('math',1000),
('physics',1500),
('write',1200);
插入s2c值(需要用到聯合唯一這個限制條件):
insert into s2c(student_id,course_id) values
(1,1),
(1,3),
(2,2),
(2,5),
(3,4),
(3,5),
(4,1),
(4,5),
(5,3),
(5,5);
s2c表完成了關聯學生表與課程表之間的關聯。
查
整體查詢:
select student.id,name,age,cname,price from student,course,s2c where student.id = s2c.student_id and course.id = s2c.course_id;
注:
select * from student,course,s2c;
單純地查詢三個表的時候重複資料很多,是以需要篩選。像s2c表中student_id就是student表中的id,course_id就是course表中的id,這兩個值的作用是用來關聯兩個student表與course表,并不需要顯示以及反複組合。而三個表中的id也不需要全部顯示。是以需要加條件:
1.僅需要顯示student表中的id,name,age,cname,price。(id需要明确是哪個表中的id,不然系統分不清會報錯。);
2.需要加條件where student.id = s2c.student_id and course.id = s2c.course_id,篩選關聯之後的表。
查詢某個值:
select student.id,name,age,cname,price from student,course,s2c where student.id = s2c.student_id and course.id = s2c.course_id and student.name = '停';
查詢某個值也是加條件查詢的。用and加想要加的條件。
此篇為外鍵多對多。
如果您感覺有用的話,請點贊評論分享收藏哦,非常感謝,好人一生平安!!
祝大家天天開心❀❀❀❀❀❀*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。