1.我们展示多个表的全连接,按照先后顺序,将各个字段安排在同一行,若出现重复字段,则会自动设置(1)(2)诸如此类来划分关系
SELECT * from students,scores #/全连接 笛卡尔积 /;
但是是将每一行的数据相乘,出现冗杂数据(不需要的数据)
2.SELECT * from students,scores where students.SID=scores.SID /*用where对select出来
的内容进行重定向*/
我们这里使用了用where对select出来的内容进行重定向,减少了大量的冗杂信息
3.SELECT students.SID,students.SName,courses.CName,scores.Score
from students,scores,courses
where students.SID=scores.SID and scores.CID=courses.CID
/*使用selec选中多个表中的字段,再使用where对表之间建立明确联系,尤其是在对象表之间建立相同字段的连接*/
/*当出现三张表之后,就是要寻找中立表和另外二者的连接点*/
此时,我们通过使用select在三张表中进行数据的处理,分别取出表中字段名称,用from集成到单表后,开始筛选,这里尤其要注意在where重定向时,我们需要注意,在三个表中,会有一个表拥有其他表都有的单个字段,这样才能建立
这样的关系
4./*下面是双表示例*/
SELECT students.SID,students.SName,scores.Score from students,scores where students.sid=scores.SID
5.这里展示两种连接方式,一个是全连接,直接使用‘,’将二表隔开
且,<1>全连接可以直接使用where来选择,来重定向
<2>而内连接则是使用inner join 将二表连接到一起去,而inner join内部链接的话,就要使用on来代替where在全连接中的作用,给出限制规则,
SELECT * from students ,scores #全连接
/*全连接用where,内连接用on和子句where*/
SELECT * from students INNER JOIN scores#内部链接
SELECT * from students INNER JOIN scores on students.sid=scores.sid
6. SELECT*from students join scores on students.SID=scores.SID where Score>80
而在这里了,我们可以看见,在inner join内部链接中我们也使用了where,显示出来,where更多的是起到筛选的的作用
7.SELECT st.sid,st.SName,c.CName,sc.Score
FROM students st join scores sc
on st.sid = sc.sid join courses c on sc.cid=c.CID
这里就需要一点编程基础了,因为我们使用了面向对象的法则在这里进行命名的简化,以方便使用,命名的简化我们在from时开始简化,所以我们在这里时先使用from进行命名,再去select,这样才能起到简化的作用,当然,现在的开发环境navicat会自动那个提示,也可以不简化,这列给大家提供一个新的方法
FROM students st join scores sc on st.sid = sc.sid
这里是重命名表格,然后将两表通过(inner)join组合到一起,再用on去筛选【重定向字段
这个时候我们就有了initial table,而之后的join courses c on sc.cid=c.CID
则是将courses表格与前两个表格组合成的新表格,建立内连接inner join,再加上on来重定向字段即可