懒人摘抄(内容转自CSDN资源中教程)-数据查询05-表的连接查询

原创 2007年09月19日 09:49:00

表的连接查询

    在数据查询中,经常涉及到提取两个或多个表的数据,这就需要使用表的连接来实现若干个表数据的联合查询。

在一个查询中,当需要对两个或多个表连接时,可以指定连接列,在WHERE子句中给出连接条件,在FROM子句中指定要连接的表,其格式如下:

SELECT 列名1,列名2

FROM 1,表2

WHERE 连接条件

对于连接的多个表通常存在公共列,为了区别是哪个表中的列,在连接条件中通过表名前缀指定连接列,例如,teacher.tno表示teacher表的tno列,student.sno表示student表的sno列,由此来区别连接列所在的表。

5.14查询所有学生的snamecnodegree列。

SELECT student.sname,score.cno,score.degree

FROM student,score

WHERE student.sno=score.sno

本例执行结果如下:

sname    cno        degree              

-------- ---------- -----------

陆君       3-245      86

匡明       3-245      75

王芳       3-245      68

陆君       3-105      92

匡明       3-105      88

王芳       3-105      76

李军       3-105      64

王丽       3-105      91

曾华       3-105      78

李军       6-166      85

王丽       6-166      79

曾华       6-166      81

SQL为了简化输入,允许在查询中使用表的别名,以缩写表名,我们可以在FROM子句中为表定义一个临时别名,然后在查询中引用。

    根据连接条件分为等值连接和非等值连接。所谓等值连接,是指表之间通过“等于”关系连接起来,产生一个连接临时表,然后对该临时表进行处理后生成最终结果。

5.15查询所有学生的snocnamedegree列。

SELECT x.sno,y.cname,x.degree

FROM score x,course y

WHERE x.cno=y.cno

本例执行结果如下:

sno   cname               degree  

----- ---------------- --------

103   操作系统             86

105   操作系统             75

109   操作系统             68

103   计算机导论           92

105   计算机导论           88

109   计算机导论           76

101   计算机导论           64

107   计算机导论           91

108   计算机导论           78

101   数字电路             85

107   数字电路             79

108   数字电路             81

5.16查询95033”班所选课程的平均分。

SELECT y.cno,avg(y.degree)AS '平均分'

FROM student x,score y

WHERE x.sno=y.sno and x.class='95033'

GROUP BY y.cno

本例执行结果如下:

cno        平均分                                     

---------- --------------

3-105      77.666666

6-166      81.666666

所谓非等值连接,是指表之间的连接关系不是“等于”,而是其他关系。通过指定的非等值关系将两个表连接起来的,产生一个连接临时表,然后对该临时表进行处理后生成最终结果。

5.17假设使用如下命令建立了一个grade的表:

CREATE TABLE grade(low int,upp int,rank char(1))

INSERT INTO grade VALUES(90,100,'A')

INSERT INTO grade VALUES(80,89,'B')

INSERT INTO grade VALUES(70,79,'C')

INSERT INTO grade VALUES(60,69,'D')

INSERT INTO grade VALUES(0,59,'E')

查询所有学生的nocnorank列:

SELECT sno,cno,rank

FROM score,grade

WHERE degree between low and upp

ORDER BY rank

本例执行结果如下:

sno   cno        rank

----- ---------- ----

103   3-105      A

107   3-105      A

103   3-245      B

105   3-105      B

101   6-166      B

108   6-166      B

105   3-245      C

109   3-105      C

108   3-105      C

107   6-166      C

109   3-245      D

101   3-105      D

在数据查询中有时需要将同一个表进行连接,这种连接称之为自连接,进行自连接就如同两个分开的表一样,可以把一个表的某行与同一表中的另一行连接起来。

5.18查询选学“3-105”课程的成绩高于“109”号学生成绩的所有学生记录,并按成绩从高到低排列。

SELECT x.cno,x.sno,x.degree

FROM score x,score y

WHERE x.cno='3-105' and x.degree>y.degree and y.sno='109' and y.cno='3-105'

ORDER BY x.degree DESC

本例执行结果如下:

cno        sno   degree        

