懒人摘抄(内容转自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

 
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

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
  • 2254

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

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

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

一个朋友提出这样的问题:表A   ID USER   1 zhangsan  2 lisi3 zhangsan4 jj5 jj6 ee表B   ID GroupName GroupUser  1 IT...

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

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

免费编程入门教程资源推荐搜集,分享给想开始学习程序开发的同学--转自异次元空间

在不久之前,程序员 Sacha Greif 和创业者 Zach Sims 都表达了一个类似的观点:每一个人都应该学习编程。虽然这一个观点有点激进,但确实有一定的道理的。 你不一定需要过于追求对编...

<转自别人的文章>SQL多表连接查询(详细实例)

本文主要列举两张和三张表来讲述多表连接查询。 新建两张表: 表1:student  截图如下: 表2:course  截图如下: (此时这样建表只是为了演示连接SQL语句,当然实际开发...

sqlite 数据类型 全面(转自:http://blog.csdn.net/jin868/article/details/5961263)

一般数据采用的固定的静态数据类型,而SQLite采用的是动态数据类型,会根据存入值自动判断。SQLite具有以下五种数据类型: 1.NULL:空值。 2.INTEGER:带符号的整型,具体取决...

C#知识库(转自csdn).rar

  • 2007-10-10 21:02
  • 50KB
  • 下载

yii2 数据库操作 -转自懒人程序

yii2 数据库操作 2015-01-15   22176     懒人程序 开始使用数据库首先需要配置数据库连接组件,通过添加 db 组件到应用配置实现("基础的" Web 应用是 co...

05查询数据

查询数据 7.1 查询所有列 -- 2.1 查询所有列 SELECT * FROM student;   7.2 查询指定列 -- 2.2 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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