《SQL数据库课程设计实训报告.doc》由会员分享,可在线阅读,更多相关《SQL数据库课程设计实训报告.doc(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、SQL数据库课程设计实训报告( 2011 2012 )学年第 2 学期)姓 名: 学 号: 专 业: 班 级: 指导教师: SQL数据库实训报告日 期2012.6.18-2012.6.22地 点科技楼205项目名称SQL数据库课程设计实训目的能力目标能够熟练掌握并灵活运用SQLServer2005软件,初步具备开发有一定使用价值数据库应用系统能力。实训要求:1、实训期间每天登记考勤,作为实训成绩的一部分。2、实训期间不能玩游戏、看电影、小说等做与学习无关的事。如果有不遵守的同学将取消当天成绩。3、完成整个实训以后,要求每人写出实训报告。作为评定整个实训成绩的重要参考依据。实训内容(过程及步骤)
2、2、使用T-SQL语句,在数据库student中创建如下student表.(注:要求表字段取英文名) create table student (S_no char(11) not null primary key, S_name char(8) not null, S_sex char(2) null check(S_sex=男 or S_sex=女) default(男), S_brith datetime null default(getdate(), S_address varchar(30) null, S_class varchar(10) null, )INSERT studen
3、tVALUES(,刘晶晶,女,1985-4-14,湖南株洲,信息)INSERT studentVALUES(,周天,男,1984-4-20,广东广州,信息)INSERT studentVALUES(,张以能,女,1985-10-2,湖南长沙,信息)INSERT studentVALUES(,曾建桥,男,1984-1-22,湖南株洲,信息)INSERT studentVALUES(,王玉梅,女,1986-5-18,湖南株洲,电商)INSERT studentVALUES(,李婷,女,1986-6-10,湖北武汉,软件)INSERT studentVALUES(,谭桂香,女,1984-7-25,湖
4、南长沙,软件)3、使用T-SQL语句,在数据库student中创建如下course表.(注:要求表字段取英文名)(10分)CREATE TABLE course(c_no varchar NOT NULL, c_name varchar NOT NULL, c_credit CHAR(2) NOT NULL, c_type CHAR(10) NOT NULL)INSERT courseVALUES(1203dzswzjs,电子商务网站建设,4,专业课)INSERT courseVALUES(1002sjkyl,数据库原理与应用,4,专业基础课)INSERT courseVALUES(1003x
5、mkf,项目开发,2,专业课)INSERT courseVALUES(1003c#_w,C#的windows程序开发,4,专业课)4、使用T-SQL语句,在数据库student中创建如下score表.(注:要求表字段取英文名)(10分) CREATE TABLE score(s_no char(11) not null, semester char(8) not null, c_no varchar(12) not null, grade decimal(5)INSERT scoreVALUES(,1203dzswwzjs,98)INSERT scoreVALUES(,1002sjkyl,96
6、)INSERT scoreVALUES(,1003xmkf,87)INSERT scoreVALUES(,1003c#_w,92)INSERT scoreVALUES(,1003c#_w,76)INSERT scoreVALUES(,1003c#_w,83)INSERT scoreVALUES(,1003c#_w,87)5在student 表中添加一个长为 20 个字符,名为S_major的类型为CHAR的列:alter table student add s_major char(20)6、修改学生“周天”的家由“广东广州”搬到“湖南株洲”。 update studentset S_addr
7、ess=湖南株洲where S_name=周天7将班级为“”课程号为“1003c#_w”,的成绩统一设置为75。update scoreset grade=75 where left(S_no,8)= and C_no=1003c#_w8查询全体学生的姓名、学号、所在班级。select S_no,S_name,S_class from student9查询全体学生的姓名及其年龄。select S_name,year(getdate()-(year(S_brith) 年龄from student10查询全体学生的学号、姓名和年龄,同时以汉字标题来表示学号、姓名和年龄。select S_no 学号
8、,S_name 姓名,year(getdate()-(year(S_brith) 年龄from student11、查询学号为考试成绩80分以上的学生学号、课程号、学期和成绩并显示汉字标题。select S_no 学号,C_no 课程号,semester 学期,grade 成绩from scorewhere S_no= and grade8012查询年龄在18至22岁之间的学生的S_name(姓名)、S_class(班级)、和Nl(年龄不是基本表中的字段,是计算出来的字段)。select S_name 姓名,S_class 班级,year(getdate()-year(S_brith) N1
9、from student where (year(getdate()-year(S_brith)18 and (year(getdate()-year(S_brith)80 19、查询每个学生的S_no(学号)、S_name(姓名)、S_class(班级)及其所选修课程的成绩情况。select student.S_no,S_name,S_class,grade from student,score where student.S_no=score.S_no and C_no is not null 20查询比“王玉梅”年龄大或同龄的学生的学号、姓名和出生年份,结果按出生年月升序排列。selec
10、t S_no,S_name,S_brith from student where (year(getdate()-year(S_brith)=(select (year(getdate()-year(S_brith) from studentwhere S_name=王玉梅) order by S_brith21、查询与“刘晶晶”在同一个班学习的学生。select * from student where left(S_no,8)=22查询其他班级中比“信息021 ”班任一学生年龄小的学生信息。select * from student where (year(getdate()-year(S
11、_brith) (select min(year(getdate()-year(S_brith) from student where S_class=信息) 23查询所有选修了“1003c#_w”课程的学生S_no(学号)和S_name(姓名)。select student.S_no,S_name from student,score where student.S_no=score.S_no and C_no=1003c#_w 24、查询选修了课程名为“数据库原理与应用”的学生学号和姓名。select student.S_no,S_name from student,score,cours
12、e where student.S_no=score.S_no and score.C_no=course.C_no and C_name=数据库原理与应用 25、建立关于student表的s_no列的聚集索引。create unique clustered index stu_index on student(S_no)26建立关于course表的c_no列的惟一非聚集索引。create unique index cou_index on course(C_no)27建立关于score表的s_no列和c_no列的复合非聚集索引。create nonclustered index sco_in
13、dex on score(C_no) 28创建一个关于学生成绩的视图,要求含有学号,姓名,课程号,课程名和成绩列。create view view1 as select score.S_no,S_name,C_no,grade from student,score where student.S_no=score.S_no29创建关于学生信息的视图stu_info_view,使之仅包含学生的学号、姓名和性别等基本信息。create view stu_info_view as select * from student 30从视图grade_view中查询达到80分以上的成绩。create vi
14、ew grade_view as select grade from score where grade=80 31通过视图stu_info_view向表student中插入一条记录。INSERT INTO stu_info_view values(,王红,女,1987-3-2,湖南长沙,电商,)32、更新s_no为“”的学生的姓名为“王勇”,成绩增加2分。update score set grade=grade+2 from student,score where student.S_no=score.S_no and S_name=王勇 and student.S_no=33、创建一存储过
15、程,检索信息021班学生的记录。create procedure proc1 as select * from student where S_class=信息 34、创建一存储过程GetCredit,通过用户输入课程号,输出学分。创建:create procedure GetCredit 课程号char(11),学分char(2) output as set 学分= (select C_credit from course where C_no=课程号)print 学分查询:declare 课程号char(11),学分char(2) set 课程号=1003c#_w exec GetCred
16、it 课程号,学分35、 创建关于性别的默认,默认值为男,并将其绑定到数据表student的s_sex列上。创建默认值:create default sex_def as男绑定默认值:exec sp_bindefault sex_def,student.S_sex36、 为数据表score的grade列设置CHECK约束,使grade列的值在0100之间。alter table score add constraint che check(grade=0 and grade=100) 37、 为数据表score时,为s_no和c_no设置PRIMARY KEY约束和FOREIGN KEY约束。
17、ALTER TABLE scoreADD CONSTRAINT PK_SCORE_SNO PRIMARY KEY(S_no)ALTER TABLE scoreADD CONSTRAINT PK_SCORE_CNO FOREIGN KEY(C_no)38、为数据表score创建一个UPDATE触发器。当试图修改数据表score中的记录时,检查修改后记录中的s_no(学号)是否在数据表information存在,同时c_no(课程号)是否在数据表course中存在,若不是同时存在,则撤消UPDATE操作,并返回一条错误消息。create trigger tri on score after upd
18、ate as declare 学号 char(11),s_no char(11),课程号 varchar(12),c_no varchar(12) select 学号=S_no from inserted select s_no=S_no from student select 课程号=C_no from inserted select c_no=C_no from course begin if not exists( select * from inserted where S_no in(select S_no from student) ) begin raiserror(学号不存在!
19、,16,1) rollback end if not exists( select * from inserted where C_no in(select C_no from course) ) begin raiserror(课程号不存在!,16,1) rollback end end 39、利用游标逐行显示对表course的查询结果,并按课程号排序,显示课程号和课程名称。 DECLARE cur CURSOR FOR SELECT C_no,C_name FROM course order by C_no OPEN cur FETCH next FROM cur WHILE FETCH_
20、STATUS=0 BEGIN FETCH next FROM cur END DEALLOCATE cur 实训心得:为期5天的实训很快就过去了,让我重新了解了丰富多彩的编程生活,感受到了学习的快乐,也感觉到了许许多多的专业问题。在实训期间,我学到了许多东西,遇到了一些困难,也就看到了自己本身存在许多问题。这次实训给我带来了危机感和压迫力,同时也让我更加清楚自己的水平,心里总有种被大石头压着的无力感,但又凭着一股坚持,奋力的抗争着。所以也得出一个结论:我得好好努力啊。真的很感谢学校能够给我们这样的实训机会,让我明白了只有多做才能熟能生巧,游刃有余,同时我也认识到要做一个合格的设计工作者并非想象的那么容易,总重要的还是细致严谨。社会不会要一个一无是处的人,所以我们应该尽快明确自己的方向和目标并为之努力奋斗。分数: 教师签名: 年 月 日