実験の目的
ビュー、ストアドプロシージャ、およびトリガーオブジェクトを作成するための使用方法を習得する。
1.コース8のみを受講する学生の状況のビューを作成します
create view stu_8
as
select student.sno,student.sname,sage,ssex
from student,sc
where student.sno=sc.sno and cno=8
2.ビューview_stuを作成します。このビューには、学生ID、名前、年齢情報のみが含まれます。
create view view_stu
as
select sno,sname,sage
from student
3.前の質問のビューに基づいて、20歳以上の学生のビューを作成します
select sno,sname,sage
from view_stu
where sage>20
4.失敗した学生と、スコアが90以上の学生の学生ID、名前、コース名、成績を含むビューを作成します。
select student.sno,student.sname,cname,grade
from student,sc,course
where student.sno=sc.sno and
sc.cno=course.cno and
(grade>90 or grade<60)
5.上で作成したビューを選択して、ビューの情報を表示します
select sno,sname,sage
from stu_8
- 上で作成したビューを選択して削除します
drop view stu_8
7.ビューview_stuから19歳の男性レコードを照会します
select * from view_stu
where sage=19
8.ビューview_stuを介してデータの行を挿入します。学生ID:2006010010、名前:趙清、年齢:
insert into view_stu
values('200610','赵青','')
select * from view_stu
where sname='赵青'
9.view_stuの「LiLei」という名前の年齢を「22」に変更します
update view_stu
set sage='22'
select * from view_stu
where sname='李蕾'
10.ビューview_stuから「LiGui」という名前のレコードを削除します
delete from view_stu
where sname='李贵'
11.上記で作成したビューを選択して、レコードを挿入します。
insert into view_stu
values ('20000203','米米','19')
12.特定の条件に基づいてクエリを実行するには、自分でビューを選択します。
select * from view_stu
where sage=19
保存手順
1.保存手順を作成して、すべての男子コースの選択と成績、およびその他の関連情報を返します。
create procedure stu_j
as
select distinct a.sno,sname,cno,grade
from student a,sc
where a.sno=sc.sno and ssex='男'
exec stu_j
2.入力パラメータを使用してストアドプロシージャを作成し、パラメータに従って学生テーブルにレコードを挿入できるようにします
create procedure student_insert
(@sno char(9),@sname char(8),
@sage int,@ssex char(2),
@sdept char(5))
as
insert into student(sno,sname,sage,ssex,sdept)
values(@sno,@sname,@sage,@ssex,@sdept)
exec student_insert @sno='20000203',
@sname='子子',@sage=19,@ssex='男',@sdept='cs'
3.入力パラメーターを使用してストアドプロシージャを作成し、さまざまな学生名パラメーターに従ってすべての学生のコース成績を返します。
create proc M3 @sname char(10)
as
select cno ,grade
from sc join student on sc.sno = student.sno
where sname = @sname
exec M3 @sname='刘备'
4.入力パラメータと出力パラメータを使用して保存されたプロシージャを作成します。入力部門名に従って、部門内の学生の平均成績と出力を計算します。
create proc M4 @sdept char(8), @avg int output
as
select @avg=AVG(grade)
from sc join student on sc.sno = student.sno
where sdept=@sdept
declare @x int
exec M4 @sdept='CS',@avg=@x output
print @x
トリガー
1.学生テーブルのDELETEトリガーを作成します。学生が脱落すると、情報が学生テーブルから削除され、scテーブルでの学生のコース選択の削除がトリガーされます。
create trigger M1
on sc for delete
as
delete grade
from sc
where sno is null
2. scテーブルに入力されたコースのスコアをチェックするトリガーを作成します。スコアは0〜100ポイントの範囲内である必要があります。
create trigger M2
on sc after insert ,update
as
if exists (
select * from inserted where grade not between 0 and 100
)
rollback