数据库原理实验内容2.docx
《数据库原理实验内容2.docx》由会员分享,可在线阅读,更多相关《数据库原理实验内容2.docx(11页珍藏版)》请在冰豆网上搜索。
数据库原理实验内容2
数据库原理实验报告
学院软件学院
专业软件工程
班级13级4班
学号201330611175
姓名黄旺
指导教师
(2015年05月)
姓名:
协作者:
__________教师评定:
实验题目查询数据库
一、实验目的
熟悉SQL语句的基本使用方法,学习如何编写SQL语句来实现查询、删除、更新
1、掌握基本的SELECT查询及其相关子句的使用;
2、掌握复杂的SELECT查询,如多表查询、子查询、连接查询和嵌套查询。
1、掌握基本的DELETE的使用;
1、掌握基本的UPDATE的使用;
二、实验内容和要求
使用SQL查询分析器修改数据表,查询数据,练习查询语句的使用,掌握SELECT语句的完整结构,包括简单查询、嵌套查询、连接查询等基本实现方法,掌握存储查询结果的方法,体会各种查询的异同及相互之间的转换,体会各种查询的执行过程,为简单综合应用打下良好的基础。
三、实验主要仪器设备和材料
1.计算机及操作系统:
PC机,Windows2000/xp;
2.数据库管理系统:
SQLsever2000/2003/2005;
四、实验方法、步骤及结果测试
1、利用查询分析器修改数据表
(1)、用INSERT语句向各个表中插入数据录入2条记录。
录入时注意体会外键约束。
实现代码及截图:
查询分析器执行情况:
SQL语句及执行结果显示
实验结果截图显示(插入数据的表格)
(2)、用UPDATE语句更改student表中数据;
实现代码:
student表更改前的内容截图显示查询分析
updatestudentsetsname='梨花'
wheres_no='00000001';
updatestudentsetsbirthday='1994-01-2312:
34:
12'
wheres_no='00000000';
student表更改后的内容截图显示
(3)、用DELETE语句删除student表中数据;
实现代码:
student表更改前的内容截图显示查询分析
student表更改后的内容截图显示
2、要求用SELECT完成以下查询
2.1简单查询:
(1)、查询全部学生的学号、姓名、性别和出身年月日。
实现代码及查询结果截图:
格式如下
查询分析器执行情况:
SQL语句及执行结果显示
selects.s_no,s.sname,s.sex,s.sbirthday
fromstudentass
查询结果截图显示
(2)、查询全体学生的学号、姓名和年龄
实现代码及查询结果截图:
查询分析器执行情况:
SQL语句及执行结果显示
selects.s_no,s.sname,s.sex,datediff(year,s.sbirthday,getdate())
fromstudentass
查询结果截图显示
(3)、查询院系编号为‘001’(软件学院)的全部学生的学号、姓名、性别和出身年月日。
实现代码及查询结果截图:
查询分析器执行情况:
SQL语句及执行结果显示
selects.s_no,s.sname,s.sex,s.sbirthday
fromstudentass
wheres.dno='000000';
查询结果截图显示
(4)、查询“制药工程”专业(专业代码为‘e’)并且班级代码为‘05’的学生的学号、姓名和出生日期。
实现代码及查询结果截图:
查询分析器执行情况:
SQL语句及执行结果显示
insertintodepartment
values('000003','医学院','鲁行');
insertintospeciality
values('e','000003','制药工程');
insertintoclass
values('e','05','李四');
insertintostudent
values('00000002','李饿','女','1992-03-2403:
34:
32','000003','e','05')
insertintostudent
values('00000003','李好','男','1993-07-2604:
13:
04','000003','e','05')
查询结果截图显示
selects_no,sname,sbirthday
fromstudent
wherespno='e'andclass_no='05';
(5)、查询在‘1990/01/10’以后出生的自动化学院(院系编号为‘002’)学生的学号、姓名、性别和出身年月日。
实现代码及查询结果截图:
查询分析器执行情况:
SQL语句及执行结果显示
selects.s_no,s.sname,s.sex,s.sbirthday
fromstudentass
wheres.dno='002'ands.sbirthday>'1990-01-10';
查询结果截图显示
(6)、查询全部学生的学号、姓名、性别和出身日期结果按照出生日期的升序排列。
实现代码及查询结果截图:
查询分析器执行情况:
SQL语句及执行结果显示
selects_no,sname,sex,sbirthday
fromstudent
orderbysbirthday
查询结果截图显示
2.2连接查询:
(1)、查询全部学生的学号、姓名、性别、所在院系名称和专业名称
实现代码及查询结果截图:
查询分析器执行情况:
SQL语句及执行结果显示
selects_no,sname,sex,dept_name,spname
fromstudent,department,speciality
wherestudent.dno=department.dno
andstudent.spno=speciality.spno
查询结果截图显示
(2)查询选修了课程3(上课编号)的学生的学号、姓名、专业名称和这门课的成绩
实现代码及查询结果截图:
查询分析器执行情况:
SQL语句及执行结果显示
selectstudent.s_no,sname,student.spno,score
fromstudent,student_course,teacher_course
wherestudent.s_no=student_course.s_no
andteacher_o='3'
andstudent.class_no=teacher_course.class_no
查询结果截图显示
(3)、查询学生不及格的情况列出不及格学生的学号、姓名和不及格的课程名称。
实现代码及查询结果截图:
查询分析器执行情况:
SQL语句及执行结果显示
查询结果截图显示
2.3嵌套查询:
(1)、查询没有选修了课程1的学生,列出学生的学号和姓名。
实现代码及查询结果截图:
查询分析器执行情况:
SQL语句及执行结果显示
查询结果截图显示
(2)、查询每门课都是80分以上的学生的学号与姓名。
实现代码及查询结果截图:
查询分析器执行情况:
SQL语句及执行结果显示
查询结果截图显示
五、实验中出现的问题及解决方案
六、思考题
1、连接查询分哪几类?
各有什么特点?
2、进行连接查询时应注意哪些问题?
附:
(1)创建student表
字段名
代码
类型
约束
学号
s_no
char(8)
主键
姓名
sname
char(8)
非空
性别
sex
char
(2)
出生日期
sbirthday
Smalldatetime
学生所在院系编号
dno
char(6)
外键
专业代码
spno
char(8)
外键
班级编码
class_no
char(4)
(2)创建Course表
字段名
代码
类型
约束
课程编号
cno
char(10)
主键
课程名称
cname
char(20)
非空
专业代码
spno
char(8)
外键
课程类型编号
ctno
tinyint
理论学时
lecture
tinyint
实验学时
experiment
tinyint
开课学期
semester
tinyint
课程学分
credit
tinyint
(3)创建student_course表
字段名
代码
类型
约束
学号
s_no
char(8)
主键,与student表中s_no外键关联,级联删除
上课编号
tcid
smallint
主键
学生成绩
score
tinyint
(4)创建teacher表
字段名
代码
类型
约束
教师编号
t_no
char(8)
主键
教师姓名
t_name
char(8)
非空
性别
t_sex
char
(2)
出生日期
t_birthday
smalldatetime
教师所在院系编号
dno
char(6)
外键
职称
tech_title
char(10)
(5)创建系部表(department)
字段名
代码
类型
约束
院系编号
dno
char(6)
主键
院系名称
dept_name
char(20)
非空
院系负责人
header
char(8)
(6)创建专业信息表(speciality)
字段名
代码
类型
约束
专业代码
spno
char(8)
主键
院系编号
dno
char(6)
外键,非空
专业名称
spname
char(20)
非空
(7)创建teacher_course表
字段名
代码
类型
约束
上课编号
tcid
smallint
主键
教师编号
t_no
char(8)
外键
专业代码
spno
char(8)
外键
班级编码
class_no
char(4)
课程编号
cno
char(10)
非空,外键
学期
semester
Char(6)
学年
schoolyear
Char(10)
(8)创建班级表(class)
字段名
代码
类型
约束
专业代码
spno
char(8)
主键,与speciality表中spno外键关联,
班级编码
class_no
char(4)
主键,
班负责人
header
char(8)