Sql语句多表联合查询

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Sql语句多表联合查询

查询所要用到的表

1.course表

USE[学生管理]

GO

/****** Object: Table [dbo].[course] Script Date: 04/28/2015 11:37:12 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

SET ANSI_PADDING ON

GO

CREATE TABLE[dbo].[course](

[课号][nvarchar](20)NOT NULL,

[课名][char](20)NOT NULL,

[类型][char](10)NOT NULL,

[学分][int]NOT NULL,

PRIMARY KEY CLUSTERED

(

[课号]ASC

)WITH (PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,

IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON) ON[PRIMARY]

)ON[PRIMARY]

GO

SET ANSI_PADDING OFF

GO

2.score表

USE[学生管理]

GO

/****** Object: Table [dbo].[score] Script Date: 04/28/2015

11:38:18 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE TABLE[dbo].[score](

[学号][nvarchar](20)NOT NULL,

[课号][nvarchar](20)NOT NULL,

[考试成绩][decimal](9, 2)NULL,

[平时成绩][decimal](9, 2)NULL,

PRIMARY KEY CLUSTERED

(

[学号]ASC,

[课号]ASC

)WITH (PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,

IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON) ON[PRIMARY]

)ON[PRIMARY]

GO

3.学生表

USE[学生管理]

GO

/****** Object: Table [dbo].[student] Script Date: 04/28/2015 11:39:09 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

SET ANSI_PADDING ON

GO

CREATE TABLE[dbo].[student](

[学号][nvarchar](20)NOT NULL,

[姓名][char](20)NOT NULL,

[性别][char](2)NOT NULL,

[出生日期][datetime]NULL,

[来源地][char](50)NULL,

[联系方式][char](12)NULL,

[联系方式][char](12)NULL,

[所属院系][char](20)NULL,

PRIMARY KEY CLUSTERED

(

[学号]ASC

)WITH (PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,

IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON) ON[PRIMARY]

)ON[PRIMARY]

GO

SET ANSI_PADDING OFF

GO

逻辑要求,查询高博文同学的学号,姓名,所选课程以及选修课程的平时成绩和考试成绩

分析,由于要查询的字段分别在student表里,course表里,score表里,因此要用到多表联合查询

第一种方式通过where子句进行连接查询

use学生管理

go

select student.学号,student.姓名,course.课名,course.类型,course.学分,score.平时成绩,score.考试成绩

from dbo.course,dbo.score,dbo.student

where dbo.student.学号=score.学号and course.课号=score.课号and dbo.student.姓名='高博文'

执行结果

第二种通过INNER JOIN 连接查询

use学生管理

go

select student.学号,student.姓名,course.课名,course.类型,course.学分,score.平时成绩,score.考试成绩

from dbo.score

inner join

dbo.course

on dbo.course.课号=score.课号

inner join

dbo.student

on student.学号=score.学号

where dbo.student.姓名='高博文'

表1 inner 表2 on 条件

Inner 表3 on 条件

可以看到这两种查询结果是一样的。

相关文档
最新文档