Êý¾Ý¿âÔ­Àí¼°Ó¦Ó㨵Ú2°æ£©Ï°Ìâ²Î¿¼´ð°¸ ÏÂÔØ±¾ÎÄ

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