--1.查找18岁以上姓张的年龄最大的前20%
select top 20 percent * from stu
where 年龄>18 and 姓名 like '张_'
go
--2.创建存储过程,在stu表中性别那一列插入“男”或“女”时,在表中记录的是“1”或“0”
create procedure stu_insert @num int,@name char(5),@sex char(6)
as
if @sex='男'
insert into stu values(@num,@name,1,null)
else
if @sex='女'
insert into stu values(@num,@name,0,null)
go
exec stu_insert 7,'赵四',男
go
--3.创建存储过程,输入学号,输出性别(显示的是“男”或“女”)
create proc stu_out @num int,@sex char(6) output
as
declare @se bit
set @se=(select 性别 from stu where 学号=@num)
if @se=1
set @sex='男'
else if @se=0
set @sex='女'
go
declare @sex char(6)
exec stu_out 2 ,@sex output
select @sex;
go
--新建一个表,在表中创建一个触发器,每次插入操作时,变量@str值会显示。
create table table1(a int)
go
create trigger table1_insert on table1 after insert
as
declare @str char(50)
set @str='trigger is working'
print @str
go
insert into table1 values(1)
select * from table1
--instead of触发器触发时只执行触发器内部的sql语句,而不执行激活该触发器的sql语句。
create table table2(a int)
go
create trigger table2_insert on table2 instead of insert
as
print 'instead of trigger is working'
go
insert into table2 values(1)
select * from table2
select * from cjb
select * from kcb
select * from xsb
go
--创建触发器,当向成绩表中插入一个学生的成绩时,将学生表中该学生的总学分加上添加的课程分数
create trigger cjb_insert on cjb after insert
as
declare @num char(6),@kc_num char(3),@xf int
select @num=学号,@kc_num=课程号 from inserted
select @xf=学分 from kcb where 课程号=@kc_num
update xsb set 总学分=总学分+@xf where 学号=@num
print '修改成功'
go
注意事项:
1、理解存储过程中的输入参数和输出参数。
2、定义参数的类型