mysql的感悟之三
一.在內連接中的等值連接中,適用于兩個表,且兩個表中都有共同的一項,根據這一項來連接兩表中其他的項,但是如果不在where中約束兩表中共同的一項相等,會產生笛卡爾積。
比如select stuname,score from t_student,t_scores where t_student.id=t_sccores.stu_id;
標準的內連接是 select stuname,scores from t_student inner join t_scores on
T_student.id=t_scores.stu_id;
二.左連接會全部顯示左邊的信息,比如 select stuname,score from t_student
Left join t_scores on t_student.id=t_scores.stu_id;
三.只要是幾個表的連接查詢,都要在其中直接連接的兩個表中找到相同的項,作為紐帶,查詢其他的列。
四.表之間的關系包括1對1,1對多,多對多,其中1對1 時比如建立人的表和身份證表,他們是1對1的,在建立身份證表時,表的id號不是自動增長的,并且id即使身份證表的主鍵,也是人表的外鍵,也就是說id不但不能重復,還要一定時人表中存在的,1對1的。
在1對多時,比如人表和銀行卡表,一個人可以有多個銀行卡,但是一個銀行卡只能屬于一個人,所以把人的id放在銀行卡表中,作為人表的外鍵,也就是說,在1對多時,在多的表中存放1的主鍵。
在多對多時,比如學生表和課程表,一個學生可以選多個課,一個課可以有多個學生上課,這就是多對多的情況,需要建立第三張關系表,在關系表中包括學生表和課程表的倆主鍵,這倆主鍵也是關系表的主鍵,