sqlserver实训报告.docx
- 文档编号:10947668
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:15
- 大小:253.90KB
sqlserver实训报告.docx
《sqlserver实训报告.docx》由会员分享,可在线阅读,更多相关《sqlserver实训报告.docx(15页珍藏版)》请在冰豆网上搜索。
sqlserver实训报告
SQLServer实训报告
专业:
计算机应用技术(过程控制方向)
班级:
过控131班
姓名:
张改凤
学号:
201305260130
指导老师:
李模刚
实训地点:
信控2机房
成绩:
-----------------------------------------------------------------------------
一、实训目标
掌握SQLServer数据库创建方法,掌握数据表、数据库完整性约束、基本查询语句的使用、数据更新方法、视图索引的建立、常用数据库对象的创建及使用、SQL编程序等多方面的综合练习,旨在强化训练,真正做到熟练掌握甚至精通,为以后数据库维护、网络管理、编程打好基础。
二、实训要求
完成实训题目,并将最终结果保存在自己的FTP上(在自己的FTP帐号上建立”gk13130_张改凤”文件夹,将所有实训结果、脚本文件、数据库、实训报告均保存在此文件夹下),所有操作尽量使用查询分析器完成。
实训最低要求:
查询数据和数据更新要求必须用查询分析器完成,其他可在SSMS中完成,但要求能够生成脚本文件,并能读懂其中所有代码,并可进行简单修改模仿。
三、考核标准
(1)平时实习纪律考勤占10%
(2)实训报告占40%
(3)代码文件及数据库文件占40%
(4)实习总结占10%
1.创建数据库及删除
创建一个名称为xscj的数据库,脚本文件名:
xscj.sql
CREATEDATABASE[xscj]ONPRIMARY
(NAME=N'xscj',FILENAME=N'D:
\ddd\xscj.mdf',SIZE=3072KB,FILEGROWTH=1024KB)
LOGON
(NAME=N'xscj_log',FILENAME=N'D:
\ddd\xscj_log.ldf',SIZE=1024KB,FILEGROWTH=10%)
GO
EXECdbo.sp_dbcmptlevel@dbname=N'xscj',@new_cmptlevel=90
EXECmsdb.dbo.sp_delete_database_backuphistory@database_name=N'xscj'
GO
USE[master]
GO
/******对象:
Database[xscj]脚本日期:
08/27/201410:
00:
54******/
DROPDATABASE[xscj]
GO
2.创建文件夹ddd
execsp_configure'showadvancedoptions',1;
reconfigure;
execsp_configure'xp_cmdshell',1;
reconfigure;
execxp_cmdshell'mdd:
\ddd';
reconfigure;
execsp_configure'xp_cmdshell',0;
reconfigure;
execsp_configure'showadvancedoptions',0;
3.创建和使用表
(1)建立学生表stu,其结构为:
学号nchar(12)notnull,
姓名char(255)notnullunique,
年龄intcheck(年龄>=5and年龄<=60),
身份证号char(18),。
其中“学号”为主键。
在stu表中输入如下记录:
(2)建立课程表course,其结构为
课程号char(255)notnull,
课程名char(255),
学分int,其中,“课程号”为主键。
在course表中输入如下记录:
(3)建立选课表select1,其结构为:
学号nchar(12)notnull,
课程号char(255)notnull,
成绩float。
其中,“学号”和“课程号”为主键。
在select1表中输入如下记录:
(4)建立stu、course和select1个表之间的关系。
3个表之间的关系主要指主外键关系。
4.数据库完整性创建约束
-------------------------------------------------------------------------------------------------------
5.测试查询数据
(1).select学号'测试一',姓名,年龄fromstuwhere姓名like'小%';
(2).select学号'测试二',姓名,'良好'fromstuwhere姓名like'%肖';
(3).select姓名'测试三'fromstuwhere姓名like'_[晓肖]';
(4).select姓名'测试四',年龄fromstuwhere年龄between20and21orderby年龄;
-
(5).selectgetdate(),max(年龄)'最大年纪',
min(年龄)最小年龄,sum(年龄)/count(学号)平均年龄fromstu;
(6).select姓名'测试六',年龄fromstuwhere年龄>(selectavg(年龄)fromstu);
(7).复制数据到新表newstu:
select'测试'学号,姓名,年龄intonewstufromstuorderby年龄desc;
select学号,姓名,年龄fromnewstu;
(8).复制数据到新表stu1:
createtablestu2(
学号nchar(12)notnull,
姓名char(255)notnullunique,
年龄intcheck(年龄>=5and年龄<=60),
);
createtablestu1(
学号nchar(12)notnull,
姓名char(255)notnullunique,
年龄intcheck(年龄>=5and年龄<=60),
);
insertintostu1(学号,姓名,年龄)select学号,姓名,年龄fromstu;
select学号表二学号,姓名,年龄fromstu1;
(9).select学号'测试',姓名fromstuwhere学号in(selectdistinct学号fromselect1);
(10).select学号'测试',姓名fromstuwhere姓名in('小小','晓晓');
(11).笛卡尔积:
selectstu.姓名'笛卡尔积',course.课程名,select1.成绩,select1.学分绩点fromselect1,course,stuwherestu.学号=select1.学号andcourse.课程号=select1.课程号orderbyselect1.成绩asc;
(12).按组求平均成绩
select'按组求平均',课程名,avg(成绩)'平均成绩'fromselect1,coursewhere
course.课程号=select1.课程号groupby课程名havingavg(成绩)>88;
(13).select'compute测试',*fromselect1,coursewherecourse.课程号=select1.课程号andselect1.课程号=001computesum(成绩);
select'compute测试',*fromselect1,coursewherecourse.课程号=select1.课程号andcourse.课程号in('004','005')
orderbycourse.课程号computeavg(成绩)bycourse.课程号;
(14).自然连接,交叉查询,笛卡尔积
select'笛卡尔积,自然连接',*fromselect1,course;
select'交叉连接',*fromselect1crossjoincourse;
select'有用笛卡尔积',*fromselect1,coursewhereselect1.课程号=course.课程号;
select'内连接',*fromselect1innerjoincourseonselect1.课程号=course.课程号;
/*内连接*/
select学号,姓名intostu3fromstu;select学号,年龄intostu4fromstu;
select'内连接',*fromstu3innerjoinstu4onstu3.学号=stu4.学号;
select'有用笛卡尔积',*fromstu3,stu4wherestu3.学号=stu4.学号;
/*外连接*/
select学号,姓名intostu31fromstu;select学号,年龄intostu41fromstu;
insertintostu31(学号,姓名)values('201305260000','小潇');
insertintostu41(学号,年龄)values('201305261000',41)
select'右连接',*fromstu31rightjoinstu41onstu31.学号=stu41.学号;
select'左连接',*fromstu31leftjoinstu41onstu31.学号=stu41.学号;
select'全连接',*fromstu31fulljoinstu41onstu31.学号=stu41.学号;
(15).集合运算并(union),交(intersect),差(except)
(16).anyallsomeexists
6.更新数据
altertable[select1]add学分绩点float;
update[select1]set学分绩点=3.5where课程号='001';
update[select1]set学分绩点=3.5where课程号='002';
update[select1]set学分绩点=3.0where课程号='003';
update[select1]set学分绩点=2.5where课程号='004';
update[select1]set学分绩点=3.5where课程号='005';
update[select1]set学分绩点=3.0where课程号='006';
altertable[course]add任课老师char(20);
update[course]set任课老师='张老师'where课程号='001';
update[course]set任课老师='李老师'where课程号='002';
update[course]set任课老师='王老师'where课程号='003';
update[course]set任课老师='蒲老师'where课程号='004';
update[course]set任课老师='任老师'where课程号='005';
update[course]set任课老师='赵老师'where课程号='006';
7.视图
(1)建立视图1
createviewshituasselect姓名,成绩fromselect1,stuwherestu.学号=select1.学号;
(2)建立视图csel
createviewcselas
selectstu.学号,姓名,course.课程号,班级fromstu,select1,course
wherestu.学号=select1.学号andcourse.课程号=select1.课程号and班级='过控班';
8.索引
createindexxmonstu(年龄);
select'索引',*from[xscj].[dbo].[stu];
dropindexstu.xm;
select*from[xscj].[dbo].[stu];
9.SQL编程
DECLARE@var1int,@var2money,@sum1int;
select@var1=50,@var2=$29.95;
set@var1=50;
set@var2=$29.95;
select@var1,@var2;
declare@sumint,@iint;
set@i=1;set@sum=0;
while@i<=100
begin
set@sum=@sum+@i;
set@i=@i+1;
end
print@sum;
set@sum1=@sum/100;
updateselect1set成绩=@sum1where学号='201305260103';
10.删除
deletefrom[select1]where课程号='003';
altertable[select1]dropcolumn成绩;
altertable[select1]dropconstraintFK_课程号;
11.创建存储过程
(1)无参
createprocedurep3asselect*fromstu;
(2)一个参数
createprocedurep1@snvarchar(10)asselect*fromstuwhere姓名=@sn;
(3)两个参数
createprocedurep2@snvarchar(10),@snnvarchar(10)
asselect*fromstuwhere姓名=@snand姓名=@snn;
(4)执行命令
execp3;
execp1'笑笑';
execp2'笑笑','筱筱';
12.创建触发器
createtriggert1onstuforupdateasprint'stu表将被修改!
';
createtriggert2onstuforinsertasprint'stu表将被修改!
'
createtriggert3onstufordeleteasprint'stu表将被修改!
';
createtriggert4onstuafterupdateasprint'stu表已经被修改!
';
createtriggert5onstuafterinsertasprint'stu表已经被修改!
';
createtriggert6onstuafterdeleteasprint'stu表已经被修改!
';
createtriggert7onstuinsteadofupdateasprint'stu表不能被修改!
';
createtriggert8onstuinsteadofinsertasprint'stu表不能被修改!
';
createtriggert9onstuinsteadofdeleteasprint'stu表不能被修改!
';
13.角色创建
usexscj
EXECsp_addrole'm_role';
grantselectonstutom_role;
grantselectoncseltom_role;
grantexeconp4tom_role;
EXECsp_addlogin'logteac1','01';
EXECsp_addlogin'logteac2','02';
EXECsp_grantdbaccess'logteac1','dbuser1';
EXECsp_grantdbaccess'logteac2','dbuser2';
EXECsp_addrolemember'm_role','dbuser1';
EXECsp_addrolemember'm_role','dbuser2';
14.授权
grantselectonstutodbuserzhao;
grantselectoncseltodbuserzhao;
grantexeconp4todbuserzhao;
15.导入VB查询
16.生成网站
实训总结
本次实训时间较长,实训内容涉及面广。
从数据库的创建、表的创建以及对表中的内容进行添加、修改和删除,视图的创建,索引以及SQL编程过程的建立等等许多内容。
将这一学期所学数据库的所有知识都涉及到了。
在实训中也会遇到一些问题,但我都会反复读题仔细看书最终将其解决。
实在又不会的就问问老师。
但有时候还是感觉自己对这门课掌握的不是很好,有些知识理解的不是很透彻从而导致因为一些细节上的东西而把题做错。
这也是我应该反思的,在以后的学习中我一定要力争将每个问题都弄懂,不再囫囵吞枣。
总而言之,这次的实训对我的帮助挺大的。
不仅是对于这门课知识的掌握,还有一些学习上的一些技巧。
我会把这次实训学到的东西应有到别的学科上,总之很感谢这次实训,也很谢谢老师这学期对我们的教导。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- sqlserver 报告