欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

数据库 实验二 数据库的单表查询和连接查询

程序员文章站 2022-06-23 08:27:02
实验目的1. 掌握无条件查询的使用方法。2. 掌握条件查询的使用方法。3. 掌握库函数及汇总查询的使用方法。4. 掌握分组查询的使用方法。5. 掌握查询的排序方法。6. 掌握连接查询的使用方法。题目:对这个数据库中的表进行以下的查询操作(每一个查询都要给出SQL语句,列出查询结果(可以截图))。(1)查询各位学生的学号、班级和姓名。(2)查询课程的全部信息。(3)查询数据库中有哪些专业班级。(4)查询学时数大于60的课程信息。(5)查询在1986年出....

实验目的

1. 掌握无条件查询的使用方法。

2. 掌握条件查询的使用方法。

3. 掌握库函数及汇总查询的使用方法。

4. 掌握分组查询的使用方法。

5. 掌握查询的排序方法。

6. 掌握连接查询的使用方法。

题目:

对这个数据库中的表进行以下的查询操作(每一个查询都要给出SQL语句,列出查询结果(可以截图))。

(1)查询各位学生的学号、班级和姓名。

(2)查询课程的全部信息。

(3)查询数据库中有哪些专业班级。

(4)查询学时数大于60的课程信息。

(5)查询在1986年出生的学生的学号、姓名和出生日期。

(6)查询三次作业的成绩都在80分(不包括)以上的学号、课程号。

(7)查询姓张的学生的学号、姓名和专业班级。

(8)查询05级的男生信息。

(9)查询没有作业成绩(只要有一门没有成绩就算)的学号和课程号。

(10)查询学号为0538的学生的作业1总分。

(11)查询选修了K001课程的学生人数。

(12)查询数据库*有多少个班级。

(13)查询选修三门以上(含三门)课程的学生的学号和作业1平均分、作业2平均分和作业3平均分。

(14)将学生作业表中的信息按照学号升序排列,如果学号相同,按作业1降序排列。

(15)查询于兰兰的选课信息,列出学号、姓名、课程名。

解析:

(1)查询各位学生的学号、班级和姓名。

SELECT Sno,DeptandClass,Sname
FROM Student

数据库 实验二 数据库的单表查询和连接查询

(2)查询课程的全部信息。

SELECT *
FROM Course

数据库 实验二 数据库的单表查询和连接查询

(3)查询数据库中有哪些专业班级。

SELECT DeptandClass
FROM Student

数据库 实验二 数据库的单表查询和连接查询

(4)查询学时数大于60的课程信息。

SELECT *
FROM Course
WHERE STime>60

数据库 实验二 数据库的单表查询和连接查询

(5)查询在1986年出生的学生的学号、姓名和出生日期。

SELECT Sno,Sname,Birthday
FROM Student
WHERE Birthday like '%1986%'

数据库 实验二 数据库的单表查询和连接查询

(6)查询三次作业的成绩都在80分(不包括)以上的学号、课程号。

SELECT Sno,Cno
FROM Homework
WHERE Score1>80 and Score2>80 and Score3>80

数据库 实验二 数据库的单表查询和连接查询  (无)

(7)查询姓张的学生的学号、姓名和专业班级。

SELECT Sno,Sname,DeptandClass
FROM Student
WHERE Sname like '张%'

数据库 实验二 数据库的单表查询和连接查询

(8)查询05级的男生信息。

SELECT *
FROM Student
WHERE DeptandClass like '%05' and Sex='男'

数据库 实验二 数据库的单表查询和连接查询

(9)查询没有作业成绩(只要有一门没有成绩就算)的学号和课程号。

错误写法:
WHERE Score1 = NULL OR Score2 = NULL OR Score3 = NULL

空值的谓词的一般形式是:列名IS[NOT] NULL;注意:不能写成:列名=NULL;或列名=NOTNULL。

SELECT *
FROM Homework
WHERE Score1 is NULL OR Score2 is NULL OR Score3 is NULL

数据库 实验二 数据库的单表查询和连接查询

(10)查询学号为0538的学生的作业1总分。

SELECT Sum(Score1) as Sum
FROM Homework
WHERE Sno = 538

(11)查询选修了K001课程的学生人数。

SELECT Count(*)as Num
FROM Homework
WHERE Cno = 'K001'

数据库 实验二 数据库的单表查询和连接查询

(12)查询数据库*有多少个班级。

SELECT Count(Distinct DeptandClass) as Num
FROM Student

数据库 实验二 数据库的单表查询和连接查询

(13)查询选修三门以上(含三门)课程的学生的学号和作业1平均分、作业2平均分和作业3平均分。

在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。

数据库 实验二 数据库的单表查询和连接查询

"聚合不应出现在 WHERE 子句中,除非该聚合位于 HAVING 子句或选择列表所包含的子查询中,并且要对其进行聚合的列是外部引用。"

HAVING 子句可以让我们筛选分组后的各组数据。

