数据库原理实验2数据查询
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程名称数据库原理
实验序号 2
实验项目数据查询
实验地点
实验学时实验类型验证性
指导教师实验员
专业班级
学号姓名
年月日
成绩:A
教师该学生本次实验的内容丰富,完成的操作步骤详细具体,实验结果正确,在实验报告的填写中态度十分严谨,对数据分析有自己的见解。
四、实验过程(实验步骤、记录、数据、分析)
实验准备:在实验一的基础上(包括数据库的建立、定义表和添加表内容)进行实验,下面分别为depts表、students表、courses表、reports表。
一、简单的选择与投影查询
1、无条件查询
1.1查询全体学生的详细记录。这是一个无条件的选
择查询,其命令为:
其命令为:
select * from students
运行结果如右图,显示整张表的内容。
1.2查询全体学生的姓名(Sname)、学号(Sno)、所在系
(dno)。这是一个无条件的投影查询,其命令为:
select sname,ssex
from students
运行结果如右图,显示了表中的三列。
1.3查询全体学生的姓名(Sname)、出生年份及学号
(Sno)。其命令为:
select sno,sname,2017-sage as birth from students
运行结果如右图,显示了三列内容。
1.4查询全体学生的姓名、出生年份和学号,要求用小写
字母表示学号中的字母。其命令为:
select sname,'birth:' title,YEAR(GETDATE())-sage
birthyear,LOWER(sno) lsno
from students
运行结果如右图,显示了四列内容。
1.5查询选修了课程的学生学号。其命令为:
select distinct sno
from reports
运行结果如右图,distinct短语是为了消去查询结果中的重复值。
2、条件查询
(1)比较条件
1.1查询d03系全体学生的学号(Sno)和姓名(Sname)。其命令为:
select sno,sname
from students
where dno='d03'
运行结果如右图,显示了d03系的全体学生姓名与学号。
1.2查询所有年龄在18~22岁(包括18岁和22岁)之间的学生姓名(Sname)及年龄(Sage)。其命令为:
select sno,sage
from students
where sage >= 18 and sage <=20
运行结果如右图,共有5名在18岁到20岁的学生。
(2)谓语条件
2.1查询年龄在18~22岁(包括18岁和22岁)之间的学生姓名(Sname)及年龄(Sage)。其命令为:
select sno,sage
from students
where sage between 18 and 20
运行结果如右图,结果与比较条件的结果一样。
2.2查询年龄不在18-22岁之间的学生姓名(Sname)及年龄(Sage)。其
命令为:
select sno,sage
from students
where sage not between 18 and 20
运行结果如右图,共有2个人不在18岁到20岁之间。
2.3查询系别编号为d01、d02、d03学生的学号(Sno)、姓名(Sname)
和性别(Ssex)。其命令为:
select sno,sname,ssex
from students
where dno='d01' or dno='d02' or dno='d03'
运行结果如右图,共有6个人。
2.4查询系别编号既不是d01、d02,也不是d03的学生的姓名(Sname)
和性别(Ssex)。其命令为:
select sname,ssex
from students
where dno not in('d01','d02','d03')
运行结果如右图,因为没有其他系别的学生,因此查询出来的是空表。
2.5查询所有姓刘的学生的姓名(Sname)、学号(Sno)和性别(Ssex)。其
命令为:
select sname,sno,ssex
from students
where sname like '刘%'
运行结果如右图,只有一个人姓刘。
2.6查询姓“刘”而且全名不多于3个汉字的学生的姓名(sname)和所在
系(dno),其命令为:
select sname,dno
from students
where sname like '刘__'
运行结果如右图,在英文系统中下横线“_”代表一个英文字符,但在支持汉字的数据库系统中下横线“_”也代表一个汉字,所以匹配串“刘”的后面只需要跟2个“_”(下横线)
2.7查询所有不姓刘的学生姓名(Sname)和年龄(Sage)。其命令为:
select sname,sage
from students
where sname not like '刘%'
运行结果如右图,5个人不姓刘。
2.8查询课程名为“DB_设计”的课程号(Cno)和学分(Credits)。其命令为:
select cno,credits
from courses