2016-Êý¾Ý¿âÔ­ÀíʵÑéʵÑéÖ¸µ¼Êé(SQL Server 2008)

Êý¾Ý¿âÔ­ÀíʵÑéÖ¸µ¼Êé

ʵÑé8 ´æ´¢¹ý³ÌºÍ´¥·¢Æ÷

1£®ÊµÑéÄ¿µÄ

£¨1£©ÕÆÎÕͨ¹ýSQL Server¹ÜÀíÆ½Ì¨ºÍTransact-SQLÓï¾äCREATE PROCEDURE´´½¨´æ´¢¹ý³ÌµÄ·½·¨ºÍ²½Öè¡£

£¨2£©ÕÆÎÕʹÓÃTransact-SQLÓï¾äEXECUTEÖ´Ðд洢¹ý³ÌµÄ·½·¨¡£ £¨3£©ÕÆÎÕͨ¹ýSQL Server¹ÜÀíÆ½Ì¨ºÍTransact-SQLÓï¾äALTER PROCEDUREÐ޸Ĵ洢¹ý³ÌµÄ·½·¨¡£

£¨4£©ÕÆÎÕͨ¹ýSQL Server¹ÜÀíÆ½Ì¨ºÍTransact-SQLÓï¾äDROP PROCEDUREɾ³ý´æ´¢¹ý³ÌµÄ·½·¨¡£

£¨5£©ÕÆÎÕͨ¹ýSQL Server¹ÜÀíÆ½Ì¨ºÍTransact-SQLÓï¾äCREATE TRIGGER´´½¨´¥·¢Æ÷µÄ·½·¨ºÍ²½Öè¡£

£¨6£©ÕÆÎÕÒý·¢´¥·¢Æ÷µÄ·½·¨¡£

£¨7£©ÕÆÎÕʹÓÃSQL Server¹ÜÀíÆ½Ì¨»òTransact-SQLÓï¾äÐ޸ĺÍɾ³ý´¥·¢Æ÷¡£ £¨8£©ÕÆÎÕÊÂÎñ¡¢ÃüÃûÊÂÎñµÄ´´½¨·½·¨£¬Á˽ⲻͬÀàÐ͵ÄÊÂÎñµÄ´¦ÀíÇé¿ö¡£

2£®ÊµÑéÄÚÈݼ°²½Öè

£¨1£©ÔÚ²éѯÉè¼ÆÆ÷ÖÐÊäÈëÒÔÏ´úÂ룬´´½¨Ò»¸öÀûÓÃÁ÷¿ØÖÆÓï¾äµÄ´æ´¢¹ý³Ìletters_print£¬¸Ã´æ´¢¹ý³ÌÄܹ»ÏÔʾ26¸öСд×Öĸ¡£

CREATE PROCEDURE letters_print AS

DECLARE @count int SET @count=0 WHILE @count<26 BEGIN

PRINT CHAR(ASCII('a')+ @count) SET @count=@count +1 END

µ¥»÷²éѯ·ÖÎöÆ÷µÄ¡°Ö´Ðвéѯ¡±°´Å¥£¬²é¿´studentsdbÊý¾Ý¿âµÄ´æ´¢¹ý³ÌÊÇ·ñÓÐletters_print¡£

ʹÓÃEXECUTEÃüÁîÖ´ÐÐletters_print´æ´¢¹ý³Ì¡£

£¨2£©ÊäÈëÒÔÏ´úÂ룬´´½¨´æ´¢¹ý³Ìstu_info£¬Ö´ÐÐʱͨ¹ýÊäÈëÐÕÃû£¬¿ÉÒÔ²éѯ¸ÃÐÕÃû¶ÔÓ¦µÄѧÉúµÄ¸÷¿Æ³É¼¨¡£

CREATE PROCEDURE stu_info @name varchar(40) AS

SELECT a.ѧºÅ,ÐÕÃû,¿Î³Ì±àºÅ,·ÖÊý

FROM student_info a INNER JOIN grade ta ON a.ѧºÅ= ta.ѧºÅ WHERE ÐÕÃû= @name

ʹÓÃEXECUTEÃüÁîÖ´Ðд洢¹ý³Ìstu_info£¬Æä²ÎÊýֵΪ¡°Âí¶«¡±¡£ Èç¹û´æ´¢¹ý³Ìstu_infoÖ´ÐÐʱûÓÐÌṩ²ÎÊý£¬ÒªÇóÄܰ´Ä¬ÈÏÖµ²éѯ£¨ÉèÐÕÃûΪ¡°ÁõÎÀƽ¡±£©£¬ÈçºÎÐ޸ĸùý³ÌµÄ¶¨Ò壿

