数据库实验报告Word格式.docx
- 文档编号:1497076
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:30
- 大小:717.13KB
数据库实验报告Word格式.docx
《数据库实验报告Word格式.docx》由会员分享,可在线阅读,更多相关《数据库实验报告Word格式.docx(30页珍藏版)》请在冰点文库上搜索。
在ALTERTABLE语句中使用ADD子句添加新列和新的完整性约束,添加新列的语句格式如下:
ALTERTABLE<
ADD<
新列名>
添加新的完整性约束语句格式如下:
完整性约束规则>
(2)修改操作
在ALTERTABLE语句中使用ALTERCOLUMN子句修改原有列的定义,语句格式如下:
ALTERCOLUMN<
(3)删除操作
在ALTERTABLE语句中使用DROP子句删除已有的列和完整性约束条件,删除列的语句格式如下:
DROPCOLUMN<
删除完整性约束条件的语句格式为:
DROP<
约束名称>
关于ALTERTABLE语句更详细的语法格式请参照“联机丛书”,下面通过实例给出ALTERTABLE语句的具体用法,如下:
操作
类型
实例
添加
添加新列
AltertablesaddSidchar(20)
添加新的完整性约束
Altertablesaddunique(sid)
修改
修改原有列的定义
AltertablesaltercolumnSidchar(30)
删除
删除已有完整性约束
Altertablesdropuq_sid
删除已有列
AltertablesdropcolumnSid
4、索引的创建与删除
使用CREATEINDEX语句创建索引,语句格式为:
CREATE[UNIQUE][CLUSTERED|NONCLUSTERED]INDEX<
索引名称>
ON<
(列名[ASC|DESC][,...n])
其中UNIQUE、CLUSTERED、NONCLUSTERED指出所建索引的类型,分别为唯一性索引、聚集索引和非聚集索引。
不能在数据类型为text、ntext和image的列上建立索引。
使用DROPINDEX语句删除索引,语句格式为:
DROPINDEX<
表名.索引名>
DropIndex语句能够删除CreateIndex语句所建立的索引,但是它不能删除SQLSever为PrimaryKey或Unique约束所建立的索引,这些索引只能通过删除约束或表的方法来删除。
三、实验内容
(一)数据库的建立
使用CREATEDATABASE语句创建名为“gongcheng”的数据库。
1.建立数据库,点击新建查询,输入语句
createdatabasegongcheng
点击刷新,就新建了一个数据库gongcheng
(二)数据表操作
1.建立数据表
在创建的“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
createtableS
(Snovarchar(15)primarykey,
Snamevarchar(20)unique,
Statusvarchar(10),
Ctiyvarchar(10))
createtableP
(Pnovarchar(15)primarykey,
Pnamevarchar(20),
Colorvarchar(10),
Weightintcheck(1<
weightandweight<
50))
createtableJ
(Jnovarchar(15)primarykey,
Jnamevarchar(20)uniquenotnull,
Cityvarchar(10))
createtableSPJ
(Snovarchar(15)referencesS(Sno),
Pnovarchar(15)referencesP(Pno),
Jnovarchar(15)referencesJ(Jno),
QTYint,
primarykey(Sno,Pno,Jno)
)
J表:
P表:
S表:
SPJ表:
2.修改表的结构
用SQL语句完成以下操作:
(1)给S表增加Sphone和Semail两个属性列,分别用来存放供应商的联系电话和电子信箱。
altertableSaddSphonevarchar(20);
altertableSaddSemailvarchar(20);
(2)删除Jname属性列取值唯一的约束。
altertableJdropUQ__J__5A1986B60DAF0CB0;
(3)将QTY属性列的数据类型修改为Smallint型。
altertableSPJaltercolumnQTYsmallint;
(4)删除S表中的属性列Semail
altertableSdropcolumnSemail;
3.创建、删除索引
通过SQL语句分别在表S、P、J表中的Sno,Pno,Jno属性列上建立唯一索引(升序)
createuniqueindexSSnoonS(Sno);
createuniqueindexPPnoonP(Pno);
createuniqueindexJJnoonJ(Jno);
4.数据录入操作
在EXCEl中录入四个表的数据(具体数据可参照课本P75四个表中的数据),用数据导入功能将EXCEL中的数据分别导入到S,P,J和SPJ表中。
在gongcheng上右击鼠标,选择任务中的导入数据
服务器名称为你所在计算机的属性名。
选择对应的数据表如下图所示
如下图,单击完成即可导入数据:
导入的数据户如下图所示:
5.备份gongcheng数据库。
把鼠标移至gongcheng,单击鼠标右键,选择任务中的备份,选择你所要备份的路径,点击确定即可完成。
(三)实验总结:
通过本次试验,掌握了使用SQL语言来建立数据库、建立表、以及学习其他相关的操作,本次实验遇到的问题有:
对相关操作不是很熟悉
(1)删除属性的取值的唯一约束不会,正确代码应为:
altertableJdropUQ__J__5A1986B61920BF5C,其中UQ__J__5A1986B61920BF5C是此属性的键值。
通过查询资料和询问同学,我解决了这个问题
(2)数据导入不太熟悉,通过上网查询资料和老师的耐心讲解问题已解决;
(3)数据恢复后不知道如何寻找之前写入SQLQuery语句,现在已解决。
通过此次实习,我对SQLserver更进一步的认识,要想学好,今后还得多多练习。
实验三数据查询
掌握查询语句的使用方法,重点掌握连接查询和嵌套查询,理解查询的执行过程。
查询语句的基本格式如下:
SELECT<
目标列名序列>
--需要哪些列
FROM<
数据源>
--来自于哪些表
[WHERE<
检索条件>
]--根据什么条件
[GROUPBY<
分组依据列>
]--分组
[HAVING<
组提取条件>
]--筛选
[ORDERBY<
排序依据列>
]--排序
1、还原实习二中创建的“gongcheng”数据库和实习一中创建的“学生选课管理”数据库。
2、在“gongcheng”数据库中完成以下查询:
(1)查询所有供应商所在的城市。
(2)查询零件重量在10-20之间(包括10和20)的零件名和颜色。
(3)查询工程项目的总个数。
(4)查询所有零件的平均重量。
(5)查询供应商S3供应的零件号。
(6)查询各个供应商号及其供应了多少类零件。
(7)查询供应了2类以上零件的供应商号。
(8)查询零件名以“螺”字开头的零件信息。
(9)查询工程项目名中最后一个字为“厂”字的工程项目所在的城市。
(10)查询给每个工程供应零件的供应商的个数。
(11)查询供应数量在1000—2000之间(包括1000和2000)的零件名称。
(12)完成课本P127页第5题的前七个小题。
①找出所有供应商的姓名和所在的城市
②找出所以零件的名称、重量、颜色
③找出使用供应商S1所供应零件的名称及数量
④找出工程项目J2使用的各种零件的名称及数量
⑤找出上海厂商供应的所有零件号码
⑥找出使用上海产的零件的工程名称
⑦找出没有使用天津产的零件的工程项目
3、在“学生选课管理”数据库中完成以下查询:
(1)查询是“选修课”的课程号、课程名。
(2)查询学号为“09105103”学生所学课程的课程名与学分。
(3)查询选修课程号为“002”或“004”的学生的学号。
(4)查询选修了课程号为“002”和“004”的学生的学号。
(5)查询学习全部课程的学生姓名。
SQLQuery查询语句如下:
selectjno,city
fromJ
selectPname,color
fromP
whereWeightbetween10and20
selectCOUNT(Jno)
selectAVG(weight)
selectPno
fromSPJ
whereSno='
S3'
selectdistinctSno,COUNT(Pno)
groupbySno
selectSno
havingCOUNT(Jno)>
2
select*
wherePnamelike'
螺%'
selectJname,city
whereJnamelike'
%厂'
selectJno,COUNT(distinctSno)
fromSPJ
groupbyJno
selectpname
fromP
wherePnoin
(selectpno
fromspj
groupbypno
havingsum(qty)between1000and2000)
selectSname,S.Ctiy
fromS
selectpname,color,weight
fromP
selectdistinctJno
fromSPJ
whereSno='
S1'
selectdistinctPname,weight
fromP,SPJ
whereJno='
J2'
selectdistinctPno
whereSnoIN(
selectSno
whereCity='
上海'
)
selectJname
fromJ
whereJnoIN(
selectJno
whereSnoIN
(selectSno
froms
whereCity='
))
whereCity!
='
天津'
selectcno,cname
fromC
whereProperty='
选修'
selectcname,credit
fromC,SC,s
whereSC.Sno=s.snoandC.Cno=SC.Cnoands.sno='
09105103'
selectsno
fromsc
whereCno='
002'
union
fromsc
004'
selectdistinctfir.sno
fromSCfir,SCsec
wherefir.Cno='
andsec.Cno='
selectsname
froms
wherenotexists(
select*
fromC,s,SC
wheres.Sno=SC.SnoandC.cno=SC.cno))
(三)实验总结
这次实验是比较纠结的一次,当中也遇到了不少问题,问题主要有:
①查询和添加的时候由于粗心很多时候属性名都是大小写不分,所以后来会发现查询没有结果或者出现语法错误;
②没有考虑查询结果是否出现重复,所以要视情况添加distinct关键字
③最后,尤其关键的是嵌套查询的多层嵌套掌握的还不理想,有时候会看着语句一头雾水,完全不知道是干嘛的。
这个还是需要慢慢思考解决吧
这次实验应该是工作量比较大的一次,但是,也很有意思,你要解决的是一个个实际的问题,当结果出来的那一刻心情还是很兴奋滴。
当然,实习中间自己也暴漏出来不少的知识性的和自身的缺点,这个我会认真反思努力改正的
实验四数据更新与视图
1、掌握数据更新语句的使用;
2、掌握视图操作的基本方法和应用,理解基于视图的查询和数据更新操作的过程。
1.数据更新基本语句及其格式
(1)插入操作
SQL的数据插入语句INSERT有两种形式:
①插入单个元组,使用命令:
INSERTINTO基本表名(列名表)
VALUES(元组)
②插入子查询的结果:
INSERTINTO基本表名(列表名)
查询语句
当需要修改指定关系中元组的值时,可使用下列语句实现:
UPDATE基本表名
SET列名1=值表达式1[,列名2=值表达式2…]
[WHERE条件表达式]
删除关系中满足条件的元组语句格式如下:
DELETEFROM<
Where<
条件表达式>
1.在实习二创建的“gongcheng”数据库中使用SQL语句完成以下操作:
(1)现有一供应商,代码为S9、姓名为英特尔、所在城市西安,供应情况如下:
供应零件P5给工程J7数量为600,供应零件P4给工程J4数量为500,请将此供应商的信息和供应信息插入数据库
(2)请将北京供应商的供应数量加20
(3)零件P3已经停产,请将P3的相关信息从数据库中删除。
(4)把全部红色零件的颜色改成蓝色。
(5)由S5供给J4的零件P6改为由S3供应,请作必要的修改。
(6)请将(S2,J6,P4,200)插入供应情况表。
(7)创建零件名为螺丝刀的供应情况的视图P_ls,包括供应商名(Sname),零件名(Pname),零件重量(Weight),工程项目代码(Jno),供应数量(QTY)。
(8)在视图P_ls中查询供应数量为500的供应商姓名。
(9)请为三建工程项目建立一个供应情况的视图,包括sno,pno和qty。
针对该视图找出供应商S1的供应情况。
2.在实习一创建的“学生选课管理”数据库中使用SQL语句完成以下操作:
(1)学生孙天要退学,请删除该学生的所有记录。
(2)将学号为09105103学生的所有课程成绩加10分。
(3)学校开了一门新课,课称号为056课程名为信息系统分析,请将此门课程的信息插入。
(4)创建查询每个学生的修课学分的视图,要求列出学生学号及总学分(sum(ccredit))。
(5)在创建的视图中查询学生覃祥和韩振兴所修的学分数。
insert
intoS(Sno,Sname,city)
values('
S9'
'
英特尔'
西安'
intoSPJ
p5'
j7'
600)
intoSPJ
p4'
j4'
500)
updateSPJ
setQTY=QTY+20
wheresnoin(selectSno
froms
wheres.city='
北京'
delete
wherePno='
p3'
fromp
updateP
setColor='
蓝'
whereColor='
红'
setsno='
wheresno='
s5'
andJno='
andPno='
p6'
s2'
J6'
200)
go
createviewP_1s
as
selectSname,Pname,Weight,spj.Jno,QTY
froms,P,spj
wherePname='
螺丝刀'
ands.Sno=SPJ.Snoandp.Pno=spj.pno
selectSname
fromP_1s
whereQTY=500
createviewp_spj
selectSno,Jno,QTY
whereJnoin(
selectJno
whereJname='
三建'
fromp_spj
s1'
delete
fromSC
wheresnoin(
whereSname='
孙天'
fromS
wheresname='
updatesc
setGrade=Grade+10
insert
intoC(Cno,Cname)
values('
056'
信息系统分析'
createviewSC_credit(Sno,scredit)
selectSno,SUM(credit)scredit
fromC,sc
whereC.Cno=SC.Cno
selectsno,scredit
fromSC_credit
selectsno
覃祥'
orSname='
韩振兴'
这次视图的操作由于和表的造作类似所以没遇到要太大的问题,视图的建立也不难。
遇到的最大的问题就是为三建工程项目建立一个供应情况的视图的时候,结果总是为空,后来折腾了好长时间才搞定。
由于表中的数据是从excel表导入的,上面“三建”中间的空格既不是一个(字符)也不是两个(中文),所以,查询时总是无结果。
后来把表中的“三建”复制到SQLQuery语句中问题解决
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 实验 报告