当前位置:文档之家› 实验4 SQL语句之简单查询

实验4 SQL语句之简单查询

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

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

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

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

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

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

7.掌握ODER 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.查询名字中含有“梅”字的学生基本信息。

相关主题