View Code
1 drop database 学生成绩管理数据库 2 create database 学生成绩管理数据库 3 on primary 4 ( 5 name='学生成绩管理_data', 6 filename='c:\学生成绩管理_data.mdf', 7 size=10, 8 maxsize=unlimited, 9 filegrowth=10% 10 ) 11 log on 12 ( 13 name='学生成绩管理_log', 14 filename='c:\学生成绩管理_log.ldf', 15 size=1, 16 maxsize=5 17 18 19 ) 20 21 create table 学生表 22 ( 23 学号 char(12) primary key not null, 24 姓名 char(8) not null , 25 性别 char(2) not null default('男'), 26 出生年月 datetime , 27 所在系 varchar(30) check(所在系='工程技术系' or 所在系='经济管理系' or 所在系='文法系' or 所在系='英语系') 28 ) 29 30 create table 课程表 31 ( 32 课程号 bigint identity(00010001,1) primary key not null, 33 课程名 varchar(30) not null, 34 学分 smallint not null check(学分<=6 and 学分>=1), 35 任课教师 char(8) 36 ) 37 create table 成绩表 38 ( 39 primary key(学号,课程号), 40 学号 char(12) not null references 学生表(学号), 41 课程号 bigint references 课程表(课程号), 42 成绩 numeric (5,1) check(成绩<=100 and 成绩>=0) 43 44 45 ) 46 insert into 学生表(学号,姓名,性别,出生年月,所在系) values('200600010001','李洁','女','1986-8-3','工程技术系') 47 insert into 学生表(学号,姓名,性别,出生年月,所在系) values('200600010002','张明','男','1986-8-3','工程技术系') 48 insert into 学生表(学号,姓名,性别,出生年月,所在系) values('200600010003','陈明洁','男','1986-8-3','工程技术系') 49 insert into 学生表(学号,姓名,性别,出生年月,所在系) values('200600020001','钟清','女','1986-8-3','文法系') 50 insert into 学生表(学号,姓名,性别,出生年月,所在系) values('200600020002','贺珊珊','女','1986-8-3','文法系') 51 52 53 insert into 课程表(课程名,学分,任课教师) values('计算机应用基础','4','李明') 54 insert into 课程表(课程名,学分,任课教师) values('数据库应用','3','王一凡') 55 insert into 课程表(课程名,学分,任课教师) values('计算机网络','4','丁治学') 56 insert into 课程表(课程名,学分,任课教师) values('面向对象程序设计','5','张也好') 57 insert into 课程表(课程名,学分,任课教师) values('微机组装与维护','2','赵翠花') 58 59 insert into 成绩表(学号,课程号,成绩) values('200600010001','00010002','89') 60 insert into 成绩表(学号,课程号,成绩) values('200600010001','00010003','68') 61 insert into 成绩表(学号,课程号,成绩) values('200600010001','00010005','73') 62 insert into 成绩表(学号,课程号,成绩) values('200600010002','00010002','56') 63 insert into 成绩表(学号,课程号,成绩) values('200600010002','00010004','62') 64 65 select * from 学生表 66 select * from 课程表 67 select * from 成绩表 68 69 update 课程表 set 任课教师='王-凡' where 任课教师='李明'; 70 update 课程表 set 任课教师='丁治学' where 任课教师='张也好'; 71 72 select 学生表.学号,学生表.姓名,课程表.课程号,课程表.课程名,成绩表.成绩 73 from 成绩表,课程表,学生表 74 where 学生表.学号=成绩表.学号 and 课程表.课程号=成绩表.课程号 75 76 77 select 课程表.课程号,课程表.课程名,成绩表.成绩 78 from 79 成绩表 inner join 课程表 on 成绩表.课程号= 课程表.课程号 80 81 82 83 drop table 学生表 84 drop table 课程表 85 drop table 成绩表 86 87 88 89 90 91 92 select * from sysobjects 93 94 alter table 学生表 ---------------------------------->修表 95 ( 96 add columnname varchar(50), 97 drop column columnname, 98 modify column 姓名 char(10), 99 add constraint aa check(出生年月>'1991-1-1'), 100 drop constraint aa 101 102 add default column 性别 103 drop default column 性别 104 105 106 107 ) 108 create unique index U_aa on 学生表(学号 desc) ---->建立索引 109 alter unique index U_aa on 学生表(学号 asc) 110 drop index 学生表.U_aa 111 112 create view vie as select 学生表.学号,学生表.姓名,课程表.课程号 from 学生表,课程表 ------->建立视图 113 alter view vie as select 学生表.姓名,课程表.课程号 from 学生表,课程表 114 drop view vie 115 116 select 学生表.学号,学生表.姓名,课程表.课程名 from 学生表,课程表------------------------------------>内联 117 select 学生表.学号,学生表.姓名,成绩表.成绩 from 118 学生表 inner join 成绩表 on 学生表.学号=成绩表.学号 119 成绩表 inner join 课程表 on 成绩表.课程号=课程表.课程号-------------------------------------内联 120 121 122 -----------------------------------游标-------------------------------------------------- 123 alter table 成绩表 124 add flag varchar(20) 125 126 declare @score int 127 declare cur_sor cursor for select 成绩 from 成绩表 for update of flag 128 open cur_sor 129 fetch next from cur_sor into @score 130 while @@fetch_status=0 131 begin 132 if @score>=90 133 update 成绩表 set flag='优秀' 134 if @score >=80 and @score <90 135 update 成绩表 set flag='良好' 136 if @score>=60 and @score<80 137 update 成绩表 set flag='及格' 138 if @score<60 139 delete from 成绩表 where current of cur_sor 140 fetch next from cur_sor into @score 141 142 end 143 144 close cur_sor 145 deallocate cur_sor 146 delete form 学生表 147 148 ---------------------------------------存储过程-------------------------------------------------- 149 create procedure proc_xs_select @id char(20) as 150 select 姓名,性别 from 学生表 where 学号=@id 151 152 create procedure proc_xs_insert 153 @id char(20), 154 @name char(20), 155 @sex char(20), 156 @place char(20), 157 @time datetime as 158 insert 学生表(学号,姓名,性别,出生年月,所在系) values(@id,@name,@sex,@time,@place) 159 160 create procedure proc_xs_update @name char(20),@sex char(20),@id char(20) as 161 update 学生表 set 性别=@sex,姓名=@name where 学号=@id 162 163 create procedure proc_xs_delete @id char(20) as 164 delete 学生表 where 学号=@id 165 166 drop procedure proc_xs_select 167 drop procedure proc_xs_update 168 drop procedure proc_xs_delete 169 170 execute proc_xs_select 200600010001 171 execute proc_xs_insert '200600020000','55','女','工程技术系','1986-8-3' 172 execute proc_xs_delete '200600020009' 173 174 175 create procedure InputAndOutput 176 @id char(20), 177 @aaaa char(20) out 178 as 179 select * from 成绩表 180 181 declare @aa 182 execute InputAndOutput 200600020000 ,@aa 183 ---------------------触发器-------------------------- 184 create trigger tri_xs 185 on 学生表 186 for insert 187 as 188 begin 189 update 成绩表 set 成绩=成绩+20 190 191 end 192 drop trigger tri_xs 193 select * from 成绩表 194 195 196 create table 住宿人 197 ( 198 names varchar(12), 199 sex varchar(12), 200 房间号 varchar(12) default(4) 201 ) 202 create table 房间 203 ( 204 空床位数 int default(4), 205 房间号 int 206 ) 207 drop table 住宿人 208 209 --插入触发器:注意inserted表 210 go 211 create trigger trig_住宿人 212 on 住宿人 213 for insert 214 as 215 declare @fjh int 216 select @fjh=房间号 from inserted -- 217 update 房间 set 空床位数=空床位数-1 where 房间号=@fjh 218 select * from 房间 219 go 220 221 --删除触发器:注意deleted表 222 create trigger trig_退宿人 223 on 住宿人 224 for delete 225 as 226 declare @fjh int 227 select @fjh=房间号 from deleted --副本 228 update 房间 set 空床位数=空床位数+1 where 房间号=@fjh 229 select * from 房间 230 go 231 insert 住宿人(names,sex,房间号) values('long','男',4) 232 select * from 住宿人 233 234 235 236 237 238 --p145 11 239 create trigger tri_xs 240 on 学生表 241 for insert 242 as 243 select * from 学生表 244 sp_helptext tri_xs 245 246 247 create trigger tri_update 248 on 学生表 249 for update 250 as 251 if exists(select * from sysobjects where name='backuptable') 252 drop table backuptable --多次按下update语句时,使得backtable中只有两条记录 253 254 select * into backuptable from deleted --产生表格,并且拷贝记录 255 insert into backuptable select * from inserted --已经产生了表格,现在往里面插入数据 256 select * from backuptable 257 go 258 259 update 学生表 set 出生年月=出生年月-1 where 学号='200600010001' 260 261 ------------------------------------------------ 262 263 declare @sum int ,@i int 264 select @sum=0,@i=1 265 266 while(@sum<1000) 267 begin 268 select @sum=@sum+@i 269 select @i=@i+1 270 271 end 272 print '1+2+3+......+n>1000时,n是?,sum?' 273 print 'sum:' 274 print @sum 275 print 'n:' 276 print @i 277 278