SQL实训报告
SQLServer实训报告
班级:姓名:学号:实训名称:SQLServer数据库应用技术实训题目:教学信息管理
实训目的:通过本次实训,使学生了解开发数据库应用程序的过程;通过数据库设计,加深对数据库基础理论的理解并能灵活运用;掌握利用SQLServer201*数据库管理系统创建、管理、维护数据库的基本方法及过程;培养开发数据库的设计思维。实训内容:
本人与郭晓峰主要负责‘教学信息管理’系统。
主要包括数据的导入和导出、数据库结构的分析与建立、表关系的添加、查询、外关键字的约束、检查约束、默认值、试图、表存储过程和触发器的学习,以及在表的操作过程中,有查看表信息、查看表属性、修改表中的数据、删除表中的数据及修改表和删除表的操作。本人主要负责数据的导入,数据库的建立,查询数据库的建立:包括数据附加分离数据导入:导入EXCEL表中各个数据(学生信息表班机信息表学生成绩表授课表教师表课程信息表)
查询:查询学生记录数查询成绩平均分上课人数学校人员低于平均分者学生信息低于平均分者自定义函数
一总体设计思路
当看到这个题目我想到一个完整的教学信息管理应包括:学生信息表、班级信息表、课程信息表、学生成绩表、教师表、授课表等。在整个系统中有两个实体:学生和老师。二表结构
我的系统有六张表组成:学生信息表
列名数据类型宽度允许空值说明学号char4否主键姓名char10是性别char2是默认值:男班级号char8是专业char20是系别char20是联系电话char20是入学日期datetime8是备注char50是班级信息表
列名数据类型宽度允许空值说明班级号Char8否主键、外键年级Char8是班主任Char8是教师号char8是课程信息表
列名数据类型宽度允许空值说明课程号Char8否主键课程名称Char10是课程类型Char8是学分Char8是课程说明Char10是学生成绩表
列名数据类型宽度允许空值说明学号Char8否主键班级号Char8是学期Char8是课程号Char是课程名称Char8是成绩decimal8是教师表
列名数据类型宽度允许空值说明教工号Char8否主键教师姓名Char8是性别Char8是职称Char8是授课表
列名数据类型宽度允许空值说明教工号Char8否主键课程号char8是Excel表格主要如下:班级信息
学生信息
学生成绩教师表授课表
课程信息:
二数据库的建立:
1在开始菜单中选择“程序MicrosoftSqlServer企业管理器”选型,就启动了企业管理器,打开工具窗口如图所示
2在企业管理器树状目录窗口中展开一个服务器组,选定服务器。然后在该服务器下的‘数据库’结点上单击鼠标右键,快捷菜单中的‘新建数据库’选项出现数据库属性对话框,如下图所示
3数据库属性有三个标签,用来数据名称和数据文件,日志文件的名称、位置、初始大小和属性等内容。
在‘常规‘标签的名称文本框中输入’教学管理系统‘选择服务器默认设置的排序规则名称4数据文件、日志文件均按服务器默认的数值
三数据的导入如下:
1在‘教学管理系统‘数据库节点上单击鼠标右键’,在‘所有任务’菜单上单击‘导入数据’选项启动后,显示初始工作界面如下图:
‘数据源’选择microsoftExcel97-201*,‘文件名’选择所需的表,单击下一步,过程如下图所示:
四查询过程(1)查询学生信息的学生人数。
use教学信息管理
declare@recordcountint
select@recordcount=count(*)from学生信息表
select@recordcountas"学生表(学生信息表)中记录数"go
查询结果
(2)查询学校人员use教学信息管理
select教师姓名+职称as"学校人员"from教师表查询结果
(3)查询平均分,首先要自定义函数1、use教学信息管理go
createfunctionaverage_1()returnsrealbegin
declare@averreal
select@aver=(selectavg(成绩)from学生成绩)return@averend
2、use教学信息管理go
selectdbo.average_1()as总平均分select*from学生成绩$
where成绩>dbo.average_1()查询结果
(4)查询低于平均分人数查询结果
use教学信息管理
selectdistinct学号as分数低于平均分者from学生成绩
where成绩查询结果
(6)查询上课人数use教学信息管理go
declare@recordint
select@record=count(*)from学生信息表if@record>40begin
print"该班有"+ltrim(str(@record))+"人"print"进行分班上课"endelsebegin
print"该班有"+ltrim(str(@record))+"人"print"单班上课"end
查询结果
五实训总结
我们进入了一个新的充满机遇与挑战的时代,信息系统在管理各项事务中有着普遍的应用,促进了企业管理工作的提升。管理信息系统是为管理服务的,它的开发和建立使企业摆脱落后的管理方式,实现管理现代化的有效途径。管理信息系统将管理工作统一化、规范化、现代化,极大地提高了管理的效率,使现代化管理形成统一、高效的系统。管理信息系统使用系统思想建立起来的,以计算机为信息处理手段,以现代化通信设备为基本传输工具,能力管理决策者提供信息服务的人机系统,这无疑是将管理与现代化接轨,以科技提高管理质量的重大举措。管理信息系统将大量复杂的信息处理交给计算机,使人和计算机充分发挥各自的特长,组织一个和谐、有效的系统,为现代化管理带来便捷。?
数据库是计算机应用的一项重要技术。通过这次的实训,学到了很多的东西,首先是小组成员的协调工作,分配工作,知道了团结的力量与重要性,其次是我把课本里的难关攻克了,查询就是我的难关,在这两周的实训中,了解了查询的相关内容,对查询再也不是茫然的!。本数据库与课本内容紧密结合,结构紧凑,根据所学知识,建立了教学性能系管理系统,建表时也有很多困难,要考虑字段的类型,长度、主键的建立等等
Excel表的导入也不是那么顺利,经过失败的尝试,还是完美的导入到数据库中。
查询是SqlServer中的重中之重,在制作过程中,也是小组最努力的地方,了解查询语句的先后顺序,例如selectfromwherebegincreate这些单词的在Sqlserver中的主要功能。有时在查询中会遇到把它们的顺序写错,有时会把表里的字段弄错。但最终还是克服了种种难题,经过我们的努力最终完成了教学信息管理系统。
虽然不是最好的,但我相信,只要努力了,付出了,把不明白的弄懂了,学会了,才是关键!
扩展阅读:SQL Server 201*实习报告
一、实验二实验目的
1、掌握使用SQL语句创建和删除数据库;
2、掌握使用SQL语句创建和删除数据表,创建各种完整性约束,修改表的结构;3、掌握索引的创建和删除方法。
实验三实验目的
掌握查询语句的使用方法,重点掌握连接查询和嵌套查询,理解查询的执行过程。
实验四实验目的
1、掌握数据更新语句的使用;
2、掌握视图操作的基本方法和应用,理解基于视图的查询和数据更新操作的过程。
二、实验二预备知识
1、数据库的建立与删除
可以使用SQL语句建立数据库,语句格式为:
CREATEDATABASE
其中CREATEDATABASE为关键字,为用户创建的数据库的名称,由用户自定。
使用DROPDATABASE语句可以删除数据库,语句格式为:
DROPDATABASE
其中DROPDATABASE为关键字,为要删除的数据库的名称。当数据库被删除时,数据库中的所有数据对象也一起被删除掉。2、数据表的创建与删除
使用CreateTable语句创建数据表,语句格式为:
CREATETABLE([列级完整性约束条件][,[列级完整性约束条件]]
[,]);
其中CREATETABLE为关键字,为数据表的名称,由用户确定,为组成这个表的属性列的名称,由用户确定,为属性列的取值的类型,由用户在具体的DBMS所提供的数据类型中选择。
使用DropTable语句删除数据表,语句格式为:
DROPTABLE
注意:删除一个表,表的定义以及表中的所有数据,以及该表的索引、约束、触发器等将自动删除,并且与表相关联的规则和默认对象也将失去与它的关联关系。3、修改基本表
使用ALTERTABLE语句修改已建立好的基本表,该语句可以实现添加、修改、删除基本(1)添加操作
表中的属性列、约束等操作,下面分别给出语句格式及说明:
在ALTERTABLE语句中使用ADD子句添加新列和新的完整性约束,添加新列的语句格式
ALTERTABLEADD
添加新的完整性约束语句格式如下:
ALTERTABLEADD
(2)修改操作
在ALTERTABLE语句中使用ALTERCOLUMN子句修改原有列的定义,语句格式如下:
ALTERTABLEALTERCOLUMN
(3)删除操作
如下:
在ALTERTABLE语句中使用DROP子句删除已有的列和完整性约束条件,删除列的语句
ALTERTABLEDROPCOLUMN
格式如下:
删除完整性约束条件的语句格式为:
ALTERTABLEDROP
关于ALTERTABLE语句更详细的语法格式请参照“联机丛书”,下面通过实例给出ALTERTABLE语句的具体用法,如下:
操作添加修改删除类型添加新列添加新的完整性约束修改原有列的定义删除已有完整性约束删除已有列实例AltertablesaddSidchar(20)Altertablesaddunique(sid)AltertablesaltercolumnSidchar(30)Altertablesdropuq_sidAltertablesdropcolumnSid4、索引的创建与删除
使用CREATEINDEX语句创建索引,语句格式为:
CREATE[UNIQUE][CLUSTERED|NONCLUSTERED]INDEX
ON(列名[ASC|DESC][,...n])
其中UNIQUE、CLUSTERED、NONCLUSTERED指出所建索引的类型,分别为唯一性索引、聚集索引和非聚集索引。
注意:不能在数据类型为text、ntext和image的列上建立索引。使用DROPINDEX语句删除索引,语句格式为:
DROPINDEX
注意:DropIndex语句能够删除CreateIndex语句所建立的索引,但是它不能删除SQLSever为PrimaryKey或Unique约束所建立的索引,这些索引只能通过删除约束或表的方法来删除。
实验三预备知识
查询语句的基本格式如下:
SELECT--需要哪些列
FROM--来自于哪些表[WHERE]--根据什么条件[GROUPBY]--分组[HAVING]--筛选[ORDERBY]--排序
实验四预备知识
1.数据更新基本语句及其格式(1)插入操作
SQL的数据插入语句INSERT有两种形式:①插入单个元组,使用命令:
INSERTINTO基本表名(列名表)
VALUES(元组)
②插入子查询的结果:
INSERTINTO基本表名(列表名)查询语句
(2)修改操作
当需要修改指定关系中元组的值时,可使用下列语句实现:UPDATE基本表名
SET列名1=值表达式1[,列名2=值表达式2][WHERE条件表达式](3)删除操作
删除关系中满足条件的元组语句格式如下:DELETEFROMWhere
三.实验步骤
实验二
1.建立数据库,点击新建查询,如图:
单击刷新,数据库中出现新建的“gongcheng”数据库。2.建立数据表
右击“gongcheng”,单击新建查询,写入代码,如图:
单击刷新,展开表,可看见新建的四个表。3.修改数据库,写入代码后执行。
写入代码,分别在表S、P、J表中的Sno,Pno,Jno属性列上建立唯一索引(升序)。如图:
4.录入数据
将课本上的数据写进excel表格中,在SQLServer201*中执行导入操作,结果如图:
5右击“gongcheng”,单击“新建查询”。完成以下查询:(1)查询所有供应商所在的城市。
(2)查询零件重量在10-20之间(包括10和20)的零件名和颜色。
(3)查询工程项目的总个数。
(4)查询所有零件的平均重量。
(5)查询供应商S3供应的零件号。
(6)查询各个供应商号及其供应了多少类零件。
(7)查询供应了2类以上零件的供应商号。
(select供应情况表SPJ.Snofrom供应情况表SPJwhere
(selectCOUNT(供应情况表SPJ.Pno)From供应情况表SPJ)>2groupbySno)
(8)查询零件名以“螺”字开头的零件信息。
(9)查询工程项目名中最后一个字为“厂”字的工程项目所在的城市。
(10)查询给每个工程供应零件的供应商的个数。
(11)查询供应数量在1000201*之间(包括1000和201*)的零件名称。
select零件表P.pnamefrom零件表P,供应情况表SPJgroupby供应情况表SPJ.PnohavingCOUNT(供应情况表SPJ.QTY)>=1000andcount(供应情况表SPJ.QTY)=1000and供应情况表SPJ.QTY
问题一:
问题二:
问题三:
问题四:
问题五:
问题六:
问题七:
6.在“学生选课管理”数据库中完成以下查询:(1)查询是“选修课”的课程号、课程名。
(2)查询学号为“09105103”学生所学课程的课程名与学分。
(3)查询选修课程号为“002”或“004”的学生的学号。
(4)查询选修了课程号为“002”和“004”的学生的学号。
(5)查询学习全部课程的学生姓名。
实验三
1.在“gongcheng”新建查询,对数据库做一下更新:
(1)现有一供应商,代码为S9、姓名为英特尔、所在城市西安,供应情况如下:供应零件P5给工程J7数量为600,供应零件P4给工程J4数量为500,请将此供应商的信息和供应信息插入数据库。
(2)请将北京供应商的供应数量加20
零件P3已经停产,请将P3的相关信息从数据库中删除。
(4)创建零件名为螺丝刀的供应情况的视图P_ls,包括供应商名(Sname),零件名(Pname),零件重量(Weight),工程项目代码(Jno),供应数量(QTY).
(5)在视图P_ls中查询供应数量为500的供应商姓名。
2.导入“student”数据库,新建查询,完成以下操作:(1)学生孙天要退学,请删除该学生的所有记录。先删除学生选课表中信息:
再删除学生表中信息:
学号为“9105101”的学生信息全部被删除。
(2)将学号为09105103学生的所有课程成绩加10分。
(3)学校开了一门新课,课称号为056课程名为信息系统分析,请将此门课程的信息插入。
(4)创建查询每个学生的修课学分的视图,要求列出学生学号及总学分。
(5)在创建的视图中查询学生李丽所修的学分数。
实验代码:
在创建的“gongcheng”数据库中使用SQL语句建立4个关系(可参考课本P74习题5),如下:供应商表S(Sno,Sname,Status,Ctiy)零件表P(Pno,Pname,Color,Weight)工程项目表J(Jno,Jname,City)供应情况表SPJ(Sno,Pno,Jno,QTY)要求:
(1)创建每个关系的主键,有外键的创建外键。(2)S表中的Sname属性列的取值唯一
(3)P表中weight属性列的取值范围在1-50之间(4)J表中的Jname取值不能为空并且是唯一的(5)SPJ表中QTY属性列的数据类型必须为int
Createtable供应商表S(Snochar(10)primarykey,Snamechar(10)unique,Statuschar(10)null,citychar(10)null)
Createtable零件表P(Pnochar(10)primarykey,Pnamechar(10)null,colorchar(10)null,
weightintcheck(weight>=0andweight
Jnamechar(10)notnullunique,citychar(10)null)
Createtable供应情况表SPJ(Snochar(10)notnull,Jnochar(10)notnull,Pnochar(10)notnull,QTYintnull,
primarykey(Sno,Jno,Pno),
foreignkey(Sno)references供应商表S(Sno),foreignkey(Pno)references零件表P(Pno),foreignkey(Jno)references项目工程表J(Jno))2.修改表的结构
用SQL语句完成以下操作:
(1)给S表增加Sphone和Semail两个属性列,分别用来存放供应商的联系电话和电子信箱。
altertable供应商表Saddsemailchar(20);(2)删除Jname属性列取值唯一的约束。
altertable项目工程表JdropUQ__项目工程表J__5A1986B60DAF0CB0;
(3)将QTY属性列的数据类型修改为Smallint型。
altertable供应情况表SPJaltercolumnQTYsmallint;(4)删除S表中的属性列Semail
altertable供应商表Sdropcolumnsemail;
3.创建、删除索引
通过SQL语句分别在表S、P、J表中的Sno,Pno,Jno属性列上建立唯一索引(升序)
CreateuniqueindexSsnoon供应商表S(Sno);CreateuniqueindexPpnoon零件表P(Pno);CreateuniqueindexJjnoon项目工程表J(Jno);4.在“gongcheng”数据库中完成以下查询(1)查询所有供应商所在的城市。SelectcityFrom供应商表S
(2)查询零件重量在10-20之间(包括10和20)的零件名和颜色。Selectweight,colorFrom零件表P
Whereweight>10andweight
From供应情况表SPJWhereSno="S3"
(6)查询各个供应商号及其供应了多少类零件。SelectSno,COUNT(Pno)From供应情况表SPJGroupbySno
(7)查询供应了2类以上零件的供应商号。SelectSno
From供应情况表SPJGroupbySnoHavingCOUNT(Pno)>2
(8)查询零件名以“螺”字开头的零件信息。SelectPno,Pname,color,weightFrom零件表P
WherePnamelike"螺%"
(9)查询工程项目名中最后一个字为“厂”字的工程项目所在的城市。Select*
From项目工程表JWhereJnamelike"%厂"
(10)查询给每个工程供应零件的供应商的个数。Selectcount(Sno)
From供应情况表SPJGroupbyJno
(11)查询供应数量在1000201*之间(包括1000和201*)的零件名称。
Select零件表P.PnameFrom零件表P,供应情况表SPJGroupby供应情况表SPJ.PnoHavingCOUNT(供应情况表SPJ.QTY)>=1000andcount(供应情况表SPJ.QTY)=1000and供应情况表SPJ.QTY
Groupby项目工程表J.Jno
Select零件表P.Pno,供应情况表SPJ.QTYFrom零件表P,供应情况表SPJ
Where供应情况表SPJ.Jno="J2"and零件表P.Pno=供应情况表SPJ.PnoSelect零件表P.Pno
From零件表P,供应商表S,供应情况表SPJWhere供应商表S.city="上海"and供应情况表SPJ.Pno=零件表P.Pnoand供应情况表SPJ.Sno=供应商表S.SnoGroupby零件表P.PnoSelect项目工程表J.Jname
From项目工程表J,供应情况表SPJ,供应商表SWhere项目工程表J.Jno=供应情况表SPJ.Jno供应商表S.city="上海"and
供应情况表SPJ.Sno=供应商表S.SnoGroupby项目工程表J.JnameSelect项目工程表J.Jno
From项目工程表J,供应情况表SPJ,供应商表SWhere项目工程表J.Jno=供应情况表SPJ.Jno供应商表S.city"天津"and供应情况表SPJ.Sno=供应商表S.Sno
andand
Groupby项目工程表J.Jno
5.在“学生选课管理”数据库中完成以下查询(1)查询是“选修课”的课程号、课程名。SelectCno,CnameFrom[课程表(C)]WhereProperty="选修"
(2)查询学号为“09105103”学生所学课程的课程名与学分。Select[课程表(C)].Cname,CreditFrom[课程表(C)],[学生选课表(SC)]
Where[学生选课表(SC)].Sno="9105103"and[课程表(C)].Cno=[学生选课表(SC)].Cno
(3)查询选修课程号为“002”或“004”的学生的学号。SelectSno
From[学生选课表(SC)]WhereCno=2orCno=4GroupbySno
(4)查询选修了课程号为“002”和“004”的学生的学号。SelectSno
From[学生选课表(SC)]WhereCno=2andCno=4GroupbySno
(5)查询学习全部课程的学生姓名。
Select[学生表(S)].Sname
From[学生表(S)],[学生选课表(SC)]WhereCno=all(SelectCno
From[学生选课表(SC)])
And[学生表(S)].Sno=[学生选课表(SC)].Sno6.在实习二创建的“gongcheng”数据库中使用SQL语句完成以下操作
(1)现有一供应商,代码为S9、姓名为英特尔、所在城市西安,供应情况如下:供应零件P5给工程J7数量为600,供应零件P4给工程J4数量为500,请将此供应商的信息和供应信息插入数据库。Insert
Into供应商表S(Sno,Sname,city)Values("S9","英特尔","西安");Insert
Into供应情况表SPJ(Pno,Jno,Sno,QTY)
Values("P5","J7","S9","600"),("P4","J4","S9","500")
(2)请将北京供应商的供应数量加20Update供应情况表SPJSetQTY=QTY+20WhereSnoin
(SelectSnoFrom供应商表SWherecity="北京")
(3)零件P3已经停产,请将P3的相关信息从数据库中删除。Delete
From供应情况表SPJWherePno="P3"DeleteFrom零件表PWherePno="P3"
(4)创建零件名为螺丝刀的供应情况的视图P_ls,包括供应商名(Sname),零件名(Pname),零件重量(Weight),工程项目代码(Jno),供应数量(QTY).
CreateviewP_ls(Sname,Pname,weight,Jno,QTY)as
SelectSname,Pname,weight,Jno,QTYFrom供应商表S,零件表P,供应情况表SPJWherePname="螺丝刀"
and供应商表S.Sno=供应情况表SPJ.Snoand零件表P.Pno=供应情况表SPJ.Pno
(5)在视图P_ls中查询供应数量为500的供应商姓名。SelectSname
FromP_lsWhereQTY=500GroupbySname
7.在实习一创建的“学生选课管理”数据库中使用SQL语句完成以下操作
(1)学生孙天要退学,请删除该学生的所有记录。Delete
From[学生选课表(SC)]Where[学生选课表(SC)].Sno=(SelectSnoFrom[学生表(S)]WhereSname="孙天")Delete
From[学生表(S)]WhereSname="孙天"
(2)将学号为09105103学生的所有课程成绩加10分。Update[学生选课表(SC)]SetGrade=Grade+10WhereSno="9105103"
(3)学校开了一门新课,课称号为056课程名为信息系统分析,请将此门课程的信息插入。Insert
Into[课程表(C)](Cno,Cname)Values("056","信息系统分析")
(4)创建查询每个学生的修课学分的视图,要求列出学生学号及总学分。
CreateviewCri_Student(学号,姓名,总学分)as
Select[学生表(S)].Sno,[学生表(S)].Sname,SUM(Credit)
From[学生表(S)],[学生选课表(SC)],[课程表(C)]Where[学生表(S)].Sno=[学生选课表(SC)].Snoand[学生选课表(SC)].Cno=[课程表(C)].CnoGroupby[学生表(S)].Sno,[学生表(S)].Sname(5)在创建的视图中查询学生李丽所修的学分数。Select姓名,总学分FromCri_StudentWhere姓名="李丽"实验总结:
三次实习分别学习了数据的查询,数据库的更新,和视图的相关操作,了解了数据库的更深入的部分知识,获益匪浅,是我对数据库的功能和使用方法有了更多的了解。我会继续努力学好数据库。
友情提示:本文中关于《SQL实训报告》给出的范例仅供您参考拓展思维使用,SQL实训报告:该篇文章建议您自主创作。
来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。