您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 实验--数据库2011
实验一了解SQLSERVER(2学时)一、实验目的与要求1、熟悉SQLSERVER的实验环境2、初步认识SQLSERVER的常用管理工具二、实验内容1、服务器管理(ServiceManager)2、运行运行SQLServer3、企业管理器(EnterpriseManager)4、查询分析器(QueryAnalyzer)实验二DDL实验(6学时)一、实验目的与要求掌握SQLSERVER的DDL功能二、实验内容1、创建SC;student;course表2、输入课本中该三个表的数据3、注意主码、外码设计4、修改表SC,先增加一列属性,属性名为“教师”,CHR(8);然后把该属性更改为数值型,宽度5;最后将该属性列删除。5、创建表class(clnochr(5),specialitychr(20),inyearchr(5),numberint);创建完删除该表。6、索引的创建、删除和修改,将课堂讲解的例子进行实现。注意索引类型的选择。(1)在Student表的Sname(姓名)列上建立一个聚簇索引(2)删除Student表的Stusname索引实验三数据查询(8学时)一、实验目的与要求1、掌握SELECT的基本使用格式,能使用SQLServer对表的查询。2、掌握常用聚集函数的使用。二、实验内容1、查询学生的姓名、性别、年龄。SelectSname,Ssex,SageFROMstudent;2、查询每门课程学生成绩的最高分。SELECTMAX(GRADE)FROMSCGROUPBYCNO;3、统计每个学生选修的课程门数。Selectcount(cno)fromscgroupbysno;4、查询姓李的学生信息。SELECT*FROMSTUDENTWHERESnameLIKE’李%’;5、查询成绩及格学生的姓名、学号以及课程名及分数。Selectdistinctstudent.Sname,student.Sno,course.Cname,sc.GradeFromstudent,course,scWherestudent.sno=sc.snoandcourse.cno=sc.cnoandsc.grade=60;6、查询年龄大于等于19岁学生的成绩。SELECTSC.GradeFROMSCWHERESNOin(selectsnofromstudentwhereSage=19);7、查询姓名第二个字为“成”的学生的信息。SELECT*FROMSTUDENTWhereSnameLIKE’__成%’;8、查询选修了三门课学生的姓名、学号、年龄。SELECTstudent.Sno,student.Sname,student.SageFROMstudent,scWherestudent.sno=sc.snoGROUPBYstudent.sno,student.sname,student.sageHAVINGCOUNT(cno)=3;9、查询信息系学生的信息并按年龄降序排序。Select*fromstudentWheresdept=’IS’orderbysageDESC10、查询每一门课的间接先修课。Selectfirst.cno,second.cpnoFromcoursefirst,coursesecondWherefirst.cpno=second.cno;11、查询学生的学号、姓名、选修的课程号及成绩,按左外连接。Selectstudent.sno,sname,cno,gradeFromstudentleftjoinscon(student.sno=sc.sno)12、查询选修学生数超过10人的课程号、课程名及选修学生数。selectsc.cno,cname,count(distinctsno)fromcourse,scwherecourse.cno=sc.cnogroupbysc.cno,cnamehavingcount(sno)10(二)完成以下查询设职工---社团数据库有三个基本表:职工(职工号,姓名,年龄,性别);社会团体(编号,名称,负责人,活动地点);参加(职工号,编号,参加日期);其中:1)职工表的主码为职工号。2)社会团体表的主码为编号;外码为负责人,被参照表为职工表,对应属性为职工号。3)参加表的职工号和编号为主码;职工号为外码,其被参照表为职工表,对应属性为职工号;编号为外码,其被参照表为社会团体表,对应属性为编号。要求用SQL语句表达下列操作:(1)查询参加的社会团体为唱歌队或篮球队的职工号和姓名(说明:社会团体的名称为唱歌队或篮球队)。(2)查询参加日期是2008年04月2日的职工的职工号和姓名、性别和年龄。(3)查询每个社会团体的参加人数。createdatabase职工_社团;createtable职工(职工号char(9)primarykey,姓名char(20)unique,年龄smallint,性别char(2));createtable社会团体(编号char(4)primarykey,名称char(40),负责人char(9),活动地点char(100),foreignkey(负责人)references职工(职工号));createtable参加(职工号char(9),编号char(4),参加日期char(9),primarykey(职工号,编号),foreignkey(职工号)references职工(职工号),foreignkey(编号)references社会团体(编号));select参加.职工号,姓名from参加join社会团体on(参加.编号=社会团体.编号)join职工on(参加.职工号=职工.职工号)where社会团体.名称='唱歌队'or社会团体.名称='篮球队'groupby社会团体.名称,参加.职工号,姓名select职工.职工号,职工.姓名,职工.性别,职工.年龄from职工,参加where参加日期='2008年04月2日';selectcount(*)from社会团体,参加where参加.编号=社会团体.编号groupby社会团体.编号;实验四数据更新操作(4学时)一、实验目的与要求1、掌握数据更新操作语句的基本使用格式,能使用SQLServer实现对表的插入、修改、删除操作。2、掌握数据库更新操作需要满足的完整性约束。二、实验内容(一)完成下面的数据插入操作1、在student表中插入一条姓名为“张悦”、学号为“0007”、性别为“女”的信息。Insertintostudent(sname,sno,ssex)Values(‘张悦‘,‘0007’,‘女’);影响行数为1行2、创建一个新的表,表名为ST1,表的结构和STUDENT表的结构一样,然后将STUDENT表中男生的信息插入到表ST1中去。createtablest1(snochar(9)primarykey,snamechar(20)unique,ssexchar(2),sagesmallint,sdeptchar(20));命令已成功完成insertintost1(sno,sname,ssex,sage,sdept)selectsno,sname,ssex,sage,sdeptfromstudentwheressex='男';所影响的行数为2行3、在表STUDENT中插入学号为“200215121”一条记录,观察操作执行的情况,并能回答为何出现那样的情况。insertintostudent(sno)values('200215121');违反了PRIMARYKEY约束'PK__student__76CBA758'。不能在对象'student'中插入重复键。语句已终止。4、在SC表中插入学号为“199815121”,课程号为“5”的,成绩为67的信息,观察操作执行的情况,并能回答为何出现那样的情况。insertintosc(sno,cno,grade)values('199815121',5,67);(12月7号做得:所影响的行数为1行)INSERT语句与COLUMNFOREIGNKEY约束'FK__sc__Sno__7D78A4E7'冲突。该冲突发生于数据库'stu',表'student',column'Sno'。语句已终止。(二)完成下面的数据修改操作1、将STUDENT表的男生的年龄都增加1岁。UpdatestudentSetsage=sage+1Wheressex=’男’;所影响的行数为2行2、将SC表的成绩改为0UpdateSCsetgrade=0所影响的行数为63、将男生的成绩置85。UpdatescSetgrade=85Where‘男‘=(selectssexfromstudentwherestudent.sno=sc.sno)所影响的行数为3行成功SC表中的男生成绩全部为85数据更新成功通过外码‘SNO’将sc表与student表连接再查询出性别为‘男’的student中‘SNO’从而更新成功不受完整性约束查询SC表成绩为854、将课程名为数学的课程的学生成绩改为nullUpdatescSetgrade=nullWhere’数学’=(selectcnamefromcoursewheresc.cno=course.cno)成功执行结果影响了2行SC表中课程名为数学的学生成绩均为NULL数据更新成功通过‘CNO’外码将SC与COURSE连接再通过course表查询出cname为‘数学’的课程号cno从而更改grade不受完整性约束(三)完成下面的数据删除操作1、删除姓名中含李的学生记录。deletefromstudentwheresnamelike'李%';所影响的行数为1行无法执行DELETE语句与COLUMNREFERENCE约束'FK__sc__Sno__7D78A4E7'冲突。该冲突发生于数据库'stu',表'sc',column'Sno'。语句已终止。违反了参照完整性规则student表为被参照表SC表为参照表在student表中删除一个元组会造成SC表中的某些元组的sno的属性的值在student中找不到一个元组不能保持数据的一致性因此被拒绝SC表中‘sno’外码要参照student表中‘sno’,因此要删除姓名中含李的学生记录,在student表设计表结构时,没有级联删除的情况下,SC的会约束student表的数据更新操作2、删除课程名为数学的学生选修记录。deletefromscwhere'数学'=(selectcnamefromcoursewherecourse.cno=sc.cno);成功执行结果影响了2行课程名为数学的学生选修记录已被删除因为SC表中连接引用course表中课程名cname为‘数学’的课程号cno,该删除不会受到SC表外码‘cno’约束,sc表作为子表,从而数据更新成功,不受完整性约束。三、实验报告提交要求(实验四需要提交实验报告!在下周一交来)实验报告格式:一、实验目的:二、实验内容:三、实验过程:四、实验总结实验五视图(4学时)日期:2011-12-05一、实验目的与要求1、了解视图的概念2、掌握视图的建立3、理解视图的使用二、实验内容(一)视图的建立1、建立选修了物理课程的选修情况视图st1Createviewst1AsSelectsno,cno.gradeFromscWhere‘物理’=(selectcnamefromcoursewheresc,cno=course.cno)2、建立计算机系学生的视图st2,并要求在进行更新操作时保证更新的是计算机系的学生信息。Createviewst2AsSelectsno,sname,sageFromstudentWheresdept=’CS’WITHCHECKOPTION3、建立视图ST3,列为SNO,SNAME,CNO,grade,要求成绩为及格的学生.Createviewst3(sno,sname,cno,grade)AsSelectstudent.sno,sname,course.cno,sc.gra
本文标题:实验--数据库2011
链接地址:https://www.777doc.com/doc-4565083 .html