SELECT Sno,AVG(Score1)as AS1,AVG(Score2)as AS2,AVG(Score3)as AS3
FROM Homework
GROUP BY Sno
Having COUNT(Cno)>=3

数据库 实验二 数据库的单表查询和连接查询

(14)将学生作业表中的信息按照学号升序排列,如果学号相同,按作业1降序排列。

SELECT *
FROM Homework
ORDER BY Sno,Score1 DESC

升序:默认 (或ASC)

降序:DESC

数据库 实验二 数据库的单表查询和连接查询

(15)查询于兰兰的选课信息,列出学号、姓名、课程名。

INNER JOIN 关键字语法

SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name

列名 'Sno' 不明确。

数据库 实验二 数据库的单表查询和连接查询

把语句里相关的列名都加上前缀,可以避免这个问题

报错的主要原因是“显示状态”属于哪个表或哪个结果集不明确

SELECT Student.Sno,Sname,Cname
FROM Homework
INNER JOIN Student
ON Student.Sno=Homework.Sno
INNER JOIN Course
ON Homework.Cno=Course.Cno
WHERE Sname='于兰兰'

有两个INNER JOIN时,FROM后应是连接其他表格的桥梁

数据库 实验二 数据库的单表查询和连接查询

 

附:数据信息表.sql