---------- ----- -----------

3-105      103   92

3-105      107   91

3-105      105   88

3-105      108   78

5.19查询成绩高于学号“109”的课程号“3-105”的成绩的所有记录,并按成绩从低到高排列。

SELECT x.cno,x.sno,x.degree

FROM score x,score y

WHERE x.degree>y.degree and y.sno='109' and y.cno='3-105'

ORDER BY x.degree

本例执行结果如下:

cno        sno   degree              

---------- ----- -----------

3-105      108   78

6-166      107   79

6-166      108   81

6-166      101   85

3-245      103   86

3-105      105   88

3-105      107   91

3-105      103   92

 

【黑马Android】(05)短信/查询和添加/内容观察者使用/子线程网络图片查看器和Handler消息处理器/html查看器/使用HttpURLConnection采用Post方式请求数据/开源项目

备份短信和添加短信 操作系统短信的uri: content://sms/
  • waldmer
  • waldmer
  • 2016年04月13日 08:15
  • 1371

sqlite中如何查询数据库中存在的所有表?(转自:http://topic.csdn.net/u/20081231/16/6aee6233-32c2-4f20-a3d7-0cb154974ce4.)

sqlite中如何查询数据库中存在的所有表? 请指教!!! 官方文档就有。 http://www.sqlite.org/faq.html (7) How do I list all tab...
  • lslxdx
  • lslxdx
  • 2011年11月06日 15:56
  • 2409

Oracle体系结构 转自: http://blog.csdn.net/truexf/archive/2006/07/05/881726.aspx

第一篇 Oracle架构总览先让我们来看一张图这张就是Oracle 9i的架构全图。看上去,很繁杂。是的,是这样的。现在让我们来梳理一下:一、数据库、表空间、数据文件1.数据库数据库是数据集合。Ora...

你应该关注的资源(转自CSDN)

http://www.microsoft.com/china (微软中文网站,有微软的最新活动、最新介绍) http://www.microsoft.com/china/msdn (微软中文...
  • gws1229
  • gws1229
  • 2014年07月31日 10:28
  • 371

MySQL数据库学习05-查询数据:单表查询

一、基本查询语句 MySQL从数据表中查询数据的基本语句为select语句,格式如下:SELECT *|字段列表 FROM 表1,表2,... WHERE 表达式 G...

win7安装Qt4.8.5 For Windows 最详细的教程,附带所有安装文件-- 转自zgj_today的csdn空间

http://m.blog.csdn.net/blog/yhc13429826359/37735865 2014-7-13阅读148 评论0     为了安装qt4.8.6,鼓捣了...

win7安装Qt4.8.5 For Windows 最详细的教程,附带所有安装文件-- 转自zgj_today的csdn空间

为了安装qt4.8.6,鼓捣了好几天,还是安装错误,百度的安装教程也看了很多,结果还是不行,为了学QT还不能安装5.0的,最后在群里请教才知道是Qt4.8.5以后的minGW版本要是4.4以上,只好安...

win7安装Qt4.8.5 For Windows 最详细的教程,附带所有安装文件-- 转自zgj_today的csdn空间

为了安装qt4.8.6,鼓捣了好几天,还是安装错误,百度的安装教程也看了很多,结果还是不行,为了学QT还不能安装5.0的,最后在群里请教才知道是Qt4.8.5以后的minGW版本要是4.4以上,只好安...

如何用eclipse将数据库oracle数据相连接,实现查询数据库中的信息以及更改添加表中内容

如何用eclipse将数据库oracle数据相连接,实现查询数据库中的信息以及更改添加表中内容。 非常灵活易操作以及更改...

分组查询统计数据 再连接字段修改另一个字段的内容(临时表temporary 和 视图view)

一个朋友提出这样的问题:表A   ID USER   1 zhangsan  2 lisi3 zhangsan4 jj5 jj6 ee表B   ID GroupName GroupUser  1 IT...
  • life169
  • life169
  • 2011年03月12日 09:33
  • 1816
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:懒人摘抄(内容转自CSDN资源中教程)-数据查询05-表的连接查询
举报原因:
原因补充:

(最多只允许输入30个字)