南华大学计算机科学与技术学院实验报告(2013~2014学年度第二学期)课程名称数据库原理与技术实验名称姓名张涛学号20124350230专业软件工程班级02班地点教师刘征海实验1认识DBMS一.实验题目认识DBMS二.实验要求1.利用管理工具创建数据库、表和表间关系。实验目的和注意事项实验目的:熟悉SQLServerManagementStudio基本操作,进一步理解数据库、表、表间关系的概念。注意事项:创建数据库和数据表时应认真,如果出现错误,应相应地修改结构或删除。三.实验代码(内容)(1)利用SQLServerManagementStudio创建数据库,名称为【学生选课YYXXXX】。其中YY为专业代号,计算机为JS,软件工程为RJ,网络为WL,数媒为SM;XXXX为各位同学的学号中的最后四位(2)在【学生选课YYXXXX】中建立数据表,表的定义如下所示。学生YYXXXX(学号,姓名,性别,出生日期,院系名称,备注);课程YYXXXX(课程号,课程名,先行课,学分);选修YYXXXX(学号,课程号,分数)。要求定义每张表的主码,为属性选择合适的数据类型,决定是否允许为空,为【性别】和【学分】属性定义默认值。(3)定义表之间的关系。(4)分别为表录入几行数据记录,同时练习数据的修改和删除操作2.利用SQL语句创建数据库、表和表间关系实验目的和注意事项实验目的:熟悉创建数据库和数据表的SQL语句。注意事项:输入SQL语句时应注意,语句中均使用西文操作符号。实验内容在SQLServerManagementStudio中新建查询,实现以下操作。(1)用SQL语句创建数据库,名称为“StudentCourseYYXXXX”。其中YYXXXX为各位同学的学号中的最后四位。(2)用SQL语句创建StudentCourseYYXXXX中的3张表,同时指定主码、外码、默认值等。(3)直接在表数据窗口中录入表数据记录。实验2交互式SQL(1)一、数据库单表查询实验目的和注意事项实验目的:掌握单表查询SELECT、FROM、WHERE的用法,特别要掌握比较运算符、逻辑运算符的使用。注意事项:子句WHERE条件表示元组筛选条件;子句HAVING条件表示元组选择条件;子句HAVING条件必须和GROUPBY子句配合使用;注意输入SQL语句时均应使用西文操作符号。实验内容(1)创建查询窗口,设置查询环境。(2)单表查询实验步骤(1)选择要查询的数据库,右击【新建查询】,或者选择系统菜单中的【文件】|【新建】|【使用当前连接查询】命令,或者单击标准工具栏中的【新建查询】按钮,即可新建一个查询窗口。如果查询数据库不是StudentCourseYYXXXX,则可在可用数据库下拉列表中进行选择,或用USE语句调用。(2)在查询窗口中输入SELECT查询语句,对StudentCourseYYXXXX数据库进行查询操作。①查询计算机系全体学生的信息②查询姓“李”的学生的学号和姓名。③查询课程表中先行课为空的课程名。④查询考试成绩有不及格的学生的学号。⑤求选修了C1课程或C2课程的学生的学号及成绩。⑥查询全体计算机系学生的姓名及其年龄。⑦查询计算机系在1986-1987年之间出生的学生的姓名。⑧查询姓“李”的前两个学生的学号和姓名。⑨查询选修了两门以上课程的学生学号与课程数。⑩查询选修课程数大于等于2的学生的学号、平均成绩和选课门数,并按平均成绩降序排列。二、数据库多表连接查询实验目的和注意事项实验目的:理解多表查询的概念;掌握多表查询的SELECT、FROM、WHERE、JOIN子句的用法,特别要求比较内连接、外连接的结果。注意事项:内连接、左外连接和右外连接的含义及表达方法;注意输入SQL语句时均应使用西文操作符号。实验内容(1)创建查询窗口,设置查询环境。(2)多表复杂查询。实验步骤新建查询窗口,选择StudentCourseYYXXXX为当前数据库,输入如下SELECT查询语句并执行,对数据库进行多表连接查询操作。(1)查询选修了【数据库原理】的计算机系的学生学号和姓名。(2)查询每一门课的间接先行课(即先行课的先行课)。(3)查询学生的学号、姓名、选修课程的名称和成绩。(4)查询选修了课程的学生姓名。(5)查询所有学生的信息和所选修的课程。(6)查询已被选修的课程的情况和所有课程的名字。(7)列出学生所有可能的选修情况。(8)查找计算机系的学生选修课程数大于2的学生的姓名、平均成绩和选课门数,并按平均成绩降序排列。实验3交互式SQL(2)数据库嵌套查询和组合查询实验目的和注意事项实验目的:掌握查询中嵌套查询和组合查询的操作方法,进一步加深对SELECT语句的理解。注意事项:子句的使用;注意语句的层次嵌套关系和括号的配对使用问题;注意输入SQL语句时均应使用西文操作符号。实验内容(1)创建查询窗口,设置查询环境。(2)分组查询。(3)统计查询。(4)嵌套查询。实验步骤新建查询窗口,选择StudentCourseYYXXXX为当前数据库,输入如下SELECT查询语句并执行,对数据库进行嵌套查询和组合查询操作。(1)统计选修了【数据库原理】课程的学生人数。(2)查询没有选修【数据库原理】课程的学生信息。(3)查询其他系中比计算机系学生年龄都小的学生。(4)查询被0602001学生或0602002学生所选修的课程的课程号(用UNION组合查询与IN条件查询两种方法实现)。(5)查询0602001学生和0602002学生同时选修的课程的课程号(用INTERSECT组合查询与EXISTS嵌套子查询两种方法实现)。(6)查询被0602001学生选修,但没有被0602002学生所选修的课程的课程号(用EXCEPT组合查询与NOTEXISTS嵌套子查询两种方法实现)。实验4交互式SQL(3)数据的更新实验目的和注意事项实验目的:熟悉插入、修改和删除SQL语句的用法。注意事项:对于INSERT语句,要求理解默认值约束、空值约束在插入时所起的作用。实验内容(1)使用INSERT语句在数据库的表中插入几行记录。(2)使用UPDATA语句修改某个数据。(3)使用DELETE语句删除某行记录。实验步骤(1)新建查询窗口,选择StudentCourseYYXXXX为当前数据库。(2)在已建立StudentCourseYYXXXX数据库和StudentsYYXXXX、CoursesYYXXXX、SCYYXXXX3个表的基础上,向StudentCourseYYXXXX数据库中的表更新数据。①向表StudentsYYXXXX中插入(0601001,赵林,男,1985-09-08,计算机)的记录。②向SCYYXXXX表中添加一个学生的选课记录,学号为0601001,所选的课程号为C2。SC表中有Sno、Cno、Grade这3个列。这里只知道学号和课程号,不知道成绩值。③向表StudentsYYXXXX中插入(0601002,张修雨,default)记录,该记录的数据中default表示默认值‘男’,其他数据表示空值。④用CREATE语句建立表StudentBAK1YYXXXX,包含(与Students的Sno、Sname、Sdept相同)3个字段,然后用INSERTSELECT语句实现向StudentBAK1YYXXXX添加StudentsYYXXXX表中的计算机系学生的学号、姓名、所在系的信息。⑤用SELECT...INTO语句实现把StudentsYYXXXX表中1986年后(包含1986年)出生的学生的学号、姓名存储到一个新表StudentBAK2YYXXXX。⑥将姓名为【赵林】的同学的所在系改为【机电系】,爱好改为【足球】。⑦将选修了课程名为【数据库原理】的学生成绩加5分。⑧将StudentCourseYYXXXX数据库的StudentBAK1YYXXXX表中所有姓赵的同学删除。⑨删除计算机系选修成绩不及格的学生选修记录。⑩将StudentCourseYYXXXX数据库的StudentBAK2YYXXXX表中的所有行删除。四.实验总结实验一要注意创建数据库和数据表时应认真,如果出现错误,应相应地修改结构或删除。输入SQL语句时应注意,语句中均使用西文操作符号;实验二应注意注意group和having以及where的搭配使用的情况;实验三注意注意输入SQL语句时均应使用西文操作符号,子句的使用,注意语句的层次嵌套关系和括号的配对使用问题;实验四注意输入SQL语句时均应使用西文操作符号,对于INSERT语句,要求理解默认值约束、空值约束在插入时所起的作用。注意插入,修改,新建表,删除语句的写法,并且掌握把原表中的数据转存到新表中的语句写法。