A£®ÔÚÐ޿αíµÄ¿¼ÊÔÈÕÆÚÁÐÉ϶¨ÒåÒ»¸öCHECKÔ¼Êø B£®ÔÚÐ޿αíÉϽ¨Á¢Ò»¸ö²åÈëºÍ¸üвÙ×÷µÄ´¥·¢Æ÷ C£®ÔÚѧÉú±íÉϽ¨Á¢Ò»¸ö²åÈëºÍ¸üвÙ×÷µÄ´¥·¢Æ÷ D£®ÔÚÐ޿αíµÄ¿¼ÊÔÈÕÆÚÁÐÉ϶¨ÒåÒ»¸öÍâÂëÒýÓÃÔ¼Êø
¡¤37¡¤ 9£®ÉèÓнÌʦ±í£¨½ÌʦºÅ£¬½ÌʦÃû£¬Ö°³Æ£¬»ù±¾¹¤×Ê£©£¬ÆäÖлù±¾¹¤×ʵÄȡֵ·¶Î§Óë½Ìʦְ³ÆÓйأ¬±ÈÈ磬½ÌÊڵĻù±¾¹¤×ÊÊÇ6000~10000£¬¸±½ÌÊڵĻù±¾¹¤×ÊÊÇ4000~8000¡£ÏÂÁÐʵÏÖ¸ÃÔ¼ÊøµÄ·½·¨ÖУ¬¿ÉÐеÄÊÇ C
A£® ¿Éͨ¹ýÔÚ½Ìʦ±íÉ϶¨Òå²åÈëºÍÐ޸IJÙ×÷µÄ´¥·¢Æ÷ʵÏÖ B£® ¿Éͨ¹ýÔÚ»ù±¾¹¤×ÊÁÐÉ϶¨ÒåÒ»¸öCHECKÔ¼ÊøÊµÏÖ C£® AºÍB¶¼¿ÉÒÔ D£® AºÍB¶¼²»¿ÉÒÔ
10£®ÉèÔÚSC(Sno,Cno,Grade)±íÉ϶¨ÒåÁË´¥·¢Æ÷£º
CREATE TRIGGER tri1 ON SC INSTEAD OF INSERT ¡ µ±Ö´ÐÐÓï¾ä£ºINSERT INTO SC VALUES('s001', 'c01',90)
»áÒý·¢¸Ã´¥·¢Æ÷Ö´ÐС£ÏÂÁйØÓÚ´¥·¢Æ÷Ö´ÐÐʱ±íÖÐÊý¾ÝµÄ˵·¨£¬ÕýÈ·µÄÊÇ D A£®SC±íºÍINERTED±íÖоù°üº¬Ð²åÈëµÄÊý¾Ý B£®SC±íºÍINERTED±íÖоù²»°üº¬Ð²åÈëµÄÊý¾Ý
C£®SC±íÖаüº¬Ð²åÈëµÄÊý¾Ý£¬INERTED±íÖв»°üº¬Ð²åÈëµÄÊý¾Ý D£®SC±íÖв»°üº¬Ð²åÈëµÄÊý¾Ý£¬INERTED±íÖаüº¬Ð²åÈëµÄÊý¾Ý 11£®ÉèÔÚSC(Sno,Cno,Grade)±íÉ϶¨ÒåÁË´¥·¢Æ÷£º
CREATE TRIGGER tri1 ON SC AFTER INSERT ¡ µ±Ö´ÐÐÓï¾ä£ºINSERT INTO SC VALUES('s001', 'c01',90)
»áÒý·¢¸Ã´¥·¢Æ÷Ö´ÐС£ÏÂÁйØÓÚ´¥·¢Æ÷Ö´ÐÐʱ±íÖÐÊý¾ÝµÄ˵·¨£¬ÕýÈ·µÄÊÇ A A£®SC±íºÍINERTED±íÖоù°üº¬Ð²åÈëµÄÊý¾Ý B£®SC±íºÍINERTED±íÖоù²»°üº¬Ð²åÈëµÄÊý¾Ý
C£®SC±íÖаüº¬Ð²åÈëµÄÊý¾Ý£¬INERTED±íÖв»°üº¬Ð²åÈëµÄÊý¾Ý D£®SC±íÖв»°üº¬Ð²åÈëµÄÊý¾Ý£¬INERTED±íÖаüº¬Ð²åÈëµÄÊý¾Ý
12£®µ±Ö´ÐÐÓÉUPDATEÓï¾äÒý·¢µÄ´¥·¢Æ÷ʱ£¬ÏÂÁйØÓڸô¥·¢Æ÷ÁÙʱ¹¤×÷±íµÄ˵·¨£¬ÕýÈ·µÄÊÇ C
A£®ÏµÍ³»á×Ô¶¯²úÉúUPDATED±íÀ´´æ·Å¸ü¸ÄǰµÄÊý¾Ý B£®ÏµÍ³»á×Ô¶¯²úÉúUPDATED±íÀ´´æ·Å¸ü¸ÄºóµÄÊý¾Ý
C£®ÏµÍ³»á×Ô¶¯²úÉúINSERTED±íºÍDELETED±í£¬ÓÃINSERTED±í´æ·Å¸ü¸ÄºóµÄÊý¾Ý£¬ÓÃDELETED±í´æ·Å¸ü¸ÄǰµÄÊý¾Ý
D£®ÏµÍ³»á×Ô¶¯²úÉúINSERTED±íºÍDELETED±í£¬ÓÃINSERTED±í´æ·Å¸ü¸ÄǰµÄÊý¾Ý£¬ÓÃDELETED±í´æ·Å¸ü¸ÄºóµÄÊý¾Ý
13£®ÏÂÁйØÓÚÓαêµÄ˵·¨£¬´íÎóµÄÊÇ D
A£®ÓαêÔÊÐíÓû§¶¨Î»µ½½á¹û¼¯ÖеÄijÐÐ B£®ÓαêÔÊÐíÓû§¶ÁÈ¡½á¹û¼¯Öе±Ç°ÐÐλÖõÄÊý¾Ý C£®ÓαêÔÊÐíÓû§Ð޸Ľá¹û¼¯Öе±Ç°ÐÐλÖõÄÊý¾Ý
D£®ÓαêÖÐÓиöµ±Ç°ÐÐÖ¸Õ룬¸ÃÖ¸ÕëÖ»ÄÜÔÚ½á¹û¼¯Öе¥ÏòÒÆ¶¯
14£®¶ÔÓαêµÄ²Ù×÷Ò»°ã°üÀ¨ÉùÃ÷¡¢´ò¿ª¡¢´¦Àí¡¢¹Ø±Õ¡¢Êͷż¸¸ö²½Ö裬ÏÂÁйØÓڹرÕÓαêµÄ˵·¨£¬´íÎóµÄÊÇ
A£®Óα걻¹Ø±ÕÖ®ºó£¬»¹¿ÉÒÔͨ¹ýOPENÓï¾äÔٴδò¿ª B£®ÓαêÒ»µ©±»¹Ø±Õ£¬ÆäËùÕ¼ÓõÄ×ÊÔ´¼´±»ÊÍ·Å C£®Óα걻¹Ø±ÕÖ®ºó£¬ÆäËùÕ¼ÓõÄ×ÊԴûÓб»ÊÍ·Å
37
B
¡¤38¡¤ D£®¹Ø±ÕÓαêÖ®ºóµÄÏÂÒ»¸ö²Ù×÷¿ÉÒÔÊÇÊÍ·ÅÓα꣬Ҳ¿ÉÒÔÊÇÔٴδò¿ª¸ÃÓαê
¶þ£® Ìî¿ÕÌâ
1£®ÀûÓô洢¹ý³Ì»úÖÆ£¬¿ÉÒÔ_____Êý¾Ý²Ù×÷ЧÂÊ¡£ Ìá¸ß
2£®´æ´¢¹ý³Ì¿ÉÒÔ½ÓÊÜÊäÈë²ÎÊýºÍÊä³ö²ÎÊý£¬¶ÔÓÚÊä³ö²ÎÊý£¬±ØÐëÓÃ_____´ÊÀ´±êÃ÷¡£ OUTPUT 3£®Ö´Ðд洢¹ý³ÌµÄSQLÓï¾äÊÇ_____¡£ EXEC (EXECUTE)
4£®µ÷Óô洢¹ý³Ìʱ£¬Æä²ÎÊý´«µÝ·½Ê½ÓÐ_____ºÍ_____Á½ÖÖ¡£°´²ÎÊýλÖà °´²ÎÊýÃû 5£®Ð޸Ĵ洢¹ý³ÌµÄSQLÓï¾äÊÇ_____¡£ALTER PROC
6£®SQL ServerÖ§³ÖÁ½ÖÖÀàÐ͵Ĵ¥·¢Æ÷£¬ËüÃÇÊÇ_____´¥·¢ÐÍ´¥·¢Æ÷ºÍ_____´¥·¢ÐÍ´¥·¢Æ÷¡£ ǰ ºó 7£®ÔÚÒ»¸ö±íÉÏÕë¶Ôÿ¸ö²Ù×÷£¬¿ÉÒÔ¶¨Òå_____¸öǰ´¥·¢ÐÍ´¥·¢Æ÷¡£ Ò»
8£®Èç¹ûÔÚij¸ö±íµÄINSERT²Ù×÷É϶¨ÒåÁË´¥·¢Æ÷£¬Ôòµ±Ö´ÐÐINSERTÓï¾äʱ£¬ÏµÍ³²úÉúµÄÁÙʱ¹¤×÷±íÊÇ_____¡£ INSERTED
9£®¶ÔÓÚºó´¥·¢ÐÍ´¥·¢Æ÷£¬µ±´¥·¢Æ÷Ö´ÐÐʱ£¬Òý·¢´¥·¢Æ÷µÄ²Ù×÷Óï¾ä£¨ÒÑÖ´ÐÐÍê/δִÐУ©_____¡£ ÒÑÖ´ÐÐÍê 10£®¶ÔÓÚºó´¥·¢ÐÍ´¥·¢Æ÷£¬µ±ÔÚ´¥·¢Æ÷Öз¢ÏÖÒý·¢´¥·¢Æ÷Ö´ÐеIJÙ×÷Î¥·´ÁËÔ¼ÊøÊ±£¬ÐèҪͨ¹ý_____Óï¾ä³·ÏúÒÑÖ´ÐеIJÙ×÷¡£ ROLLBACK
11£®´ò¿ªÓαêµÄÓï¾äÊÇ_____¡£ OPEN cursor_name
12£®ÔÚ²Ù×÷Óαêʱ£¬ÅжÏÊý¾ÝÌáȡ״̬µÄÈ«¾Ö±äÁ¿_____¡£ @@fetch_status ËÄ£®ÉÏ»úÁ·Ï°
ÒÔϸ÷Ìâ¾ùÀûÓõÚ3¡¢4Õ½¨Á¢µÄStudentsÊý¾Ý¿âÒÔ¼°Student¡¢CourseºÍSC±íʵÏÖ¡£ 1£® ´´½¨Âú×ãÏÂÊöÒªÇóµÄ´æ´¢¹ý³Ì£¬²¢²é¿´´æ´¢¹ý³ÌµÄÖ´Ðнá¹û¡£ £¨1£© ²éѯÿ¸öѧÉúµÄÐÞ¿Î×Üѧ·Ö£¬ÒªÇóÁгöѧÉúѧºÅ¼°×Üѧ·Ö¡£
create proc p1 as
select sno,SUM(credit) as ×Üѧ·Ö
from SC join Course c on c.Cno=SC.Cno group by sno
£¨2£© ²éѯѧÉúµÄѧºÅ¡¢ÐÕÃû¡¢Ð޵Ŀγ̺š¢¿Î³ÌÃû¡¢¿Î³Ìѧ·Ö£¬½«Ñ§ÉúËùÔÚϵ×÷ΪÊäÈë²ÎÊý£¬Ä¬ÈÏֵΪ¡°¼ÆËã»ú
ϵ¡±¡£Ö´Ðд˴洢¹ý³Ì£¬²¢·Ö±ðÖ¸¶¨Ò»Ð©²»Í¬µÄÊäÈë²ÎÊýÖµ£¬²é¿´Ö´Ðнá¹û¡£ create proc p2
@dept varchar(20) = '¼ÆËã»úϵ' as
select s.sno,sname,c.cno,cname,credit from Student s join SC on s.Sno=SC.Sno join Course c on c.Cno=SC.Cno
where Sdept = @dept Ö´ÐÐʾÀý1£ºEXEC P2
Ö´ÐÐʾÀý2£ºEXEC P2 'ͨÐŹ¤³Ìϵ'
£¨3£© ²éѯָ¶¨ÏµµÄÄÐÉúÈËÊý£¬ÆäÖÐϵΪÊäÈë²ÎÊý£¬ÈËÊýΪÊä³ö²ÎÊý¡£
create proc p3
@dept varchar(20),@rs int output as
select @rs = COUNT(*) from Student where Sdept = @dept and Ssex = 'ÄÐ'
38
£¨4£© ɾ³ýÖ¸¶¨Ñ§ÉúµÄÐ޿μǼ£¬ÆäÖÐѧºÅΪÊäÈë²ÎÊý¡£
create proc p4 @sno char(7) as
delete from SC where Sno = @sno
£¨5£© ÐÞ¸ÄÖ¸¶¨¿Î³ÌµÄ¿ª¿ÎѧÆÚ¡£ÊäÈë²ÎÊýΪ£º¿Î³ÌºÅºÍÐ޸ĺóµÄ¿ª¿ÎѧÆÚ¡£
create proc p5
@cno char(6),@x tinyint as
update Course set Semester = @x where Cno = @cno
2£® ´´½¨Âú×ãÏÂÊöÒªÇóµÄ´¥·¢Æ÷£¨Ç°´¥·¢Æ÷¡¢ºó´¥·¢Æ÷¾ù¿É£©£¬²¢ÑéÖ¤´¥·¢Æ÷Ö´ÐÐÇé¿ö¡£ £¨1£© ÏÞÖÆÑ§ÉúµÄÄêÁäÔÚ15~45Ö®¼ä¡£
create trigger tri1
on student after insert,update as
if exists(select * from inserted where sage not between 15 and 45) rollback
£¨2£© ÏÞÖÆÑ§ÉúËùÔÚϵµÄȡֵ·¶Î§Îª{¼ÆËã»úϵ£¬ÐÅÏ¢¹ÜÀíϵ£¬Êýѧϵ£¬Í¨Ðʤ³Ìϵ}
create trigger tri2
on student after insert,update as
if exists(select * from student where sdept not in ('¼ÆËã»úϵ','ÐÅÏ¢¹ÜÀíϵ','Êýѧϵ','ͨÐŹ¤³Ìϵ'))
Rollback
£¨3£© ÏÞÖÆÃ¿¸öѧÆÚ¿ªÉèµÄ¿Î³Ì×Üѧ·ÖÔÚ20~30·¶Î§ÄÚ¡£
create trigger tri3
on course after insert,update as
if exists(select sum(credit) from course
where semester in (select semester from inserted ) having sum(credit) not between 20 and 30 ) Rollback
£¨4£© ÏÞÖÆÃ¿¸öѧÉúÿѧÆÚÑ¡¿ÎÃÅÊý²»Äܳ¬¹ý6ÃÅ£¨ÉèÖ»Õë¶Ô²åÈë²Ù×÷£©¡£
create trigger tri4 on sc after insert as
if exists(select * from sc join course c on sc.cno = c.cno where sno in (select sno from inserted) group by sno,semester
39
¡¤39¡¤ ¡¤40¡¤ having count(*) > 6 ) rollback
3£® ´´½¨Âú×ãÏÂÊöÒªÇóµÄÓα꣬²¢²é¿´ÓαêµÄÖ´Ðнá¹û¡£
£¨1£© ÁгöVB¿¼ÊԳɼ¨×î¸ßµÄǰ2ÃûºÍ×îºó1ÃûѧÉúµÄѧºÅ¡¢ÐÕÃû¡¢ËùÔÚϵºÍVB³É¼¨¡£
declare @sno char(10),@sname char(10),@dept char(14),@grade char(4) declare c1 SCROLL cursor for select s.sno,sname,sdept,grade
from student s join sc on s.sno = sc.sno join course c on c.cno = sc.cno where cname = 'vb' order by grade desc open c1
print ' ѧºÅ ÐÕÃû ËùÔÚϵ VB³É¼¨'
print '---------------------------------------' fetch next from c1 into @sno ,@sname ,@dept ,@grade if @@FETCH_STATUS = 0
print @sno + @sname + @dept + @grade
fetch next from c1 into @sno ,@sname ,@dept ,@grade if @@FETCH_STATUS = 0
print @sno + @sname + @dept + @grade
fetch last from c1 into @sno ,@sname ,@dept ,@grade if @@FETCH_STATUS = 0
print @sno + @sname + @dept + @grade close c1 deallocate c1
£¨2£© Áгöÿ¸öϵÄêÁä×î´óµÄÃûѧÉúµÄÐÕÃûºÍÄêÁ䣬½«½á¹û°´ÄêÁä½µÐòÅÅÐò¡£
declare @sname char(10),@age char(4),@dept char(20) declare c1 cursor for select distinct sdept from student open c1
fetch next from c1 into @dept while @@FETCH_STATUS = 0 begin
print @dept
declare c2 cursor for
select top 2 with ties sname,sage from student where sdept = @dept order by sage desc open c2
fetch next from c2 into @sname ,@age if @@FETCH_STATUS = 0 print @sname + @age fetch next from c2 into @sname ,@age if @@FETCH_STATUS = 0 print @sname + @age print '' close c2 deallocate c2
fetch next from c1 into @dept
40