データベース実践の質問7-ビュー、保存されたプロシージャ、およびトリガーオブジェクトを作成します

実験の目的
ビュー、ストアドプロシージャ、およびトリガーオブジェクトを作成するための使用方法習得する。

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
  1. 上で作成したビューを選択して削除します
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

おすすめ

転載: blog.csdn.net/ssdssa/article/details/109086955