Êý¾Ý¿âÔÀíʵÑéÖ¸µ¼Êé
ʵÑé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