21

Êý¾Ý¿âÔ­ÀíʵÑéÖ¸µ¼Êé

£¨3£©Ê¹ÓÃstudentsdbÊý¾Ý¿âÖеÄstudent_info±í¡¢curriculum±í¡¢grade±í¡£

¢Ù ´´½¨Ò»¸ö´æ´¢¹ý³Ìstu_grade£¬²éѯѧºÅΪ0001µÄѧÉúµÄÐÕÃû¡¢¿Î³ÌÃû³Æ¡¢·ÖÊý¡£ ¢Ú Ö´Ðд洢¹ý³Ìstu_grade£¬²éѯ0001ѧÉúµÄÐÕÃû¡¢¿Î³ÌÃû³Æ¡¢·ÖÊý¡£ ¢Û ʹÓÃϵͳ´æ´¢¹ý³Ìsp_rename½«´æ´¢¹ý³Ìstu_grade¸üÃûΪstu_g¡£ £¨4£©Ê¹ÓÃstudent_info±í¡¢curriculum±í¡¢grade±í¡£

¢Ù ´´½¨Ò»¸ö´ø²ÎÊýµÄ´æ´¢¹ý³Ìstu_g_p£¬µ±ÈÎÒâÊäÈëÒ»¸öѧÉúµÄÐÕÃûʱ£¬½«´Ó3¸ö±íÖзµ»Ø¸ÃѧÉúµÄѧºÅ¡¢Ñ¡Ð޵ĿγÌÃû³ÆºÍ¿Î³Ì³É¼¨¡£

¢Ú Ö´Ðд洢¹ý³Ìstu_g_p£¬²éѯ¡°ÁõÎÀƽ¡±µÄѧºÅ¡¢Ñ¡Ð޿γ̺Ϳγ̳ɼ¨¡£ ¢Û ʹÓÃϵͳ´æ´¢¹ý³Ìsp_helptext£¬²é¿´´æ´¢¹ý³Ìstu_g_pµÄÎı¾ÐÅÏ¢¡£ £¨5£©Ê¹ÓÃstudent_info±í¡£

¢Ù ´´½¨Ò»¸ö¼ÓÃܵĴ洢¹ý³Ìstu_en£¬²éѯËùÓÐÄÐѧÉúµÄÐÅÏ¢¡£ ¢Ú Ö´Ðд洢¹ý³Ìstu_en£¬²é¿´·µ»ØÑ§ÉúµÄÇé¿ö¡£

¢Û ʹÓÃTransact-SQLÓï¾äDROP PROCEDUREɾ³ý´æ´¢¹ý³Ìstu_en¡£ £¨6£©Ê¹ÓÃgrade±í¡£

¢Ù ´´½¨Ò»¸ö´æ´¢¹ý³Ìstu_g_r£¬µ±ÊäÈëÒ»¸öѧÉúµÄѧºÅʱ£¬Í¨¹ý·µ»ØÊä³ö²ÎÊý»ñÈ¡¸ÃѧÉú¸÷ÃÅ¿Î³ÌµÄÆ½¾ù³É¼¨¡£

¢Ú Ö´Ðд洢¹ý³Ìstu_g_r£¬ÊäÈëѧºÅ0002¡£ ¢Û ÏÔʾ0002ºÅѧÉúµÄƽ¾ù³É¼¨¡£

£¨7£©ÊäÈëÒÔÏ´úÂ룬¸´ÖÆstudent_info±íÃüÃûΪstu2£¬Îªstu2±í´´½¨Ò»¸ö´¥·¢Æ÷stu_tr£¬µ±stu2±í²åÈëÒ»Ìõ¼Ç¼ʱ£¬Îª¸Ã¼Ç¼Éú³ÉÒ»¸öѧºÅ£¬¸ÃѧºÅΪѧºÅÁÐÊý¾ÝµÄ×î´óÖµ¼Ó1¡£

--¸´ÖÆstudent_info±íÃüÃûΪstu2

SELECT * INTO stu2 FROM student_info GO

--Ϊstu2±í´´½¨Ò»¸öINSERTÐÍ´¥·¢Æ÷stu_tr CREATE TRIGGER stu_tr ON stu2 FOR INSERT AS

DECLARE @max char(4)

SET @max=(SELECT MAX(ѧºÅ) FROM stu2)

SET @max=@max+1

UPDATE stu2 SET ѧºÅ=REPLICATE('0',4-len(@max))+@max