USE [SCE]
GO
/****** Object:  Table [dbo].[学生作业表]    Script Date: 11/28/2016 14:04:33 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[学生作业表](
	[课程号] [char](10) NOT NULL,
	[学号] [char](10) NOT NULL,
	[作业1成绩] [int] NULL,
	[作业2成绩] [int] NULL,
	[作业3成绩] [int] NULL,
 CONSTRAINT [SC_Prim] 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
SET ANSI_PADDING OFF
GO
INSERT [dbo].[学生作业表] ([课程号], [学号], [作业1成绩], [作业2成绩], [作业3成绩]) VALUES (N'K001      ', N'0433      ', 60, 75, 75)
INSERT [dbo].[学生作业表] ([课程号], [学号], [作业1成绩], [作业2成绩], [作业3成绩]) VALUES (N'K001      ', N'0529      ', 70, 70, 60)
INSERT [dbo].[学生作业表] ([课程号], [学号], [作业1成绩], [作业2成绩], [作业3成绩]) VALUES (N'K001      ', N'0531      ', 70, 80, 80)
INSERT [dbo].[学生作业表] ([课程号], [学号], [作业1成绩], [作业2成绩], [作业3成绩]) VALUES (N'K001      ', N'0591      ', 80, 90, 90)
INSERT [dbo].[学生作业表] ([课程号], [学号], [作业1成绩], [作业2成绩], [作业3成绩]) VALUES (N'K002      ', N'0496      ', 80, 80, 90)
INSERT [dbo].[学生作业表] ([课程号], [学号], [作业1成绩], [作业2成绩], [作业3成绩]) VALUES (N'K002      ', N'0529      ', 70, 70, 85)
INSERT [dbo].[学生作业表] ([课程号], [学号], [作业1成绩], [作业2成绩], [作业3成绩]) VALUES (N'K002      ', N'0531      ', 80, 80, 80)
INSERT [dbo].[学生作业表] ([课程号], [学号], [作业1成绩], [作业2成绩], [作业3成绩]) VALUES (N'K002      ', N'0538      ', 65, 75, 85)
INSERT [dbo].[学生作业表] ([课程号], [学号], [作业1成绩], [作业2成绩], [作业3成绩]) VALUES (N'K002      ', N'0592      ', 75, 85, 85)
INSERT [dbo].[学生作业表] ([课程号], [学号], [作业1成绩], [作业2成绩], [作业3成绩]) VALUES (N'K006      ', N'0531      ', 80, 80, 90)
INSERT [dbo].[学生作业表] ([课程号], [学号], [作业1成绩], [作业2成绩], [作业3成绩]) VALUES (N'K006      ', N'0591      ', 80, 80, 80)
INSERT [dbo].[学生作业表] ([课程号], [学号], [作业1成绩], [作业2成绩], [作业3成绩]) VALUES (N'M001      ', N'0496      ', 70, 70, 80)
INSERT [dbo].[学生作业表] ([课程号], [学号], [作业1成绩], [作业2成绩], [作业3成绩]) VALUES (N'M001      ', N'0591      ', 65, 75, 75)
INSERT [dbo].[学生作业表] ([课程号], [学号], [作业1成绩], [作业2成绩], [作业3成绩]) VALUES (N'S001      ', N'0531      ', 80, 80, 80)
INSERT [dbo].[学生作业表] ([课程号], [学号], [作业1成绩], [作业2成绩], [作业3成绩]) VALUES (N'S001      ', N'0538      ', 60, NULL, 80)
/****** Object:  Table [dbo].[学生表]    Script Date: 11/28/2016 14:04:33 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[学生表](
	[学号] [char](10) NOT NULL,
	[姓名] [char](20) NOT NULL,
	[性别] [char](2) NOT NULL,
	[专业班级] [char](50) NOT NULL,
	[出生日期] [date] NOT NULL,
	[联系电话] [char](15) 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
INSERT [dbo].[学生表] ([学号], [姓名], [性别], [专业班级], [出生日期], [联系电话]) VALUES (N'0433      ', N'张艳                ', N'女', N'生物04                                            ', CAST(0x0D110B00 AS Date), N'               ')
INSERT [dbo].[学生表] ([学号], [姓名], [性别], [专业班级], [出生日期], [联系电话]) VALUES (N'0496      ', N'李越                ', N'男', N'电子04                                            ', CAST(0x680D0B00 AS Date), N'13812902331    ')
INSERT [dbo].[学生表] ([学号], [姓名], [性别], [专业班级], [出生日期], [联系电话]) VALUES (N'0529      ', N'赵欣                ', N'男', N'会计05                                            ', CAST(0x4D0D0B00 AS Date), N'13502222908    ')
INSERT [dbo].[学生表] ([学号], [姓名], [性别], [专业班级], [出生日期], [联系电话]) VALUES (N'0531      ', N'张志国              ', N'男', N'生物05                                            ', CAST(0x0A110B00 AS Date), N'13312567890    ')
INSERT [dbo].[学生表] ([学号], [姓名], [性别], [专业班级], [出生日期], [联系电话]) VALUES (N'0538      ', N'于兰兰              ', N'女', N'生物05                                            ', CAST(0x650D0B00 AS Date), N'13312004030    ')
INSERT [dbo].[学生表] ([学号], [姓名], [性别], [专业班级], [出生日期], [联系电话]) VALUES (N'0591      ', N'王丽丽              ', N'女', N'电子04                                            ', CAST(0x820D0B00 AS Date), N'13320809766    ')
INSERT [dbo].[学生表] ([学号], [姓名], [性别], [专业班级], [出生日期], [联系电话]) VALUES (N'0592      ', N'王海强              ', N'男', N'电子04                                            ', CAST(0x3E110B00 AS Date), N'               ')
/****** Object:  Table [dbo].[课程表]    Script Date: 11/28/2016 14:04:33 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[课程表](
	[课程号] [char](10) NOT NULL,
	[课程名] [char](50) NOT NULL,
	[学分数] [float] NOT NULL,
	[学时数] [int] NOT NULL,
	[任课老师] [char](20) 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
INSERT [dbo].[课程表] ([课程号], [课程名], [学分数], [学时数], [任课老师]) VALUES (N'K001      ', N'计算机图形学                                      ', 2.5, 40, N'胡晶晶              ')
INSERT [dbo].[课程表] ([课程号], [课程名], [学分数], [学时数], [任课老师]) VALUES (N'K002      ', N'计算机应用基础                                    ', 3, 48, N'任泉                ')
INSERT [dbo].[课程表] ([课程号], [课程名], [学分数], [学时数], [任课老师]) VALUES (N'K006      ', N'数据结构                                          ', 4, 64, N'马跃先              ')
INSERT [dbo].[课程表] ([课程号], [课程名], [学分数], [学时数], [任课老师]) VALUES (N'M001      ', N'政治经济学                                        ', 4, 64, N'孔繁新              ')
INSERT [dbo].[课程表] ([课程号], [课程名], [学分数], [学时数], [任课老师]) VALUES (N'S001      ', N'高等数学                                          ', 3, 48, N'赵晓尘              ')
/****** Object:  Default [DF__学生表__性别__0519C6AF]    Script Date: 11/28/2016 14:04:33 ******/
ALTER TABLE [dbo].[学生表] ADD  DEFAULT ('男') FOR [性别]
GO
/****** Object:  Check [Score_Chk1]    Script Date: 11/28/2016 14:04:33 ******/
ALTER TABLE [dbo].[学生作业表]  WITH CHECK ADD  CONSTRAINT [Score_Chk1] CHECK  (([作业1成绩]>=(0) AND [作业1成绩]<=(100)))
GO
ALTER TABLE [dbo].[学生作业表] CHECK CONSTRAINT [Score_Chk1]
GO
/****** Object:  Check [Score_Chk2]    Script Date: 11/28/2016 14:04:33 ******/
ALTER TABLE [dbo].[学生作业表]  WITH CHECK ADD  CONSTRAINT [Score_Chk2] CHECK  (([作业2成绩]>=(0) AND [作业2成绩]<=(100)))
GO
ALTER TABLE [dbo].[学生作业表] CHECK CONSTRAINT [Score_Chk2]
GO
/****** Object:  Check [Score_Chk3]    Script Date: 11/28/2016 14:04:33 ******/
ALTER TABLE [dbo].[学生作业表]  WITH CHECK ADD  CONSTRAINT [Score_Chk3] CHECK  (([作业3成绩]>=(0) AND [作业3成绩]<=(100)))
GO
ALTER TABLE [dbo].[学生作业表] CHECK CONSTRAINT [Score_Chk3]
GO

 

本文地址:https://blog.csdn.net/weixin_43673589/article/details/110674285

相关标签: 数据库