实验一SQLServer2008基本表操作一、实验目的1.掌握使用SQL语句创建和修改表结构。2.掌握使用SQL语句进行索引操作。3.掌握使用ManagementStudio添加、修改和删除数据。二、实验要求1.使用SQL语句完成创建、修改和删除表结构等操作。2.使用SQL语句完成索引的创建、修改和删除等操作。3.使用ManagementStudio图形界面完成数据的添加、修改和删除操作。4.请参考如下表结构完成以上操作。现有学生成绩管理数据库,数据库名为ST,包含学生信息、课程信息、教师信息、选课信息以及教学任务信息等。因此,为数据库ST设计了5张表,分别是:(1)StudentInfo:学生信息表。(2)CourseInfo:课程信息表。(3)TeacherInfo:教师信息表。(4)SC:选课信息表。(5)TeachTasksInfo:教学任务信息表。各表的表结构和表中数据示例分别如表3-1至表3-10所示。表3-1StudentInfo表结构表名:StudentInfo说明:学生基本信息表属性列数据类型长度空值列约束说明Snochar12NotNullPK学生学号Snamenvarchar20Null学生姓名Sexchar2Null学生性别BirthdaydateNull出生日期Departnvarchar30Null学生系别Majornvarchar50Null学生专业LengSchtinyintNull学生学制表3-2StudentInfo表中数据示例SnoSnameSexBirthdayDepartMajorLengSch201001903051辛月娟女1990-4-27经济管理系工商管理(本科)4201001903057谭文娟女1990-11-12计算机系计算机科学与技术(本科)4201001903029明梅女1991-3-15计算机系计算机科学与技术(本科)4201011002031徐雁男1989-07-02计算机系信息管理与信息系统(1+3)4201011002032秦赵璇女1989-08-21计算机系信息管理与信息系统(1+3)4201011801017王鹏飞男1991-1-5服装系服装设计与工程(专科)3201011801018哈菲菲女1991-9-9服装系服装设计与工程(1+3)4表3-3CourseInfo表结构表名:CourseInfo说明:课程信息表属性列数据类型长度空值列约束说明Cnochar6NotNullPK课程编号Cnamenvarchar50Null课程名称Cpnochar6NullFK先行课CreditDecimal2Null学分表3-4CourseInfo表中数据示例CnoCnameCpnoCredit140173数据库系统概论1401763140174C语言程序设计2140175操作系统1401763140176数据结构1401743.5140178计算机英语2140179软件工程1401732140180计算机组成原理4表3-5TeacherInfo表结构表名:TeacherInfo说明:教师信息表属性列数据类型长度空值列约束说明TeacherIDchar5NotNullPK职工号Tnamenvarchar20Null姓名Sexchar2Null性别Departnvarchar30Null所在院系ProfTitlenvarchar10Null职称Degreechar6Null学位表3-6TeacherInfo表中数据示例TeacherIDTnameSexDepartProfTitleDegree04001白红霞女计算机系教授博士09001安宁女计算机系讲师本科09004董敏女化学系教授博士09006冯李宁男计算机系副教授本科06067范美丽女数学系讲师硕士09011华玉山男计算机系助教硕士09016王洪亮男计算机系副教授本科表3-7TeachTasksInfo表结构表名:TeachTasksInfo说明:教学任务信息表表3-8TeachTasksInfo表中数据示例TeachTaskIDCnoTeacherIDAcadYearTermExamMethodDepartTimeTable(2009-2010-1)-140173-0400140173040012009-20101考试计算机系周二第3,4节{第1-20周}(2009-2010-2)-140176-09006140176090062009-20102考查计算机系周一第1,2节{第1-20周}(2009-2010-2)-140178-06067140178060672009-20102考试数学系周三第1,2节{第1-20周}(2009-2010-1)-140180-09016140180090162009-20101考查计算机周三第5,6节{第1-20周};周五第3,4节{第1-20周}注:教学任务编号TeachTaskID的组成规则为(学年-学期)-课程号-教师号。如教务任务(2009-2010-1)-140173-04001,表示该教学任务是2009-2010学年第1学期开设,由04001号教师讲授的140173号课程。表3-9SC表结构表名:SC说明:选课信息表属性列数据类型长度空值列约束说明属性列数据类型长度空值列约束说明TeachTaskIDchar26NotNullPK教学任务编号Cnochar6NullFK课程编号TeacherIDchar5NullFK教师编号AcadYearchar9Null开设学年Termchar1Null开设学期ExamMethodvarchar10Null考试方式Departvarchar30Null开设部门TimeTablenvarchar50Null上课时间Snochar12NotNullPK学号TeachTaskIDchar26NotNullPK任务编号Gradedecimal5Null成绩表3-10SC表中数据示例TeachTaskIDSnoGrade(2009-2010-1)-140173-0400120100190305784.2(2009-2010-1)-140173-0400120100190302987.7(2009-2010-1)-140173-0400120101100203182.1(2009-2010-2)-140176-0900620100190305184.9(2009-2010-2)-140176-0900620100190305776.0(2009-2010-2)-140176-0900620100190302980.0(2009-2010-2)-140178-0606720101100203186.0(2009-2010-2)-140178-0606720101100203290.0三、实验步骤1.用SQL语句创建StudentInfo表在查询窗口中输入如下创建StudentInfo表的SQL语句,并执行。USESTGOCREATETABLEStudentInfo(Snochar(12)primarykeyNOTNULL,Snamenvarchar(20)NULL,Sexchar(2)NULL,BirthdayDateNULL,Departnvarchar(30)NULL,Majornvarchar(50)NULL,LengSchtinyintNULL)注意:在执行CREATETABLE语句前必须使用USEST命令将当前数据库切换到ST,否则StudentInfo表将加入到命令执行时的当前数据库中,而不是ST数据库中。2.用SQL语句创建SC表在查询窗口中输入如下创建SC表的SQL语句,并执行。USESTGOCREATETABLESC(Snochar(12),TeachTaskIDchar(26),Gradedecimal(5,2)NULL,primarykey(Sno,TeachTaskID),FOREIGNKEY(Sno)REFERENCESStudentInfo(Sno)FOREIGNKEY(TeachTaskID)REFERENCESTeachTasksInfo(TeachTaskID))GO注意:此语句中建立了两个外键约束,因此必须在StudentInfo,StudentInfo中Sno字段,TeachTaskInfo表,TeachTaskInfo表中的TeachTaskID字段都存在的情况下语句才能执行成功。3.为“TeacherInfo”表添加“教龄”列,数据类型为字符型,允许为空。(1)在查询窗口中输入如下SQL语句,并执行。ALTERTABLETeacherInfoADDworking_daychar(2)NULL(2)语句执行后如果出现如下错误信息:消息4902,级别16,状态1,第1行找不到对象TeacherInfo,因为它不存在或者您没有所需的权限。错误原因是没有建立TeacherInfo表,或者当前数据库不是ST,必须使用use命令将当前数据库切换到ST。(3)利用ManagementStudio打开表结构设计器,查看新增列。4.修改“TeacherInfo”表的“working_day”列数据类型为int。(1)在查询窗口中输入如下SQL语句,并执行。ALTERTABLETeacherInfoALTERCOLUMNworking_dayint(2)利用ManagementStudio打开表结构设计器,查看working_day的数据类型。5.删除“TeacherInfo”表的“working_day”列(1)在查询窗口中输入如下SQL语句,并执行。ALTERTABLETeacherInfoDROPCOLUMNworking_day(2)利用ManagementStudio打开表结构设计器,查看working_day是否已经被删除。6.用SQL语句删除表(1)在查询窗口中输入如下SQL语句,并执行。DROPTABLETeacherInfo(2)利用ManagementStudio的对象资源管理器查看TeacherInfo是否已经删除。7.用SQL语句在CourseInfo表上建立关于Cno的索引名为Coursecno的唯一索引在查询窗口中输入如下SQL语句,并执行。CREATEUNIQUEINDEXCoursecnoONCourseInfo(Cno)8.用SQL语句根据studentInfo表的学号和姓名列创建索引,索引名为xhxm。在查询窗口中输入如下SQL语句,并执行。CREATEINDEXxhxmONStudentinfo(sno,sname)9.用SQL语句删除CourseInfo表上的索引Coursecno。在查询窗口中输入如下SQL语句,并执行。DROPINDEXCourseInfo.coursecno注意:在SQLServer中索引前必须限定表名。10.验证是否可用DROPINDEX语句删除主键索引(1)查看StudentInfo表的主键名称为:PK_StudentInfo。(2)在查询窗口中输入如下SQL语句。DROPINDEXStudentInfo.PK_StudentInfo(3)进行语法检查,显示“命令已经完成”,保证语法的正确性。(4)执行语句,显示如下消息:消息3723,级别16,状态4,第1行不允许对索引'StudentInfo.PK_StudentInfo'显式地使用DROPINDEX。该索引正用于PRIMARYKEY约束的强制执行。说明DROPINDEX不能删除主键索引,只能删除利用CREATEINDEX命令建立的普通索引。11.利用ManagementStudio完成StudentInfo表数据的添加、修改、删除操作。(1)在对象资源管理器中找到需要添加数据的表名StudentInfo,右击,选择“编辑前200行”,打开数据编辑窗口。(2)如果要添加数据,在最后一行,即数据内容全部是NULL的行中填写相应数据即可。如果填写的数据为无效值或违反某种约束,则会弹出提示框。如在