Ö´ÐÐÒÔÉÏ´úÂ룬²é¿´studentsdbÊý¾Ý¿âÖÐÊÇ·ñÓÐstu2±í£¬Õ¹¿ªstu2£¬²é¿´Æä´¥·¢Æ÷ÏîÖÐÊÇ·ñÓÐstu_str´¥·¢Æ÷¡£

ÔÚ²éѯÉè¼ÆÆ÷µÄ±à¼­´°¿ÚÊäÈëÒÔÏ´úÂ룺

ÔËÐÐÒÔÉÏ´úÂ룬²é¿´stu2±íµÄ±ä»¯Çé¿ö£¬ÎªÊ²Ã´²åÈë¼Ç¼µÄѧºÅÖµ·¢ÉúÁ˸ı䣿

£¨8£©Îªgrade±í½¨Á¢Ò»¸öÃûΪinsert_g_tr µÄINSERT´¥·¢Æ÷£¬µ±Óû§Ïògrade±íÖвåÈë¼Ç¼ʱ£¬Èç¹û²åÈëµÄÊÇÔÚcurriculum±íÖÐûÓеĿγ̱àºÅ£¬ÔòÌáʾÓû§²»ÄܲåÈë¼Ç¼£¬·ñÔòÌáʾ¼Ç¼²åÈë³É¹¦¡£ÔÚ½øÐвåÈë²âÊÔʱ£¬·Ö±ðÊäÈëÒÔÏÂÊý¾Ý£º

ѧºÅ ¿Î³Ì±àºÅ ·ÖÊý

0004 0003 76 0005 0007 69

¹Û²ì²åÈëÊý¾ÝʱµÄÔËÐÐÇé¿ö£¬ËµÃ÷Ϊʲô£¿

22

INSERT INTO stu2(ѧºÅ,ÐÕÃû,ÐÔ±ð) VALUES('0001','ÕÅÖ÷','Å®')

FROM stu2 INNER JOIN inserted on stu2.ѧºÅ=inserted.ѧºÅ

Êý¾Ý¿âÔ­ÀíʵÑéÖ¸µ¼Êé

£¨9£©Îªcurriculum±í´´½¨Ò»¸öÃûΪdel_c_trµÄDELETE´¥·¢Æ÷£¬¸Ã´¥·¢Æ÷µÄ×÷ÓÃÊǽûֹɾ³ýcurriculum±íÖеļǼ¡£

£¨10£©Îªstudent_info±í´´½¨Ò»¸öÃûΪupdate_s_trµÄUPDATE´¥·¢Æ÷£¬¸Ã´¥·¢Æ÷µÄ×÷ÓÃÊǽûÖ¹¸üÐÂstudent_info±íÖеġ°ÐÕÃû¡±×ֶεÄÄÚÈÝ¡£

£¨11£©Ê¹ÓÃTransact-SQLÓï¾äDROP TRIGGERɾ³ýupdate_s_tr´¥·¢Æ÷¡£ £¨12£©Îªstudent_info±í½¨Á¢É¾³ý´¥·¢Æ÷del_s_tr£¬ÒªÇóµ±student_info±íµÄ¼Ç¼±»É¾³ýºó£¬grade±íÖÐÏàÓ¦µÄ¼Ç¼ҲÄÜ×Ô¶¯É¾³ý¡£

£¨13£©ÔÚstudentsdbÊý¾Ý¿âÖУ¬Ö´ÐÐÒÔÏÂÊÂÎñ´¦Àí¹ý³Ì£¬ËµÃ÷ÕâЩÊÂÎñÊôÓÚÄÄÒ»ÖÖÊÂÎñÀàÐÍ£¨ÒþÐÔÊÂÎñ¡¢ÏÔÐÔÊÂÎñ»ò×Ô¶¯Ê½ÊÂÎñ£©¡£

¢Ù

BEGIN TRANSACTION

INSERT INTO student_info(ѧºÅ,ÐÕÃû) VALUES('0009','ÀîÇà')

¢Ú

COMMIT TRANSACTION

SET IMPLICIT_TRANSACTIONS ON

GO

INSERT INTO grade(ѧºÅ,¿Î³Ì±àºÅ) VALUES('0005','0007')

GO

IF ((SELECT count(*) FROM curriculum WHERE ¿Î³Ì±àºÅ='0007')=0)

23

Êý¾Ý¿âÔ­ÀíʵÑéÖ¸µ¼Êé

¸½Â¼1£ºSQL server 2008 R2 °²×°Í¼½â

24

ÁªÏµ¿Í·þ£º779662525#qq.com(#Ìæ»»Îª@)