sql常用语句

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
posted @ 2011-12-30 22:49  蓝亭赏月  阅读(193)  评论(0编辑  收藏  举报