资源描述:
《t-sql查询语句(三):多表查询》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、T-SQL查询语句(三):多表查询T-SQL查询语句(三):多表查询T-SQL查询语句(三):多表查询***************************************SQL查询语句《三》:多表查询(也叫连接查询,此处为基于两个表的连接查询)如果一个查询需要对多个表进行操作就称为连接查询,连接查询的结果集或结果称为表之间的连接.连接查询实际上是通过各个表之间共同列的关联性来查询数据的,它是关系数据库查询最主要的特征.select表1.字段名1,表2.字段名2,...from表1,表2where连接条件SQL-92标准所定义的FROM子句的连接语法格式为:FROM表名
2、join_type表名[ON(连接条件)]连接操作中的ON(连接条件)子句指出连接条件,它由被连接表中的列和比较运算符、逻辑运算符等构成。连接查询分类:1.自连接查询,对同一个表进行连接操作2.内连接查询,<又分为:自然连接、等值连接、不等值连接三种>3.外连接查询,<又分为:左外连接、右外连接、全外连接三种>4.交叉连接查询,也作无条件查询。5.联合查询----------------------------一。自连接查询:一个表自己与自己建立连接称为自连接或自身连接。进行自连接就如同两个分开的表一样,可以把一个表的某一行与同一表中的另一行连接起来。例:查询选学“101”课程
3、的成绩高于“9505201”号学生成绩的所有学生记录,并按成绩从高到低排列。selectx.*fromsclassx,sclassywherex.cno='101'andx.degree>y.degreeandy.sno='9505201'andy.cno='101'orderbyx.degreedesc----------------------------二。内连接(INNERJOIN):内连接是最常用的一种连接方式,它只返回两个数据集合之间匹配关系的那些行.将位于两个互相交叉的数据集合中重叠部分以内的那些数据行连接起来.内连接(INNERJOIN)使用比较运算符进行表间某
4、(些)列数据的比较操作,并列出这些表中与连接条件相匹配的数据行。根据所使用的比较方式不同,内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。语法:select字段名列表from表名[inner]join表名on连接条件[where条件表达式]例:select学生表.学号,学生表.姓名,学生表.班级代号,成绩表.课程代号,成绩表.课程成绩from学生表INNERJOIN成绩表on学生表.学号=成绩表.学号where学生表.班级代号='200201'selectx.sno,x.sname,y.cno,y.degreefromstudentxINNERjo
5、insclassyonx.sno=y.snowherex.sclass='95文秘1'内连接分三种:1、等值连接:所谓等值连接,是指表之间通过“等于”关系连接起来,产生一个临时表,然后对该临时表进行处理后生成最终结果。其查询结果中列出被连接表中的所有列,包括其中的重复列。(1)查询所有学生的sno,cname,degree列:SELECTx.sno,y.cname,x.degreeFROMscorex,courseyWHEREx.cno=y.cno(2)查询“95033”班所选课程的平均分:SELECTy.cno,avg(y.degree)as"平均分"FROMstudentx
6、,scoreyWHEREx.class='95033'andx.sno=y.snogroupbyy.cno(3)查询所有学生的student,score表信息:selectx.*,y.*fromstudentx,scoreywherex.sno=y.sno用等值连接列出authors和publishers表中位于同一城市的作者和出版社:SELECT*FROMauthorsASaINNERJOINpublishersASpONa.city=p.city2、不等值连接:是指表之间的连接关系不是“等于”,而是其它关系。这些运算符包括>、>=、<=、<、!>、!<和<>。(1)查询所有
7、学生的sno,cno,rank列:selectsno,cno,rankfromscore,gradewheredegreebetweenlowandupporderbyrank(2)selectx.sno,x.sname,y.cno,y.degreefromstudentx,scoreywherex.sno!=y.sno3、自然连接:在等值连接中消除重复列就是自然连接。(1)selectx.sno,x.sname,y.cno,y.degreefromstudentx,scorewherex.