还剩56页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
数据库与信息系统基础实验指导书指导老师张华中国矿业大学测绘与地理信息工程系2012年9月目录TOC\o1-3\h\z\u简介3实验14实验2数据库的创建与管理14实验3表的创建与管理23实验4数据操纵27实验5数据查询30实验6数据库系统__34简介
一、适用专业地理信息系统,测绘工程
二、实验目的与任务通过实验教学,使学生进一步加深理解数据库系统的基本理论,学会数据库设计方法、DBMS的使用,数据库系统的管理和维护,熟悉数据库技术的应用
三、实验配套的主要仪器设备几台(套)数装有WIN2000及SQLSERVER2000的电脑60台
四、主要教材及参考书教材《数据库技术与应用》贺利坚宇航出版社参考书目《数据库系统概论》(第三版)萨师煊高等教育出版社
五、考核形式
1、平时实验完成情况20%
2、分组__一套数据库管理系统程序80%
六、实验开出率实验开出率100%
七、实验项目与要求序号实验项目名称实验课学时数仪器组数每组人数实验类型开出要求指导实验人员材料消耗费(元)计划实际1实验1SQL语言初步22601验证必开教师2实验2数据库的创建与管理22601验证必开教师3实验3表的创建与管理22601设计必开教师4实验4数据操纵22601设计必开教师5实验5数据查询24601验证必开教师6实验6数据库系统__44601设计必开教师789实验1实验项目建立数据库及基本表,数据查询实验目的使用SQL查询分析器用CREATE语句创建基本表,使用SQL查询分析器用SELECT语句进行数据查询步骤
1、利用查询分析器创建学生课程数据库用鼠标单击“开始”,将鼠标分别指向程序、microsoftSQLserver在microsoftSQLserver下单击“查询分析器”;在“查询分析器”窗口下键入CREATEDATABASESC命令并保存,文件名为SC.sql用鼠单击任务栏的绿色向右箭头运行该命令这样,SC数据库就建成了如下列图所示步骤1步骤2步骤
22、利用查询分析器创建基本表studentsnosnames___sagesdeptcoursecnocnameccreditscsnocnograde在查询分析器任务栏的数据库选为SC在窗体下键入如下命令CREATETABLEStudentsnoCHAR10NOTNULLUNIQUE,snameCHAR8,s___CHAR2,sageINT,sdeptCHAR20保存,文件名为student.sql.用鼠单击任务栏的绿色向右箭头运行.在窗体下键入如下命令CREATETABLECoursecnoCHAR10NOTNULLcnameCHAR20,CcreditINT用鼠单击任务栏的绿色向右箭头运行,观察结果CREATETABLESCsnoCHAR10NOTNULLcnoCHAR10NOTNULLgradeINT保存,文件名为sc.sql用鼠单击任务栏的绿色向右箭头运行.这样在SC数据库中建成了三个表StudentCourseSC.
3、利用企业管理器向表中输入数据Student表snosnames___SageSdept200101张明男19计算机系200102王强男20信息系200103李华女18数学系200104秦永男19计算机系course表CnoCnameCcreditCno1数据库312数学423信息系统334操作系统345数据结构456PASCAL语言36S_c表SnoCnoGrade
2001011922001012852001013882001022902001023804、使用SQL查询分析器用SELECT语句进行数据查询1.简单查询例1查询全体学生的姓名、学号、所在系SelectsnamesnosdeptFROMstudent本例查询结果为SnameSno张明200101计算机系王强200102信息系李华200103数学系秦永200104计算机系例2查询学生的详细记录Select*fromstudent本例查询结果为SnoSnameSageS___Sdept200101张明19男计算机系200102王强18一男信息系200103李华20女数学系200104秦永19男计算机系例3查询学校有哪些系SelectdistinctsdeptFromstudent;本例查询结果为Sdept计算机系数学系例4查询计算机系全体学生的学号与姓名SELECTsnosnameFromstudentWheresdept=’计算机系’本例查询结果为SnoSname200101张明200104秦永例5查询选修一号课程且成绩90分以上的学生的学号SelectsnoFromscWheregrade90andcno=’1’本例查询结果为Sno2001012连接查询等值与非等值连接查询例6查询每个学生及其选修课程的情况Selectstudent.*sc.*FromstudentscWherestudent.sno=sc.sno执行结果为SnoSnameSageS___SdeptSno20010l张明19男计算机系200lOl20010l张明19男计算机系20010l200101张明19男计算机系20010l200102王强18男信息系200102200102王强18男信息系200102复合条件连接例7查询每个学生的学号、姓名、选修的课程名及成绩Selectstudent.snosnamecnamegradeFromstudentsc.courseWherestudent.sno=sc.snoAndsc.cno=course.cno执行结果为SnoSnameCnameGrade200101张明数据库92200101张明数学85200101张明信息系统88200102王强数学90200102王强信息系统80例8查询计算机系同学的各科成绩,要求输出姓名、课名和成绩SelectsnamecnamegradeFromstudentcoursescWherestudent.sno=sc.snoAndsc.cno=course.cnoAndstudent.sdept=’计算机系’执行结果为SnameCnameGrade张明数据库92张明数学85张明信息系统88例9查询选修了数学课且成绩及格的所有学生的学号、姓名和成绩Selectstudent.snosnamegradeFormstudentsccourseWherestudent.sno=sc.snoAndsc.cn=course.cnoAndcourse.cname=’数学’Andsc.grade60执行结果为SnosnameGrade200101张明85200102王强90自身连接例10查询和张明在同一个系的学号和姓名selects
1.snos
1.snamefromstudents1students2wheres
1.sdept=s
2.sdeptands
2.sname=张明执行结果为Snosname200101张明200104秦永外连接如例10的结果中没有200103和200104两个学生的信息,原因在于他们没有选课,在SC表中没有相应的元组但是有时我们想以Student表为主体列出每个学生的基本情况及其选课情况,当然要反映出学生选修了什么课或是否没有选课若某个学生没有选课,只输出其基本情况信息,其选课信息为空值即可,这时就需要使用外连接OuterJoin可以将例6改写为Selectstudent.snosnames___sagesdeptcnogradeFromstudentscWherestudent.sno*=sc.sno执行结果如下SnoSnameS___SageSdeptCnoGrade20010l张明男19计算机系192200101张明男19计算机系28520010l张明男19计算机系388200102王强男18信息系290200102王强男18信息系380200103李华女20数学系NULLNULL200104秦永男19计算机系NULLNULL3嵌套查询例11查询与“张明”在同一个系的学生学号与姓名SELECTSno,Sname,SdeptFROMStudentWHERESdeptINSELECTSdeptFROMStudentWHERESname=‘张明’执行结果如下SnoSnameSdept200101张明计算机系200104秦永计算机系例12查询选修了信息系统学生学号与姓名SELECTSnoSnameFROMStudentWHERESNOINSELECTSnoFROMScWHEREcnoinselectcnoFromcourseWherecname=信息系统执行结果如下Snosname200101张明200102王强4谓词查询between….and…..例13查询选修了2号课程,成绩在80-90之间学生学号SELECTSnoFROMScWHEREcno=2andgradebetween80and90执行结果如下Sno200101200102In、notin例14查询数学系和计算机系学生的姓名和性别selectsnames___fromstudentwheresdeptin数学系计算机系执行结果为SnameS___张明男李华女秦永男Likenotlike例15查询学号为200l0l的学生的详细情况Select*FromstudentWheresnolike‘200101’执行结果为SnoSnameSageS___Sdept200101张明19男计算机系例16查询所有姓李的学生的姓名、学号和性别Selectsnamesnos___FromstudentWheresnamelike李%本例查询结果为SnameSnoS___李华200103女例17查询名字中第2个字为“明”字的学生的姓名和学号SelectsnamesnoFromstudentWheresnamelike_明%本例查询结果为SnoSname20010l张明IsnullIsnotnull例18查询缺少成绩的学生的学号和相应的课程号selectsnocnofromscwheregradeisnull本例查询结果为空值例19查询所有有成绩的学生学号和课程号selectsnocnofromscwheregradeisnotnull本例查询结果为SnoCnO20010ll2001012200101320010222001023谓词ANY和ALL及比较运算符例20查询其他系中比计算机系某一学生年龄小的学生姓名和年龄selectsnamesagefromstudentwheresdept计算机系andsageanyselectsagefromstudentwheresdept=计算机系执行结果为SnameSage王强18例21查询其他系中比计算机系所有学生年龄都小的学生姓名及年龄selectsnamesagefromstudentwheresdept计算机系andsageallselectsagefromstudentwheresdept=计算机系本例执行结果SnameSage王强18谓词EXISTS和NOTEXISTS例22查询所有选修了3号课程的学生姓名selectsnamefromstudentwhereEXISTSselect*fromSCwhereSNO=STUDENT.SNOANDCNO=3本例执行结果SNAME张明王强例22查询没有选修l号课程的学生姓名selectsnamefromstudentwherenotEXISTSselect*fromSCwhereSNO=STUDENT.SNOANDCNO=1执行结果为Sname王强李华
(5)查询结果排序例23查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列selectsnogradefromscwherecno=3orderbygradedesc执行结果为Sn0Grade200lUl8820010280例24查询全体学生情况,查询结果按所在系的系名升序排列,同一系中的学生按年龄降序排列.select*fromstudentorderbysdeptsagedesc执行结果为snosnames___sagesdept200101张明男19计算机系200104秦永男19计算机系200103李华女18数学系200102王强男20信息系6统计查询例25查询学生总人数selectcount*fromstudent执行结果为4例26查询选修了课程的学生人数selectcountdistinctsnofromsc执行结果为2例27计算数学课的学生平均成绩select__ggradefromscwherecnoinselectcnofromcoursewherecname=数学执行结果为87例28计算数学课的学生最高分select__xgradefromscwherecnoinselectcnofromcoursewherecname=数学.执行结果为90例29计算各门课的平均成绩selectcno__ggradefromscgroupbycno执行结果为CNO无列名192287384实验2数据库的创建与管理目的和要求1.巩固数据库的基础知识;2.掌握创建数据库的两种方法;3.掌握查看、修改数据库属性的方法;4.掌握缩小、更名与删除数据库的方法内容和步骤
一、建数据库在SQLServer2000下创建数据库有两种方法1.使用企业管理器直接创建数据库1打开企业管理器2左键双击“数据库”后,右键单击空白区并选择【新建数据库】3会弹出窗体如图1-1所示,在常规标签中输入数据库名称图1-1新建数据库 4然后单击【数据文件】标签,可以输入文件名、文件位置、文件大小以及文件组在这个对话框中还提供了在数据文件需要更多空间时自动扩展的选项以及数据文件大小的最大值5单击【事务日志】标签,在此键入日志文件的名字、位置、大小在这个标签中还提供了让日志文件在日志需要更多空间时自动扩展选项和日志文件大小的最大值 2.使用Transact-SQL语句创建数据库使用Transact-SQL语句创建数据库的语法如下CREATEDATABASEdatabase_name[ON[PRI__RY][NAME=logical_file_name]FILENAME=‘os_file_name’[SIZE=size][__XSIZE={__x_size|UNLIMITED}][FILEGROWTH=growth_increment][…n]filegroup::=FILEGROUPfilegroup_namefilespec[…n]LOGONNAME=logical_file_nameFILENAME=‘os_file_name’SIZE=size__XSIZE={__x_size|UNLIMITED}FILEGROWTH=growth_increment] 例1创建一个student数据库,其中主文件组包含主要数据文件student1_dat和次要数据文件student2_dat有2个次要文件组studentGroup1包含2个次要数据文件student1Fi1_dat和studentFi2_datstudentGroup2包含student2Fi1_dat和student2Fi2_dat两个次要数据文件日志的逻辑文件名为student_log,此日志文件存储在c:\mssql\data\studentlog.ldf中CREATEDATABASEstudentONPRI__RYNAME=student1_datFILENAME=‘c:\student1_dat.mdf’SIZE=10__XSIZE=50FILEGROWTH=15%NAME=student2_datFILENAME=‘c:\student2_dat.ndf’SIZE=10__XSIZE=50FILEGROWTH=15%FILEGROUPstudentGroup1NAME=student1Fi1_datFILENAME=‘c:\student1Fildt.ndf’SIZE=10__XSIZE=50FILEGROWTH=5NAME=student1Fi2_datFILENAME=‘c:\student2Fildt.ndf’SIZE=10__XSIZE=50FILEGROWTH=5FILEGROUPstudentGroup2NAME=student2Fil_datFILENAME=‘c:\SG1Fi1dt.ndf’SIZE=10__XSIZE=50FILEGROWTH=5NAME=student2Fi2_datFILENAME=‘c:\SG2Fi1dt.ndf’SIZE=10__XSIZE=50FILEGROWTH=5LOGONNAME=‘student_log’FILENAME=‘c:\studentlog.ldf’SIZE=5MB__XSIZE=25MBFILEGROWTH=5MB
二、查看、修改数据库属性1.利用企业管理器
(1)SQLServer2000有许多选项可以改变数据库的行为因此,在使用数据库之前,可以考虑其中一些选项的设置进入企业管理器,用鼠标右键单击数据库student,再单击“属性”,然后选择“选项”标签即可进入如图1-2所示student数据库的选项窗体图1-2student数据库的选项窗体 属性说明如下访问控制用于控制哪些用户能访问该数据库只读这个选项使数据库只能读取不能写入模型指定数据库的恢复模型类型ANSINULL默认设置指定将数据库列默认定义为NULL还是NOTNULL递归触发器启用触发器的递归触发自动更新统计信息指定在优化期间自动生成查询优化所需的过时统计信息残缺页检测指定可以检测不完整页自动关闭指定数据库资源被释放以及所有用户退出之后关闭数据库自动收缩指定数据库文件可以周期性自动收缩自动创建统计信息指定在优化期间自动生成优化查询所需的任何缺少的统计信息使用引用的标识符指定SQLServer2000将强制执行关于引号的ANSI规则级别指定数据库兼容性级别2调整数据库大小__“数据文件”或“事物日志”标签,可以得到如图1-3所示student数据库的窗体 图1-3student数据库的数据文件窗体 属性说明文件自动增长选中表示数据库自动,这时可以选择按兆增长还是按百分比增长文件增长不受限制意味着数据库没有最大限制,可以一直充满磁盘将文件增长限制为,为数据库选择一个最大限制分配空间用户可以直接增加数据库文件大小扩大数据库的另外一个方法是增加辅助数据文件2增加文件组生成一辅助文件后,可将其逻辑组织到文件组中,帮助管理磁盘空间分配增加文件组的方法是在文件组列中输入一个新的文件组名称,如“next”,单击“确定”,然后右击数据库,选择“属性”,选择“文件组”标签会看到增加的文件组如图1-4所示图1-4student数据库的文件组窗体 ⑷缩小数据文件右击数据库,单击“所有任务”,选择收缩数据库,会弹出图1-5所示窗体,利用该窗体可以输入数据库大小,并且可以定制任务,让SQLServer2000自动定期收缩数据库大小图1-5收缩数据库窗体 2.使用Transact-SQL语句查看、修改数据库属性使用Transact-SQL语句查看、修改数据库属性的语法为sp_dboption[[@dbname=]‘database’][[@optname=]‘option_name’][[@optname=]‘option_name’] [@dbname=]‘database’设置指定选项的数据库名称[@optname=]‘option_name’设置的选项名称[@optname=]‘option_name’可以示ture、false、on或off⑴修改日志文件的最大值将student1_log日志文件的最大值更改为150M,SQL脚本程序如下USEstudentGOALTERDATABASEstudentMODIFYFILENAME=student1_log__XSIZE=150MBGO⑵修改日志文件的初始值将student1_log日志文件的初始值由5M更改为20M,SQL脚本程序如下USEstudentGOALTERDATABASEstudentMODIFYFILENAME=student1_logSIZE=20MBGO⑶查看数据库信息执行系统存储过程sp_helpdb可以查看student数据库信息,并验证数据库是否已经修改成功Sp_helpdbstudent⑷更改数据库更改数据库student时为student添加一个辅助文件,文件名为studentfz,存储在c:\studentfz.ndf中,初始大小为3MB,最大值为50MB,增长量为3MBUSEstudentALTERDATABASEstudentADDFILENAME=studentfzFILENAME=c:\studentfz.ndfSIZE=3MB__XSIZE=50FILEGROWTH=3向数据库student中添加一个含有2个文件的文件组USEstudentGOALTERDATABASEstudentADDFILEGROUPstudentfg1GOALTERDATABASEstudentADDFILENAME=studentfz1FILENAME=C:\studentfz
1.ndfSIZE=5MB__XSIZE=50MBFILEGROWTH=5NAME=studentfz2FILENAME=C:\studentfz
2.ndfSIZE=5MB__XSIZE=50MBFILEGROWTH=5TOFILEGROUPstudentfg1向student数据库中添加2个5MB的日志文件USEstudentGOALTERDATABASEstudentADDLOGFILENAME=studentlog2FILENAME=c:\studentlog
2.ldfSIZE=5MB__XSIZE=10MBFILEGROWTH=5NAME=studentlog3FILENAME=c:\studentlog
3.ldfSIZE=5MB__XSIZE=10MBFILEGROWTH=5删除数据库student中的一个文件studentfz.ndfUSEstudentGOALTERDATABASEstudentREMOVEFILEstudentfz删除student数据库USEstudentDROPDATABASEstudent 练习题练习1创建数据库用企业管理器创建数据库11 创建数据库Student12 右击数据库,单击【新建数据库】13 输入数据库名称Student14 选择【数据文件】标签,增加一个文件student1,设置初始大小为5MB15 选择【事务日志】标签,增加一个日志文件student1_log,初始大小为5MB16 单击【确定】按钮,开始创建数据库 练习2用Transact-SQL语句创建数据库打开查询分析器,创建数据库Student1数据库的参数如下表所示参数参数值数据库名称Student1数据库逻辑文件名Student1_dat操作系统数据文件名C:\mssql\data\Student1_dat.mdf数据文件的初始大小10MB数据文件最大大小50MB数据文件增长量原来的20%日志逻辑文件名Student_log操作系统日志文件名C:\mssql\data\Student1_log.ldf日志文件初始大小5MB日志文件的最大大小25MB日志文件增长增量5MB 1)设置数据库选项使用企业管理器修改数据库选项右击数据库,单击“属性”,选择“选项”标签,弹出如图所示窗体,选中“只读”复选框这样数据库就变为只读数据库然后打开查询分析器使用T-SQL语句更改数据库选项EXECSP_DBOPTION‘student’‘readonly’‘TRUE’2)压缩数据库使用企业管理器压缩数据库右击数据库,选择“所有任务”,单击“收缩数据库”,弹出图示窗体键入收缩量使用T-SQL语句压缩数据库打开查询分析器键入DBCCSHRINKDATABASE(student,2)将student数据库压缩成为2M3)更改数据库打开查询分析器更改数据库student,参数如下参数参数值数据库名Student增加的文件组名StudentFG1增加的文件1的逻辑名Studentdat3文件1在磁盘中的目录C:\tdat
3.ndf文件1的初始大小5MB文件1的最大值50MB文件1的增长量5MB增加的文件2逻辑名Studentdat4文件2磁盘中的目录C:\tdat
3.ndf文件2初始大小5MB文件2最大值50MB文件2增长量5MB新增日志逻辑文件名Studentlog2日志文件在磁盘中的目录D:\studentlog.ldf日志文件初始值5MB日志文件最大值100MB日志文件增长量5MB 实验3表的创建与管理目的和要求1.巩固数据库的基础知识;2.掌握创建与删除表的两种方法;3.掌握修改表结构的方法内容和步骤
一、表的创建1.利用企业管理器创建表1打开企业管理器1选中创建好的数据库,单击数据库中的表对象,然后右击窗口右侧选择新建表,弹出如图所示窗体1在这个窗体中,列名列就示表的字段名,可以在这个窗体中为字段选择数据类型和长度以及是否可以为空值1在此处可以为表选择文件组,在表中单击右键,选择属性,如果已经为数据库创建了一个次要组,可以在属性窗体的表文件组中为此表选择文件组应该把一些竞争使用的表放于不同的文件组中,并且让文件组属于不同磁盘,这样可以在表竞争读写时提高并发性能1创建完成后,单击磁盘图标,并为表取一个名字,注意,应该为表取一个有意义的名字2.用Transact_SQL语句创建表语法为CREATETABLE[database_name.[owner].]table_name{column_namedata_type[DEFAULT‘default_value’]|[CONSTRAINTconstraint_name]}[…n][IDENTITY[seedincrement]][ON{filegroup|DEFAULT}][TEXTI__GE_ON{filegroup|DEFAULT}]例1生成一个表名为student的表例2创建一张名为Ta1的表,此表中有3列,第一列Pid定义为主键,并且自动增长第二列Name默认值为Unknown,第三列定义一个约束日期不能大于输入当天的日期,插入一条记录并进行查询,显示如下图
二、表的修改1.1. 用企业管理器修改表⑴右键__所要修改的学生表,选择“设计表”,会弹出如图所示的窗体,在这个窗体中可以更改数据表的字段在空白处点右键,选择“属性”,弹出另一窗体,在此可以更改约束,也可以增加约束⑵利用Transact-SQL语句修改表向表中添加新的字段在学生表中添加一个“班级”字段,数据类型为字符型ALTERTABLEstudentadd班级char删除表中的旧列将学生表中的“Sdept”字段删除ALTERTABLEstudentDROPcolumnSdept更改表以添加具有约束的列给学生表的增加“grade”字段并加上CHECK约束,让其不可以大于100ALTERTABLEstudentADDgradeintConstraintchnamecheckgrade100Execsp_helpchname给学生表中添加“birthday”字段,并且这个日期不能在录入当天的日期之后AltertablestudentAddbirthdayDATETIMENULLCONSTRAINTch_birthdayCHECKbirthdaygetdate添加具有默认值的可为空的列在学生表中加入“__triculationday”字段,并且这一字段的默认值为录入当天的日期AltertablestudentAdd__triculationday__alldatetimeNULLConstraintadddatefltDefaultgetdate
三、表的删除删除表对象,我们可以在企业管理器中选择要删除的表直接删除,也可以通过Transact-SQL语句DROP删除表的定义及表中的所有数据、索引、出发器、约束和权限规范如要删除ta1表,语句如下DROPTABLEta1 练习题练习1在Student数据库中利用查询分析器创建课程信息表Course、表结构如下主键列名数据类型宽度小数位空否备注PkCnoChar3 N课程代码 CnameChar20 Y课程名称 CpnoChar3 Y先行课号 CreditDeci__l31Y学分利用Transact-SQL语句创建选课成绩表Sc和操作员表Operator表结构如下主码列名数据类型宽度小数位空否备注PkSnoChar5 N学号CnoChar3 N课程代码 GradeDeci__l51Y成绩 主码列名数据类型宽度小数位空否备注PkOperator_idChar4 N操作员编号 Operator_nameChar12 Y操作员姓名 PasswordChar10 Y__ PermissionChar20 Y权限 练习2表的管理⑴用企业管理器创建教工表teacher,要求如下列名数据类型允许为空?约束IDENTITY属性教工号Int否主键无姓名Varchar20是无无家庭住址Char30是无无__Int是无无性别Char2否默认为‘男’无系别Varchar16否必须是(‘计算机软件’、‘计算机体系结构’、‘计算机网络’)之一无 ⑵在查询分析器中用命令DROPTABLEteacher删除该表⑶根据条件在查询分析器中输入以下语句CREATETABLEteacher教工号INTPRI__RYKEYIDENTITY11姓名VARCHAR18NULL家庭住址CHAR30NULL__INTNULL职称CHAR14DEFAULT讲师所在专业VARCHAR16CONSTRAINTchname1CHECK所在专业IN计算机体系结构计算机网络,‘计算机软件’ 实验4数据操纵目的和要求1.掌握查看、重命名及删除用户定义的数据类型;2.掌握如何向表中添加、删除及修改数据内容和步骤
一、查看、重命名及删除用户定义的数据类型1.使用企业管理器创建一个名为newtype
1、长度为
6、可变长字符、允许为空的自定义数据类型进入企业管理器,进入student数据库,用鼠标右键单击“用户定义的数据类型”后选择“操作”菜单中的“新建用户定义数据类型”或__“新建”按扭,将弹出下图所示窗体输入要定义的数据名称newtype1,选择数据类型varchar,输入长度为6,在“允许NULL值”复选框中打个“√”,单击“确定”按钮即可2.使用T-SQL语句创建一个名为newtype2,数据长度为6,定长字符型,不允许为空的自定义数据类型USEstudentExecsp_addtypenewtype2char6notnull3.命名用户自定义的数据类型⑴使用系统存储过程sp_rename将自定义数据类型newtype1重新命名为a1Execsp_renamenewtype1a1⑵使用企业管理器再将自定义数据类型a1重新命名为newtype13.删除用户自定义数据类型⑴使用系统存储过程sp_droptype来删除用户自定义的数据类型Execsp_droptypenewtype1⑵使用企业管理器删除用户进入企业管理器,进入student数据库,单击“用户定义的数据类型”后,右边窗口将出现所有用户定义的数据类型,再用鼠标右键单击newtype2,在弹出的快捷菜单上单击“删除”按钮即可注意正在被表或其他数据库对象使用的用户定义类型不能删除
二、修改数据内容1.利用企业管理器修改数据打开企业管理器,右键__所要修改的表,选择“打开表”,单击“返回所有行”,会弹出下图所示的窗体,在该窗体中可以修改表中的数据内容这里的修改内容是自动存储的,修改完之后,直接关闭该窗体,数据内容即修改成功2.在关系数据库中,常见的修改数据的语句有三条Transact-SQL语句INSERT、UPDATE和DELETE⑴INSERT语句向student表中插入一行数据,具体数据如下学号200108姓名张三性别年龄‘21’所在系计算机系USEstudentgoInsertintostudentSnoSname___SagrSdeptVALUES‘200108‘张三‘男‘21‘计算机系⑵UPDATE语句更改(学生)表数据,将学号=‘200108’的行中所在系改成‘机械工程系’updatestudentsetsdept=‘机械系whereSno=‘200108⑶DELETE语句删除行删除student表中的学号为‘200108’的记录deletefromstudentwhereSno=‘1200108’如果想清除表中的所有数据但不删除这个表,可以使用TRUNCATETABLE语句该语句相当于没有条件的DELETE语句并且该语句不记录日志 练习题练习1创建用户自定义的数据类型⑴打开查询分析器,用sa登录⑵在数据库列表中单击student数据库⑶在查询分析器中输入语句EXECSP_ADDTYPE[name],‘CHAR
(18)’,‘NOTNULL’,执行这条语句,然后到企业管理器中查看该数据类型⑷在查询分析器中输入语句EXECSP_DROPTYPEname,执行该语句,系统将把⑶中创建的数据类型删除掉 练习2在企业管理器中⑴按照下表为teacher表添加记录教工号姓名家庭住址__职称所在教研室2111朱辉生连云港市5817693副教授计算机软件2112单建魁连云港市5817692讲师计算机网络2113赵启升连云港市5817693工程师计算机网络2___胡云连云港市5817692助教计算机软件2115葛庆兵连云港市5817694助教计算机体系结构⑵进入查询分析器,使用Transcat-SQL语句向表中添加“year”字段,该列为int型,并且不能小于0,如不输入默认值为25,语句如下ALTERTABLEteacherADDyearintCONSTRAINTchname2CHECKyear0CONSTRAINTDEFAULT1DEFAULT25⑶在查询分析器中删除teacher表中的“year”字段,在删除该字段之前应该先删除在其上定义的约束chname
2.语句如下ALTERTABLEteacherDROPCONSTRAINTchname2ALTERTABLEteacherDROPCONSTRAINTdefault1ALTERTABLEteacherDROPCOLUMN年龄练习3修改teacher表内容⑴使用Transcat-SQL语句向teacher中插入数据,语句如下INSERTINTOteacher教工号,姓名家庭住址__职称所在专业values2116,伍俊明连云港市5585097副教授计算机网络INSERTINTOteacher教工号,姓名家庭住址__职称所在专业values2117,张永连云港市5817609讲师计算机体系结构⑵使用T-SQL更改teacher表,伍俊明的__改为5585096UPDATEteacherSET__=5585096WHERE姓名=伍俊明⑶教工张永辞职,删除张永的记录,语句如下DELETEFROMteacherWHERE姓名=张永 实验5数据查询目的和要求1. 了解查询的概念和方法;2. 掌握查询分析器的使用方法;3. 掌握SELECT语句在单表查询中的应用;4. 掌握复杂查询的使用方法;5. 掌握多表连接的方法;6. 掌握SELECT语句在多表查询中的应用内容和步骤
一、单表查询1.简单查询打开查询分析器,从teacher表中分别检索出教师的所有信息,以及仅查询教工号、姓名和职称语句及查询结果如图
4.1所示`select*fromteacherselect教工号姓名fromteacher如要查询时改变列标题的显示,则从teacher表中分别检索出教师教工号、姓名、家庭住址信息并分别加上‘教师姓名’、‘教工号’、‘家庭住址’等标题信息,语句及查询结果如下使用TOP关键字分别从teacher中检索出前2条及前面67%的教师的信息语句及查询结果如下selecttop2*fromteacherselecttop67per__nt*fromteacher使用DISTINCT关键字从teacher表中检索出教师的职称并且要求显示的职称不重复语句及查询结果如下selectdistinct职称fromteacher6.用计算列,为teacher表中架一个工资字段,并输入几个值,将teacher表中各教师的姓名、教工号及工资按95%发放的信息,第2条语句将工资按95%发放后列名该为‘预发工资’语句如下select教工号姓名工资*
0.95fromteacherselect教工号姓名工资*
0.95AS预发工资fromteacher7.使用ORDERBY子句对查询的结果进行排序使用ORDERBY语句可以对查询的结果进行排序,ASC、DESC分别是升序和降序排列的关键字,系统默认的是升序排列从teacher表中查询工资大于2800的教师的教工号、姓名,并按升序排列,语句及查询结果如下select教工号姓名fromteacherwhere工资2800orderby工资ASC2.条件查询⑴使用关系运算符从teacher表中查询出教工号小于2130的教师资料,语句如下select*fromteacherwhere教工号2130⑵使用BETWEEN AND谓词从teacher表中查询出教工号界于2100和2130之间的教师资料,语句如下select*fromteacherwhere教工号between2100and2130⑶使用IN谓词从teacher表中查询出职称为“教授”或“副教授”的教师的教工号、教师姓名、职称及家庭住址,语句如下select教工号姓名家庭住址职称fromteacherwhere职称in教授副教授⑷使用LIKE谓词从teacher表中分别检索出姓伍的教师的资料,或者姓名的第2个字是寿或立的教师的资料,语句如下select*fromteacherwhere姓名like伍%select*fromteacherwhere姓名like_[寿,立]%
二、多表查询数据库各表中存放着不同的数据,用户经常需要用多个表中的数据来组合提炼出所需要的信息,如果一个查询需要对多个表进行操作,就称为关联查询,关联查询的结果集或结果表称为表之间的连接关联查询实际上是通过各各表之间共同列的关联来查询数据的,它是关系数据库查询最基本的特征按照下表所示分别在数据库test中构造student、course和student_course三张表,并写入记录Student表列名称类型宽度允许为空缺省值主键学号Char8否 是学生姓名Nvarchar8否 性别char 2否 出生年月__alldatetime 否 班级号Char6否 入学时间__alldatetime 否 家庭住址Nvarchar40是 Course表列名称类型宽度允许为空缺省值主键课程号char10否 是课程名称Nvarchar20否 书标识Char13否 课程总学时Tinyint 是 周学时Tinyint 是 课程学分Tinyint 是 Student_course表列名称类型宽度允许为空缺省值主键学号Char10是 是课程号Char8是 是成绩Tinyint 是 Student表学号学生姓名性别出生年月班级号入学时间家庭住址200101张明男
1979.7j10011
1997.9 中国200102王强男
1980.3J10011
1997.9 中国200103李华女
1980.7J10012
1997.9 中国200104秦永男
1977.4J10013
1997.9 中国Course表课程号课程名称书标识课程总学时周学时课程学分1数据库 1 60 432数学 2 120 443信息系统 370 434操作系统 4 42 435数据结构 5 46 446PASCAL语言 6 46 43Student_course表学号课程号成绩2001011922001012852001013882001022902001023801.SQL2000兼容2种连接形式用于FROM子句的ANSI连接语法和用于WHERE子句的SQLSERVER连接语法形式从student、course和student_course三张表中检索学生的学号、姓名、学习课程号、学习课程名及课程成绩,语句如下selectstudent.学号,student_course.学生姓名,student_course.课程号,course.课程名,student_course.成绩 fromstudentstudent_coursecoursewherestudent.学号=student_course.学号 and course.课程号=student_course.课程号 2.使用UNION子句进行查询使用UNION子句可以将一个或者多个表的某些数据类型相同的列显示在同一列上如从teacher表中列出教工号、姓名并从student表中列出学号及学生姓名,语句及查询结果如下select学号AS代码学生姓名AS姓名fromstudentunionselect教工号姓名fromteacher3.用GROUP子句进行查询如果要在数据检索时对表中数据按照一定条件进行分组汇总或求平均值,就要在SELECT语句中与GROUPBY子句一起使用__函数使用GROUPBY子句进行数据检索可得到数据分类的汇总统计、平均值或其他统计信息⑴使用不带H__ING的GROUPBY子句使用不带H__ING的GROUPBY子句汇总出student_course表中的学生的学号及总成绩,语句如下select‘学号’=student.学号,‘总成绩’=SUM(成绩)fromstudent_coursegroupby学号⑵使用带H__ING的GROUPBY子句使用带H__ING的GROUPBY子句汇总出student_course表中总分大于450分的学生的学号及总成绩,语句如下select‘学号’=学号,‘总成绩’=SUM(成绩)FROMstudent_courseGROUPBY学号H__INGSUM(成绩)4504.用COMPUTE和COMPUTEBY子句进行查询使用COMPUTE和COMPUTEBY既能浏览数据又能看到统计的结果⑴用COMPUTE子句汇总出student_course表中每个学生的学号及总成绩,语句如下select‘学号’=学号,‘成绩’=成绩fromstudent_courseORDERBY学号COMPUTESUM(成绩)⑵用COMPUTEBY子句按学号汇总出student_course表中每个学生的学号及总成绩,语句如下select‘学号’=学号,‘成绩’=成绩fromstudent_courseORDERBY学号COMPUTESUM(成绩)BY学号观察执行COMPUTE和COMPUTEBY子句的结果有什么不同?5.嵌套查询1使用IN或NOTIN关键字使用IN关键字查询出j10011班所有男生的学号、课程号及相应的成绩,语句如下selectstudent_course.学号student_course.课程号,student_course.成绩FROMstudent_courseWHERE学号IN(SELECT学号FROMstudentWHERE班级=‘j10011’AND性别=1)2使用EXISTS或NOTEXISTS关键字使用EXISTS关键字查询出‘j10011’班的学生的学号、课程号及相应的成绩,语句如下SELECTstudent_course.学号,student_course.课程号,student_course.成绩FROMstudent_courseWHEREEXIST(SELECT*FROMstudentWHEREstudent_course.学号=student.学号ANDstudent.班级=‘j10011’) 练习题练习1从PUBSSQLServer样本数据库中的authorstitleauthortitles表中选择出当年图书销量大于_____册的图书__名称和图书名称练习2统计各类图书的平__格练习3列出business类的图书名称和__,结果按__降序、书名升序排列练习4列出所有__为Oakland籍的图书练习5查询所在州没有出版社的那些__及其所在州名实验6数据库系统__
一、目的和要求1. 初步掌握数据库应用系统分析设计的基本方法;2. 基本掌握VB__数据库应用的过程;3. 进一步提高同学分析与解决问题的综合能力
二、实验名称与环境实验名称学生成绩管理系统系统采用C/S体系结构,客户端负责提供表达逻辑、显示用户界面信息、访问数据库服务器,采用VIUALBASIC6作为__工具;服务器端则用于提供数据服务,采用SQLServer2000作为数据库管理系统
三、实验要求1.数据库设计建立一个名为“成绩”的数据库数据库包含三个关系模式学生情况表、课程情况表、学生成绩表各个关系模式结构如下1)学生情况表学号(Char,9),姓名(Char,8)2)课程情况表课程号(Char,9),课程名(Char,30)3)学生成绩表学号(Char,9),课程号(Char,9),成绩(Int,3)4)用户表用户名(char,10),__(char,10)2.模块划分(见下图)3.各模块设计要求1)身份验证模块进入系统时,要求用户输入用户名和__(口令)身份验证通过才能进入系统,否则退出系统2)增加记录模块要求设计四个界面,分别用于向数据库增加学生记录、课程记录、成绩记录和用户输入相应数据后,首先应查询数据库中是否存在该记录,若已存在,则提示用户已存在该记录;若尚未有该记录,则将新数据追加的数据库中3)____记录模块提示用户输入学号和姓名后,自动显示指定学号和指定课程号对应记录的学生成绩,然后由用户修改修改成功后应向用户给出提示4)删除记录模块删除记录模块包含四个子模块删除学生记录、删除课程记录、删除成绩记录和删除用户记录删除学生记录和删除课程记录应保持数据的一致性例如,删除学生记录应将学生成绩表中的有关记录一起删除,删除课程记录也应将学生成绩表中的有关记录一起删除删除有关记录之前应向用户予以提示记录删除成功后也应向用户给予提示5)查询成绩模块用户输入指定学号后,应能将该学号的全部课程成绩用表格的形式显示出来;还能根据需要用报表的形式打印出来6)创建菜单创建主窗体,在其上建立菜单,用菜单将各模块__起来,形成一个完整的应用程序程序调试完成后,制作成名为“成绩管理系统”的可执行文件
四、界面设计
五、代码设计1.增加学生记录(Fr__ddStudent)模块Form_Load__代码PrivateSubForm_LoadMain声明一个记录集对象DimADOrsAsNewRecordset初始化文本框控件Text
1.Text=Text
2.Text=EndSubCom__nd1_Click(确定按钮)__代码PrivateSubCom__nd1_Click(确定按钮)__代码DimstrSQLAsString声明一个记录集对象DimADOrsAsNewRecordset与ADOcn连接对象关联ADOrs.ActiveConnection=ADOcnIfText
1.Text=ThenMsgBox未输入学号,请重新输入数据!vbCritical+vbOKOnlyExitSubEndIfIfText
2.Text=ThenMsgBox未输入姓名,请重新输入数据!vbCritical+vbOKOnlyExitSubEndIf首先查询表中是否存在关键字相同的记录strSQL=select*from学生情况表strSQL=strSQLWhere学号=+Text
1.Text+strSQL=strSQLand姓名=+Text
2.Text+ADOrs.OpenstrSQL如果关键字重复则退出IfNotADOrs.EOFThenMsgBox该记录已经存在不能继续增加vbCritical+vbOKOnlyExitSubEndIf拼写Insert插入语句strSQL=InsertInto学生情况表学号姓名strSQL=strSQL+Values+Text
1.Text+strSQL=strSQL++Text
2.Text++执行Insert语句ADOcn.ExecutestrSQLMsgBox已成功添加新记录vbQuestion+vbOKOnlyEndSubCom__nd2_Click(返回按钮)__代码PrivateSubCom__nd2_ClickUnloadMefrm__in.ShowEndSub2.增加课程记录(Fr__ddStudent)模块Form_Load__代码PrivateSubForm_LoadMain声明一个记录集对象DimADOrsAsNewRecordset初始化文本框控件Text
1.Text=Text
2.Text=EndSubCom__nd1_Click(确定按钮)__代码PrivateSubCom__nd1_ClickDimstrSQLAsString声明一个记录集对象DimADOrsAsNewRecordset与ADOcn连接对象关联ADOrs.ActiveConnection=ADOcnIfText
1.Text=ThenMsgBox未输入课程号,请重新输入数据!vbCritical+vbOKOnlyExitSubEndIfIfText
2.Text=ThenMsgBox未输入课程名,请重新输入数据!vbCritical+vbOKOnlyExitSubEndIf首先查询课程情况表中是否存在关键字相同的记录strSQL=select*from课程情况表strSQL=strSQLWhere课程号=+Text
1.Text+strSQL=strSQLand课程名=+Text
2.Text+ADOrs.OpenstrSQL如果关键字重复则退出IfNotADOrs.EOFThenMsgBox该记录已经存在不能继续增加vbCritical+vbOKOnlyExitSubEndIf拼写Insert插入语句strSQL=InsertInto课程情况表strSQL=strSQL+Values+Text
1.Text+strSQL=strSQL++Text
2.Text++执行Insert语句ADOcn.ExecutestrSQLMsgBox已成功添加新记录vbQuestion+vbOKOnlyEndSubCom__nd2_Click(返回按钮)__代码PrivateSubCom__nd2_ClickUnloadMefrm__in.ShowEndSub3.增加成绩记录(Fr__dd)模块Form_Load__代码PrivateSubForm_LoadMain声明一个记录集对象DimADOrsAsNewRecordsetDimADOrs1AsNewRecordset与ADOcn连接对象关联ADOrs.ActiveConnection=ADOcnADOrs
1.ActiveConnection=ADOcn对Combo1组合框进行初始化ADOrs.OpenSelect学号From学生情况表OrderBy学号Combo
1.ClearDoWhileNotADOrs.EOF添加学号字段值Combo
1.AddItemTrimADOrs.Fields学号取下一条记录ADOrs.MoveNextLoop对Combo2组合框进行初始化ADOrs.CloseADOrs.Openselect课程号from课程情况表OrderBy课程号Combo
2.ClearDoWhileNotADOrs.EOF添加课程号字段值Combo
2.AddItemTrimADOrs.Fields课程号取下一条记录ADOrs.MoveNextLoopADOrs.Close初始化文本框控件Text
1.Text=Text
2.Text=Text
3.Text=0EndSubCom__nd3_Click(框架内的确定按钮)__代码PrivateSubCom__nd3_Click声明一个记录集对象DimADOrsAsNewRecordset与ADOcn连接对象关联ADOrs.ActiveConnection=ADOcnstrSQL=select*from学生情况表strSQL=strSQL+Where学号=+Combo
1.Text+ADOrs.OpenstrSQLText
1.Text=ADOrs.Fields姓名声明一个记录集对象DimADOrs1AsNewRecordset与ADOcn连接对象关联ADOrs
1.ActiveConnection=ADOcnstrSQL=select*from课程情况表strSQL=strSQL+Where课程号=+Combo
2.Text+ADOrs
1.OpenstrSQLText
2.Text=ADOrs
1.Fields课程名EndSubCom__nd1_Click(确定按钮)__代码PrivateSubCom__nd1_ClickDimstrSQLAsString声明一个记录集对象DimADOrsAsNewRecordset与ADOcn连接对象关联ADOrs.ActiveConnection=ADOcnIfCombo
1.Text=OrCombo
2.Text=ThenMsgBox输入数据不全,请重新输入数据!vbCritical+vbOKOnlyExitSubEndIf首先查询表中是否存在关键字相同的记录strSQL=select*from学生成绩表strSQL=strSQLWhere学号=+Combo
1.Text+strSQL=strSQLand课程号=+Combo
2.Text+ADOrs.OpenstrSQL如果关键字重复则退出IfNotADOrs.EOFThenMsgBox该记录已经存在不能继续增加vbCritical+vbOKOnlyExitSubEndIf拼写Insert插入语句strSQL=InsertInto学生成绩表学号课程号成绩strSQL=strSQL+Values+Combo
1.Text+strSQL=strSQL+Combo
2.Text++StrValText
3.Text+执行Insert语句ADOcn.ExecutestrSQLMsgBox已成功添加新记录vbQuestion+vbOKOnlyEndSubCom__nd2_Click(返回按钮)__代码PrivateSubCom__nd2_ClickUnloadMefrm__in.ShowEndSub4.增加用户模块(Fr__ddUser)代码Form_Load__代码PrivateSubForm_LoadMainEndSubCom__nd1_Click(确定按钮)__代码PrivateSubCom__nd1_ClickDimstrSQLAsString声明一个记录集对象DimADOrsAsNewRecordset与ADOcn连接对象关联ADOrs.ActiveConnection=ADOcnUserName=Text
1.TextPaasWord=Text
2.TextPaasWord1=Text
3.TextIfText
1.Text=ThenMsgBox未输入用户名,请重新输入!vbCritical+vbOKOnlyExitSubEndIfIfText
2.Text=ThenMsgBox未输入__,请重新输入!vbCritical+vbOKOnlyExitSubEndIfIfText
3.Text=ThenMsgBox未确认__,请重新输入!vbCritical+vbOKOnlyExitSubEndIfIfPaasWordPaasWord1ThenMsgBox两次输入的__不一致,请重新输入!vbCritical+vbOKOnlyText
1.Text=Text
2.Text=Text
3.Text=GoToEnd1EndIf首先查询用户中是否存在相同的记录strSQL=Select*From用户strSQL=strSQL+Where用户名=+UserName+strSQL=strSQL+And__=+PaasWord+ADOrs.OpenstrSQL如果关键字重复则退出IfNotADOrs.EOFThenMsgBox该用户已经存在请重新注册vbCritical+vbOKOnlyExitSubEndIf拼写Insert插入语句strSQL=InsertInto用户用户名__strSQL=strSQL+Values+UserName++PaasWord+执行Insert语句ADOcn.ExecutestrSQLMsgBox已成功添加新记录vbQuestion+vbOKOnlyEnd1:EndSubCom__nd2_Click(返回按钮)__代码PrivateSubCom__nd2_ClickUnloadMefrm__in.ShowEndSub5.删除学生记录(FrmDeleteStudent)模块Form_Load__代码PrivateSubForm_LoadMainDimxmAsStringDimxhAsString声明一个记录集对象DimADOrsAsNewRecordsetDimADOrs1AsNewRecordset与ADOcn连接对象关联ADOrs.ActiveConnection=ADOcnADOrs
1.ActiveConnection=ADOcn对Combo1组合框进行初始化ADOrs.Openselect学号from学生情况表OrderBy学号Combo
1.ClearDoWhileNotADOrs.EOF添加学号字段值Combo
1.AddItemTrimADOrs.Fields学号取下一条记录ADOrs.MoveNextLoop对Combo2组合框进行初始化ADOrs
1.Openselect姓名from学生情况表OrderBy学号Combo
2.ClearDoWhileNotADOrs
1.EOF添加姓名字段值Combo
2.AddItemTrimADOrs
1.Fields姓名取下一条记录ADOrs
1.MoveNextLoopADOrs.CloseADOrs
1.CloseEndSubCom__nd3_Click(框架内的确定按钮)__代码PrivateSubCom__nd3_ClickDimxmAsStringDimxhAsStringfrm__in.HideDimstrSQLAsStringDimADOrsAsNewRecordsetADOrs.ActiveConnection=ADOcnDimADOrs1AsNewRecordsetADOrs
1.ActiveConnection=ADOcnDimADOrs2AsNewRecordsetADOrs
2.ActiveConnection=ADOcnIfCombo
1.Text=AndCombo
2.Text=ThenMsgBox学号和姓名不能同时为空,请重新输入!vbQuestion+vbOKOnlyExitSubEndIfIfCombo
1.TextAndCombo
2.Text=ThenADOrs.OpenSelect姓名From学生情况表Where学号=+Combo
1.Text+IfADOrs.EOFThenMsgBox学生情况表中没有学号为+Combo
1.Text+的记录,请重新输入!vbQuestion+vbOKOnlyCombo
1.Text=ExitSubElsexm=ADOrs.Fields姓名Combo
2.Text=xmxh=Combo
1.TextEndIfEndIfIfCombo
2.TextAndCombo
1.Text=ThenADOrs
1.OpenSelect学号From学生情况表Where姓名=+Combo
2.Text+IfADOrs
1.EOFThenMsgBox学生情况表中没有姓名为+Combo
2.Text+的记录,请重新输入!vbQuestion+vbOKOnlyCombo
2.Text=ExitSubElsexh=ADOrs
1.Fields学号Combo
1.Text=xhxm=Combo
2.TextEndIfEndIf查询形式学生情况表中是否有指定学号和指定姓名的记录IfCombo
1.TextAndCombo
2.TextThenADOrs
2.OpenSelect*From学生情况表Where学号=+Combo
1.Text++And姓名=+Combo
2.Text+IfADOrs
2.EOFThenMsgBox学生情况表中没有学号为+Combo
1.Text+和姓名为+Combo
2.Text+的记录,请重新输入!vbQuestion+vbOKOnlyCombo
1.Text=Combo
2.Text=ExitSubElsexh=ADOrs
2.Fields学号xm=ADOrs
2.Fields姓名Combo
1.Text=xhCombo
2.Text=xmEndIfEndIfEndSubCom__nd1_Click(确定按钮)__代码PrivateSubCom__nd1_ClickDimxmAsStringDimxhAsStringfrm__in.HideDimstrSQLAsStringDimADOrsAsNewRecordsetADOrs.ActiveConnection=ADOcnIfCombo
1.Text=OrCombo
2.Text=ThenMsgBox学号和姓名不能为空,请重新输入!vbQuestion+vbOKOnlyExitSubEndIfIfMsgBox删除学号为+xh+姓名为+xm+的学生记录,该学生在学生成绩表中的全部记录也将一起删除,是否继续?vbQuestion+vbYesNo=vbYesThen拼写Delete学生成绩表指定记录语句strSQL=DeleteFrom学生成绩表strSQL=strSQL+Where学号=+Combo
1.Text+执行Delete语句ADOcn.ExecutestrSQL拼写Delete学生情况表指定记录语句strSQL=DeleteFrom学生情况表strSQL=strSQL+Where学号=+Combo
1.Text+执行Delete语句ADOcn.ExecutestrSQLMsgBox删除成功!vbQuestion+vbOKOnlyEndIfEndSubCom__nd2_Click(返回按钮)__代码PrivateSubCom__nd2_ClickUnloadMefrm__in.ShowEndSub6.删除课程记录(FrmDeleteCourse)模块SubForm_Load__代码PrivateSubForm_LoadMainDimkcmAsStringDimkchAsString声明一个记录集对象DimADOrsAsNewRecordsetDimADOrs1AsNewRecordset与ADOcn连接对象关联ADOrs.ActiveConnection=ADOcnADOrs
1.ActiveConnection=ADOcn对Combo1组合框进行初始化ADOrs.Openselect课程号from课程情况表OrderBy课程号Combo
1.ClearDoWhileNotADOrs.EOF添加课程号字段值Combo
1.AddItemTrimADOrs.Fields课程号取下一条记录ADOrs.MoveNextLoop对Combo2组合框进行初始化ADOrs
1.Openselect课程名from课程情况表OrderBy课程号Combo
2.ClearDoWhileNotADOrs
1.EOF添加课程名字段值Combo
2.AddItemTrimADOrs
1.Fields课程名取下一条记录ADOrs
1.MoveNextLoopADOrs.CloseADOrs
1.CloseEndSubCom__nd3_Click(框架内的确定按钮)__代码PrivateSubCom__nd3_ClickDimkcmAsStringDimkchAsString声明一个记录集对象DimADOrsAsNewRecordsetADOrs.ActiveConnection=ADOcnDimADOrs1AsNewRecordsetADOrs
1.ActiveConnection=ADOcnDimADOrs2AsNewRecordsetADOrs
2.ActiveConnection=ADOcnIfCombo
1.Text=AndCombo
2.Text=ThenMsgBox课程号和课程名不能同时为空,请重新输入!vbQuestion+vbOKOnlyEndIf查询课程情况表中是否有指定课程号和指定课程名的记录IfCombo
1.TextAndCombo
2.TextThenADOrs.OpenSelect*From课程情况表Where课程号=+Combo
1.Text++And课程名=+Combo
2.Text+IfADOrs.EOFThenMsgBox课程情况表中没有课程号为+Combo
1.Text+和课程名为+Combo
2.Text+的记录,请重新输入!vbQuestion+vbOKOnlyCombo
1.Text=Combo
2.Text=ExitSubElsexh=ADOrs.Fields学号xm=ADOrs.Fields姓名Combo
1.Text=xhCombo
2.Text=xmEndIfEndIf查询课程情况表中是否有指定课程号的记录IfCombo
1.TextAndCombo
2.Text=ThenADOrs
1.OpenSelect课程名From课程情况表Where课程号=+Combo
1.Text+IfADOrs
1.EOFThenMsgBox课程情况表中没有课程号为+Combo
1.Text+的记录,请重新输入!vbQuestion+vbOKOnlyCombo
1.Text=ExitSubElsekcm=ADOrs
1.Fields课程名Combo
2.Text=kcmkch=Combo
1.TextEndIfEndIf查询课程情况表中是否有指定课程名的记录IfCombo
2.TextAndCombo
1.Text=ThenADOrs
2.OpenSelect课程号From课程情况表Where课程名=+Combo
2.Text+IfADOrs
2.EOFThenMsgBox课程情况表中没有课程名为+Combo
2.Text+的记录,请重新输入!vbQuestion+vbOKOnlyCombo
2.Text=ExitSubElsekch=ADOrs
2.Fields课程号Combo
1.Text=kchkcm=Combo
2.TextEndIfEndIfEndSubCom__nd1_Click(确定按钮)__代码PrivateSubCom__nd1_ClickDimkcmAsStringDimkchAsStringfrm__in.HideDimstrSQLAsStringIfCombo
1.Text=OrCombo
2.Text=ThenMsgBox课程号或课程名不能为空,请重新输入!vbQuestion+vbOKOnlyExitSubEndIfIfMsgBox删除课程号为+kch+课程名为+kcm+的课程记录,该课程在学生成绩表中的全部记录也将一起删除,是否继续?vbQuestion+vbYesNo=vbYesThen拼写Delete学生成绩表指定记录语句strSQL=DeleteFrom学生成绩表strSQL=strSQL+Where课程号=+Combo
1.Text+执行Delete语句ADOcn.ExecutestrSQL拼写Delete课程情况表指定记录语句strSQL=DeleteFrom课程情况表strSQL=strSQL+Where课程号=+Combo
1.Text+执行Delete语句ADOcn.ExecutestrSQLMsgBox删除成功!vbQuestion+vbOKOnlyEndIfEndSubCom__nd2_Click(返回按钮)__代码PrivateSubCom__nd2_ClickUnloadMefrm__in.ShowEndSub7.删除成绩(FrmDelete)模块Form_Load__代码PrivateSubForm_LoadMainDimcjAsInteger声明一个记录集对象DimADOrsAsNewRecordsetDimADOrs1AsNewRecordset与ADOcn连接对象关联ADOrs.ActiveConnection=ADOcnADOrs
1.ActiveConnection=ADOcn对Combo1组合框进行初始化ADOrs.Openselect学号from学生情况表OrderBy学号Combo
1.ClearDoWhileNotADOrs.EOF添加学号字段值Combo
1.AddItemTrimADOrs.Fields学号取下一条记录ADOrs.MoveNextLoop对Combo2组合框进行初始化ADOrs
1.Openselect课程号from课程情况表OrderBy课程号Combo
2.ClearDoWhileNotADOrs
1.EOF添加课程号字段值Combo
2.AddItemTrimADOrs
1.Fields课程号取下一条记录ADOrs
1.MoveNextLoopADOrs.CloseADOrs
1.Close初始化文本框控件EndSubCom__nd3_Click(框架内的确定按钮)__代码PrivateSubCom__nd3_ClickDimxhAsStringDimxmAsStringDimkchAsStringDimkcmAsStringfrm__in.HideDimstrSQLAsStringDimADOrsAsNewRecordsetADOrs.ActiveConnection=ADOcnDimADOrs1AsNewRecordsetADOrs
1.ActiveConnection=ADOcnDimADOrs2AsNewRecordsetADOrs
2.ActiveConnection=ADOcnIfCombo
1.Text=ThenMsgBox学号不能为空,请重新输入!vbQuestion+vbOKOnlyCombo
1.Text=Combo
2.Text=Text
1.Text=Text
2.Text=Text
3.Text=ExitSubEndIfIfCombo
2.Text=ThenMsgBox课程号不能为空,请重新输入!vbQuestion+vbOKOnlyCombo
1.Text=Combo
2.Text=Text
1.Text=Text
2.Text=Text
3.Text=ExitSubEndIf查询学生情况表中是否有指定学号的记录IfCombo
1.TextThenADOrs
1.OpenSelect姓名From学生情况表Where学号=+Combo
1.Text+IfADOrs
1.EOFThenMsgBox学生情况表中没有学号为+Combo
1.Text+的记录,请重新输入!vbQuestion+vbOKOnlyCombo
1.Text=Combo
2.Text=Text
1.Text=Text
2.Text=Text
3.Text=ExitSubElse若有指定学号的学生记录,则将姓名字段值填写的text
1.textxm=ADOrs
1.Fields姓名Text
1.Text=xmxh=Combo
1.TextEndIfEndIf查询课程情况表中是否有指定课程号的记录IfCombo
2.TextThenADOrs
2.OpenSelect课程名From课程情况表Where课程号=+Combo
2.Text+IfADOrs
2.EOFThenMsgBox课程情况表中没有课程号为+Combo
2.Text+的记录,请重新输入!vbQuestion+vbOKOnlyCombo
1.Text=Combo
2.Text=Text
1.Text=Text
2.Text=Text
3.Text=ExitSubElse若有指定课程号的课程记录,则将课程名字段值填写的text
2.textkcm=ADOrs
2.Fields课程名Text
2.Text=kcmkcm=Combo
2.TextEndIfEndIf查询学生表中是否有指定指定学号与课程号的记录IfCombo1AndCombo1ThenstrSQL=select*from学生成绩表strSQL=strSQLWhere学号=+Combo
1.Text+strSQL=strSQLand课程号=+Combo
2.Text+ADOrs.OpenstrSQLIfADOrs.EOFThenMsgBox学生成绩表在不存在学号为+Combo
1.Text+课程号为+Combo
2.Text+的记录,请重新输入!vbCritical+vbOKOnlyCombo
1.Text=Combo
2.Text=Text
1.Text=Text
2.Text=Text
3.Text=ExitSubElsecj=ValADOrs.Fields成绩Text
3.Text=cjEndIfEndIfEndSubCom__nd1_Click(确定按钮)__代码PrivateSubCom__nd1_Clickfrm__in.HideDimstrSQLAsStringIfMsgBox是否要删除学号为+Combo
1.Text+课程号为+Combo
2.Text+的成绩记录?vbQuestion+vbYesNo=vbYesThen拼写Delete语句strSQL=DeleteFrom学生成绩表strSQL=strSQL+Where学号=+Combo
1.Text+strSQL=strSQL+And课程号=+Combo
2.Text+执行Delete语句ADOcn.ExecutestrSQLMsgBox删除成功!vbQuestion+vbOKOnlyEndIfEndSubCom__nd2_Click(返回按钮)__代码PrivateSubCom__nd2_ClickUnloadMefrm__in.ShowEndSub8.删除用户(FrmDeleteUser)模块代码Com__nd1_Click(确定按钮)__代码Form_Load__代码PrivateSubForm_LoadMain声明一个记录集对象DimADOrsAsNewRecordsetDimADOrs1AsNewRecordset与ADOcn连接对象关联ADOrs.ActiveConnection=ADOcnADOrs
1.ActiveConnection=ADOcnEndSubCom__nd1_Click(确定按钮)__代码PrivateSubCom__nd1_ClickDimyhmAsStringDimmmAsStringfrm__in.HideDimstrSQLAsStringDimADOrs2AsNewRecordsetADOrs
2.ActiveConnection=ADOcnADOrs
2.OpenSelect*From用户Where用户名=+Text
1.Text++And__=+Text
2.Text+IfADOrs
2.EOFThenMsgBox用户中没有用户名为“+Text
1.Text+”__为“+Text
2.Text+”的记录,请重新输入!vbQuestion+vbOKOnlyExitSubEndIfIfMsgBox是否删除用户名为“+Text
1.Text+”__为“+Text
2.Text+”的用户记录?vbQuestion+vbYesNo=vbYesThen拼写Delete用户指定记录语句strSQL=DeleteFrom用户strSQL=strSQL+Where用户名=+Text
1.Text++And__=+Text
2.Text+执行Delete语句ADOcn.ExecutestrSQLMsgBox删除成功!vbQuestion+vbOKOnlyEndIfEndSubCom__nd2_Click(返回按钮)__代码PrivateSubCom__nd2_ClickUnloadMefrm__in.ShowEndSub9.____(FrmUpdate)模块代码Form_Load__代码PrivateSubForm_LoadMainDimxhxmkchkcmAsStringDimcjAsInteger声明一个记录集对象DimADOrsAsNewRecordsetDimADOrs1AsNewRecordsetDimADOrs2AsNewRecordset与ADOcn连接对象关联ADOrs.ActiveConnection=ADOcnADOrs
1.ActiveConnection=ADOcn对Combo1组合框进行初始化ADOrs.Openselect学号from学生情况表OrderBy学号Combo
1.ClearDoWhileNotADOrs.EOF添加学号字段值Combo
1.AddItemTrimADOrs.Fields学号取下一条记录ADOrs.MoveNextLoop对Combo2组合框进行初始化ADOrs
1.Openselect课程号from课程情况表OrderBy课程号Combo
2.ClearDoWhileNotADOrs
1.EOF添加课程号字段值Combo
2.AddItemTrimADOrs
1.Fields课程号取下一条记录ADOrs
1.MoveNextLoopADOrs.Close初始化文本框控件Text
1.Text=Text
2.Text=Text
3.Text=0EndSubCom__nd3_Click(框架内的确定按钮)__代码PrivateSubCom__nd3_Clickfrm__in.HideDimstrSQLAsStringDimADOrsAsNewRecordsetADOrs.ActiveConnection=ADOcnDimADOrs1AsNewRecordsetADOrs
1.ActiveConnection=ADOcnDimADOrs2AsNewRecordsetADOrs
2.ActiveConnection=ADOcnIfCombo
1.Text=ThenMsgBox学号不能为空,请重新输入!vbQuestion+vbOKOnlyCombo
1.Text=Combo
2.Text=ExitSubEndIfIfCombo
2.Text=ThenMsgBox课程号不能为空,请重新输入!vbQuestion+vbOKOnlyCombo
1.Text=Combo
2.Text=ExitSubEndIf查询学生情况表中是否有指定学号的记录IfCombo
1.TextThenADOrs
1.OpenSelect姓名From学生情况表Where学号=+Combo
1.Text+IfADOrs
1.EOFThenMsgBox学生情况表中没有学号为+Combo
1.Text+的记录,请重新输入!vbQuestion+vbOKOnlyCombo
1.Text=ExitSubElse若有指定学号的学生记录,则将姓名字段值填写的text
1.textxm=ADOrs
1.Fields姓名Text
1.Text=xmxh=Combo
1.TextEndIfEndIf查询课程情况表中是否有指定课程号的记录IfCombo
2.TextThenADOrs
2.OpenSelect课程名From课程情况表Where课程号=+Combo
2.Text+IfADOrs
2.EOFThenMsgBox课程情况表中没有课程号为+Combo
2.Text+的记录,请重新输入!vbQuestion+vbOKOnlyCombo
2.Text=ExitSubElse若有指定课程号的课程记录,则将课程名字段值填写的text
2.textkcm=ADOrs
2.Fields课程名Text
2.Text=kcmkcm=Combo
2.TextEndIfEndIf查询学生表中是否有指定指定学号与课程号的记录strSQL=select*from学生成绩表strSQL=strSQLWhere学号=+Combo
1.Text+strSQL=strSQLand课程号=+Combo
2.Text+ADOrs.OpenstrSQLIfADOrs.EOFThenMsgBox学生成绩表在不存在学号为+Combo
1.Text+课程号为+Combo
2.Text+的记录,请重新输入!vbCritical+vbOKOnlyCombo
1.Text=Combo
2.Text=Text
1.Text=Text
2.Text=Text
3.Text=ExitSubElsecj=ADOrs.Fields成绩Text
3.Text=cjEndIfEndSubCom__nd1_Click(确定按钮)__代码PrivateSubCom__nd1_ClickIfMsgBox是否要修改学号为+xh+姓名为+xm+课程号为+kch+课程名为+kcm+的课程成绩?vbQuestion+vbYesNo=vbYesThenDimstrSQLAsString拼写Update语句strSQL=Update学生成绩表strSQL=strSQL+Set成绩=+Text
3.TextstrSQL=strSQL+Where学号=+Combo
1.Text+strSQL=strSQL+And课程号=+Combo
2.Text+执行Updata语句ADOcn.ExecutestrSQLMsgBox修改成功!vbQuestion+vbOKOnlyEndIfEndSubCom__nd2_Click(返回按钮)__代码PrivateSubCom__nd2_ClickUnloadMefrm__in.ShowEndSub10.查询成绩模块(FrmQuery)代码Form_Load__代码PrivateSubForm_LoadMain声明一个记录集对象DimADOrsAsNewRecordsetDimADOrs1AsNewRecordsetDimADOrs2AsNewRecordset与ADOcn连接对象关联ADOrs.ActiveConnection=ADOcnADOrs
1.ActiveConnection=ADOcnADOrs
2.ActiveConnection=ADOcn对Combo1组合框进行初始化ADOrs.Openselect学号from学生情况表OrderBy学号Combo
1.ClearDoWhileNotADOrs.EOF添加学号字段值Combo
1.AddItemTrimADOrs.Fields学号取下一条记录ADOrs.MoveNextLoopADOrs.CloseText
1.Text=EndSubCom__nd3_Click(查询按钮)__代码PrivateSubCom__nd3_Click声明一个记录集对象DimADOrsAsNewRecordset与ADOcn连接对象关联ADOrs.ActiveConnection=ADOcnstrSQL=select*from学生情况表strSQL=strSQL+Where学号=+Combo
1.Text+ADOrs.OpenstrSQLIfADOrs.EOFThenMsgBox数据库中找不到学号为+Combo
1.Text+的记录,请重新输入!ElseText
1.Text=ADOrs.Fields姓名EndIfDimstrSQL2strRecord2AsStringMain声明一个记录集对象DimADOrs2AsNewRecordset与ADOcn连接对象关联ADOrs
2.ActiveConnection=ADOcn拼写Select语句strSQL2=Select学生成绩表.学号学生成绩表.课程号学生成绩表.成绩strSQL2=strSQL2+学生情况表.姓名课程情况表.课程名strSQL2=strSQL2+From学生成绩表学生情况表课程情况表strSQL2=strSQL2+Where学生成绩表.学号=学生情况表.学号strSQL2=strSQL2+And学生成绩表.课程号=课程情况表.课程号strSQL2=strSQL2+And学生成绩表.学号=+Combo
1.Text+执行Select语句ADOrs
2.OpenstrSQL2初始化MSFlexGrid表格MSFlexGrid
1.Clear清空MSFlexGrid
1.Rows=0行数MSFlexGrid
1.Cols=5列数设置表格标题栏strRecord=学号+vbTab+姓名+vbTab+课程号strRecord=strRecord+vbTab+课程名+vbTab+成绩MSFlexGrid
1.AddItemstrRecord从第一条记录开始循环直至表尾DoWhileNotADOrs
2.EOF拼写表格内容strRecord=TrimADOrs
2.Fields学号+vbTab+TrimADOrs
2.Fields姓名+vbTabstrRecord=strRecord+TrimADOrs
2.Fields课程号+vbTab+TrimADOrs
2.Fields课程名strRecord=strRecord+vbTab+TrimStrADOrs
2.Fields成绩向表格内添加行MSFlexGrid
1.AddItemstrRecord取下一条记录ADOrs
2.MoveNextLoopEndSubCom__nd1_Click(打印按钮)__代码PrivateSubCom__nd1_ClickDimstrSQLstrRecordAsStringMain声明一个记录集对象DimADOrsAsNewRecordset与ADOcn连接对象关联ADOrs.ActiveConnection=ADOcn拼写Select语句strSQL=Select学生成绩表.学号学生成绩表.课程号strSQL=strSQL+学生情况表.姓名课程情况表.课程名学生成绩表.成绩strSQL=strSQL+From学生成绩表学生情况表课程情况表strSQL=strSQL+Where学生成绩表.学号=学生情况表.学号strSQL=strSQL+And学生成绩表.课程号=课程情况表.课程号strSQL=strSQL+And学生成绩表.学号=+Combo
1.Text+执行Select语句ADOrs.OpenstrSQLIfADOrs.EOFThenMsgBox数据库中找不到该记录,请重新输入!Else设置报表对象的DataSour__属性SetDataReport
1.DataSour__=ADOrs.DataSour__设置报表对象的DataMember属性DataReport
1.DataMember=ADOrs.DataMember显示报表窗体DataReport
1.ShowEndIfEndSubCom__nd2_Click(返回按钮)__代码PrivateSubCom__nd2_ClickUnloadMefrm__in.ShowEndSub11.主模块(Frm__in)代码增加课程(AddCourse)菜单项单击__代码PrivateSubAddCourse_ClickIndexAsIntegerfr__ddCourse.ShowEndSub增加成绩(AddGrade)菜单项单击__代码PrivateSubAddGrade_ClickIndexAsIntegerFr__dd.ShowEndSub增加学生(AddStudent)菜单项单击__代码PrivateSubAddStudent_ClickIndexAsIntegerFr__ddStudent.ShowEndSub增加用户(AddUser)菜单项单击__代码PrivateSubAddUser_ClickFr__ddUser.ShowEndSub删除课程(DeleteCourse)菜单项单击__代码PrivateSubDeleteCourse_ClickfrmDeleteCourse.ShowEndSub删除成绩(DeleteGrade)菜单项单击__代码PrivateSubDeleteGrade_ClickfrmDelete.ShowEndSub删除学生(DeleteStudent)菜单项单击__代码PrivateSubDeleteStudent_ClickfrmDeleteStudent.ShowEndSub删除用户(DeleteUser)菜单项单击__代码PrivateSubDeleteUser_ClickfrmDeleteUser.ShowEndSub返回菜单项单击__代码PrivateSubExit_ClickEndEndSub查询成绩(Query)菜单项单击__代码PrivateSubQuery_ClickfrmQuery.ShowEndSub修改(Update单项单击__代码PrivateSubUpdate_ClickFrmUpdate.ShowEndSub12.身份验证模块(FrmText)模块Form_Load__代码PrivateSubForm_LoadMainDimUserNameAsStringDimPassWordAsStringEndSubCom__nd1_Click(确定按钮)__代码PrivateSubCom__nd1_ClickDimstrSQLAsString声明一个记录集对象DimADOrsAsNewRecordset与ADOcn连接对象关联ADOrs.ActiveConnection=ADOcnUserName=Text
1.TextPaasWord=Text
2.Text首先查询用户表中是否存在该记录strSQL=Select*From用户strSQL=strSQL+Where用户名=+UserName+strSQL=strSQL+And__=+PaasWord+ADOrs.OpenstrSQL如果关键字重复则退出IfADOrs.EOFThenMsgBox用户身份确认失败,退出应用!vbCritical+vbOKOnlyEndElseMsgBox欢迎您使用本系统!vbCritical+vbOKOnlyUnloadMefrm__in.ShowEndIfEndSub13.模块代码声明全局变量ADOcn,用于创建与数据库的连接PublicADOcnAsConnection__in过程代码PublicSubMain定义数据库连接字符串DimstrSQLServerAsStringstrSQLServer=Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;PersistSecurityInfo=False;InitialCatalog=成绩;DataSour__=lg’注意不同的服务器strSQLServer字符串不同,应根据自己的机器选择不同的strSQLServer字符串如果还没有建立与数据库的连接,则用以下代码创建IfADOcnIsNothingThenSetADOcn=NewConnectionADOcn.OpenstrSQLServer连接SQLServer数据库EndIffrmText.Show显示主窗体EndSub选择此选项系统主模块身份验证修改成绩返回删除删除学生记录删除课程记录删除成绩记录删除用户记录查询增加增加学生记录增加课程记录增加成绩记录增加用户打印学生成绩查询学生成绩增加学生记录窗体增加课程记录窗体增加成绩记录窗体增加用户窗体删除学生记录窗体删除课程记录窗体删除成绩记录窗体删除用户窗体____窗体成绩查询窗体主模块窗体身份验证窗体。