实验二++SQL语句之简单查询

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

实验二 SQL语句之简单查询
一、实验目的
1.掌握 SELECT 语句的基本语法。

2.掌握从表中查询特定行的方法。

3.掌握从表中选择表中若干列和全部列的方法。

4.掌握从表中查询经过计算的值以及为列指定别名的方法。

5.掌握取消重复行和查找满足条件元组的方法。

6.掌握(NOT) BETWEEN AND,LIKE,IN,NULL,通配符的使用方法。

7.掌握 ORDER BY、GROUP BY 的使用方法。

8.掌握聚集函数的使用方法。

二、实验要求
1.应用 SELECT 语句对数据库中数据进行指定条件的简单查询。

2.撰写实验报告,并附实验结果界面及相应实验语句。

三、实验步骤
1.查询 StudentInfo 表中所有的学生的详细信息,SQL 代码如下所示: SELECT *
FROM StudentInfo
注意:SQL 代码可以写在一行中,也可以分成多行,功能不变。

本书中为了提高代码
的可读性,采用更为清晰的多行形式。

2.查询 StudentInfo 表中所有学生的学号、姓名、系别、专业等信息,SQL 代码如下所示:
SELECT sno,sname,depart,major
FROM StudentInfo
3.查询全体学生的学号、姓名及年龄信息,SQL 代码如下所示:
SELECT Sno,Sname,Year(GETDATE())-Year(Birthday)
FROM StudentInfo
注:YEAR(日期)函数的作用是返回日期的年份,GETDATE()函数的作用是返回系统日期和时间。

4.查询全体学生的学号、姓名及年龄信息,并且为年龄列定义别名为“Age”。

SQL代码如下所示:
SELECT Sno,Sname,Year(GETDATE())-Year(Birthday) Age
FROM StudentInfo
5.查询有学生选修的教学计划的教学计划号。

SQL 代码如下所示:
SELECT TeachTaskID FROM SC
6.查询有学生选修的教学计划的教学计划号,并去掉重复行。

SQL 代码如下所示:
SELECT DISTINCT TeachTaskID FROM SC
注意观察以上两条语句执行结果的差别。

7.查询 StudentInfo 表中学号为 201001903029 的学生的详细信息,SQL 代码如下所示:
SELECT *
FROM StudentInfo
WHERE Sno='201001903029'
8.查询出生年月在 1991-03-15 日以后的学生的详细信息,SQL 代码如下所示:
SELECT *
FROM StudentInfo
where Birthday>'1991-03-15'
9.查询成绩在 70-80 之间的学生的学号及教务任务号等信息,SQL 代码如下所示:
SELECT TeachTaskID,Sno,Grade
FROM SC
WHERE Grade BETWEEN 70 and 80
注意:BETWEEN 70 and 80 包含 70 和 80。

10.查询不是计算机系和服装系学生的姓名、性别和专业,SQL 代码如下所示:
SELECT Sname,Sex,Depart,Major
FROM StudentInfo
WHERE Depart not in('计算机系','服装系')
11.查询 2009-2010 学年第 1 学期学生选课的学生号、课程号及成绩,SQL 代码如下所示:
SELECT Sno,SUBSTRING(TeachTaskID ,15,6) as Cno,Grade
FROM SC
WHERE TeachTaskID like '%2009-2010-1%'
注意:SQL Server 2012 中 SUBSTRING 函数的函数原型为:
SUBSTRING ( value_expression ,start_expression , length_expression ) 其作用是返回字符串 value_expression 中从 start_expression 位置开始的 length_expression个字符。

如果 start_expression 小于零,会返回错误;如果 start_expression 大于value_expression 的长度,则返回零长度的表达式。

12.查询名字最后一个字为“娟”,且名字为三个字的学生详细信息,SQL 代码如下
所示:
SELECT *
FROM StudentInfo
WHERE Sname like '__娟'
注意:'__娟'中,娟前为两个下划线,中间没有空格。

在 SQL Server 2012 中,数据类型 nvarchar 是按字符存储的,即 nvarchar(20)能存储 20 个中文字符。

而数据类型 varchar 是按字节存储的,即 varchar(20)能存储 20 个字节长度的字符,而存储中文时 1 个字符占用两个字节,因此只能存储 10 个中文字符。

在 SQL Server 2012 中,通配符“_”表示任意单个字符,不管单个字符是按字符存储还是按字节存储。

因此表 StudentInfo 中 Sname 的数据类型为不管是 nvarchar 还是 varchar,名字最后一个字为“娟”且名字为三个字的表示方法都是“__娟”,即娟前有两个下划线。

13.查询 CourseInfo 表中没有先行课的课程号与课程名称,SQL 代码如下所示:
SELECT cno,cname
FROM CourseInfo
WHERE cpno is null
14.查询在计算机系的女学生的详细信息。

SQL 代码如下所示:
SELECT * FROM StudentInfo
WHERE Depart='计算机系' and Sex='女'
15.查询是教授或者是博士的教师详细信息。

SQL 代码如下所示:
SELECT * FROM TeacherInfo
WHERE ProfTitle ='教授' or Degree ='博士'
16.查询在 2009-2010 年第 2 学期,选修 140176 课程的学生学号及成绩,查询结果按成绩降序排列。

SQL 代码如下所示:
SELECT Sno,Grade FROM SC
WHERE TeachTaskID like '(2009-2010-2)-140176%'
ORDER BY Grade DESC
注意观察 ORDER BY 的作用。

17.查询计算机系学生的总人数,SQL 代码如下所示:
SELECT COUNT(*) as 人数 FROM StudentInfo
WHERE Depart ='计算机系'
18.查询在 2009-2010 年第 2 学期,选修 140176 课程中的最高分,SQL 代码如下所示:
SELECT MAX(Grade) FROM SC
WHERE TeachTaskID like '(2009-2010-2)-140176%'
19.查询各教学计划号及相应的选课人数,SQL 代码如下所示:
SELECT TeachTaskID ,COUNT(Sno) as 人数 FROM SC
GROUP BY TeachTaskID
20.查询在 2009-2010 年第 2 学期选修了 2 门以上课程的学生学号,SQL 代码如下所示:
SELECT Sno FROM SC
WHERE TeachTaskID like '(2009-2010-2)%'
GROUP BY Sno
HAVING COUNT(*)>=2
四、拓展练习
1.用 LIKE 或者 NOT LIKE 查询 StudentInfo 表中学号为 201011002032 的学生的所有
详细信息,编写 SQL 代码。

2.用 IS NULL 或者 IS NOT NULL 查询 CourseInfo 表中存在先行课的课程号与课程名
称,编写 SQL 代码。

3.用 AND 或者 OR 查询 StudentInfo 表中服装系中女生学生的所有详细信息,编写 SQL
代码。

4.用 BETWEEN.....AND 和 NOT BETWEEN.....AND.....查询 StudentInfo 表中学号在
201001903033—201001903051 之间的学生的所有详细信息,编写 SQL 代码。

5.用 IN 和 NOT IN 查询 StudentInfo 表中经济管理系和计算机系的学生的所有详细信
息,编写 SQL 代码。

6.查询 StudentInfo 表中全体的学生的详细信息,查询结果按照所在系升序排列,对同一系的学生按照学号降序排列。

7.查询选修课程数在 2 门及以上的学生的基本信息。

8.查询名字中含有“梅”字的学生基本信息。

相关文档
最新文档