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

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

£¨11£©»ùÓÚstudent_info±í¡¢curriculum±íºÍgrade±í£¬½¨Á¢Ò»¸öÃûΪv_stu_gµÄÊÓͼ£¬ÊÓͼÖоßÓÐËùÓÐѧÉúµÄѧºÅ¡¢ÐÕÃû¡¢¿Î³ÌÃû³Æ¡¢·ÖÊý¡£Ê¹ÓÃÊÓͼv_stu_g²éѯѧºÅΪ0001µÄѧÉúµÄËùÓпγÌÓë³É¼¨£¬Èçͼ1-9Ëùʾ¡£

ͼ1-9 ѧºÅΪ0001µÄѧÉúµÄÊÓͼÐÅÏ¢

£¨12£©·Ö±ðʹÓÃSQL Server¹ÜÀíÆ½Ì¨ºÍTransact-SQLÓï¾äÐÞ¸ÄÊÓͼv_stu_c£¬Ê¹Ö®ÏÔʾѧºÅ¡¢ÐÕÃû¡¢Ã¿¸öѧÉúËùѧ¿Î³ÌÊýÄ¿¡£

£¨13£©Ê¹ÓÃTransact-SQLÓï¾äALTER VIEWÐÞ¸ÄÊÓͼv_stu_i£¬Ê¹Æä¾ßÓÐÁÐÃûѧºÅ¡¢ÐÕÃû¡¢ÐÔ±ð¡£

£¨14£©Ê¹ÓÃϵͳ´æ´¢¹ý³Ìsp_rename½«ÊÓͼv_stu_i¸üÃûΪv_stu_info¡£

£¨15£©ÀûÓÃÊÓͼv_stu_iΪstudent_info±íÌí¼ÓÒ»ÐÐÊý¾Ý£ºÑ§ºÅΪ0015¡¢ÐÕÃûΪ³ÂæÃ¡¢ÐÔ±ðΪŮ¡£

£¨16£©ÀûÓÃÊÓͼv_stu_iɾ³ýѧºÅΪ0015µÄѧÉú¼Ç¼¡£

£¨17£©ÀûÓÃÊÓͼv_stu_gÐÞ¸ÄÐÕÃûΪÁõÎÀƽµÄѧÉúµÄ¸ßµÈÊýѧµÄ·ÖÊýΪ84¡£ £¨18£©Ê¹ÓÃTransact-SQLÓï¾äDROP VIEWɾ³ýÊÓͼv_stu_cºÍv_stu_g¡£

3£®ÊµÑé˼¿¼

£¨1£©ÊÇ·ñ¿ÉÒÔͨ¹ýÊÓͼv_stu_gÐÞ¸Ägrade±íÖÐѧºÅÁÐÊý¾Ý£¿ £¨2£©±È½ÏÊÓͼºÍ»ù±í²Ù×÷±íÖÐÊý¾ÝµÄÒìͬ¡£ £¨3£©¿É¸üÐÂÊÓͼ±ØÐëÂú×ãÄÄЩÌõ¼þ?

£¨4£©Ê²Ã´ÊÇË÷Òý£¿SQL Server 2008ÖÐÓÐÁ½ÖÖÐÎʽµÄË÷Òý£º¾Û¼¯Ë÷ÒýºÍ·Ç¾Û¼¯Ë÷Òý£¬¼òµ¥ÐðÊöËüÃǵÄÇø±ð£¿

£¨5£©ÄÜ·ñÔÚÊÓͼÉÏ´´½¨Ë÷Òý£¿

sp_rename v_stu_i,v_stu_info

ALTER VIEW v_stu_i(ѧºÅ,ÐÕÃû,ÐÔ±ð)

AS SELECT ѧºÅ,ÐÕÃû,ÐÔ±ð FROM student_info

13

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

ʵÑé6 Êý¾ÝÍêÕûÐÔ

1£®ÊµÑéÄ¿µÄ

£¨1£©ÕÆÎÕTransact-SQLÓï¾ä£¨CREATE RULE¡¢DROP RULE£©´´½¨ºÍɾ³ý¹æÔòµÄ·½·¨¡£ £¨2£©ÕÆÎÕϵͳ´æ´¢¹ý³Ìsp_bindrule¡¢sp_unbindrule°ó¶¨ºÍ½â³ý°ó¶¨¹æÔòµÄ²Ù×÷·½·¨£¬ÒÔ¼°sp_helptext²éѯ¹æÔòÐÅÏ¢¡¢sp_rename¸üÃû¹æÔòµÄ·½·¨¡£

£¨3£©ÕÆÎÕTransact-SQLÓï¾ä£¨CREATE DEFAULT¡¢DROP DEFAULT£©´´½¨ºÍɾ³ýĬÈ϶ÔÏóµÄ·½·¨¡£

£¨4£©ÕÆÎÕϵͳ´æ´¢¹ý³Ìsp_bindefault¡¢sp_unbindefault°ó¶¨ºÍ½â³ý°ó¶¨Ä¬È϶ÔÏóµÄ²Ù×÷ ·½·¨£¬ÒÔ¼°sp_helptext²éѯĬÈ϶ÔÏóÐÅÏ¢¡£

£¨5£©ÕÆÎÕSQL Server¹ÜÀíÆ½Ì¨ºÍTransact-SQLÓï¾ä£¨CREATE TABLE¡¢ALTER TABLE£©¶¨ÒåºÍɾ³ýÔ¼ÊøµÄ·½·¨£¬²¢Á˽âÔ¼ÊøµÄÀàÐÍ¡£

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

£¨1£©ÎªstudentsdbÊý¾Ý¿â´´½¨Ò»¸ö¹æÔò£¬ÏÞÖÆËùÊäÈëµÄÊý¾ÝΪ7λ0~9µÄÊý×Ö¡£

¢Ù ¸´ÖÆstudent_info±íÃüÃûΪstu_phone£¬ÔÚstu_phone±íÖвåÈëÒ»ÁУ¬ÁÐÃûΪ¡°µç»°ºÅÂ롱¡£Íê³ÉÒÔÏ´úÂëʵÏָòÙ×÷¡£

SELECT * INTO stu_phone FROM student_info

stu_phone±í½á¹¹Èçͼ1-10Ëùʾ¡£

ALTER TABLE stu_phone ADD CHAR(7) NULL

ͼ1-10 stu_phone±í½á¹¹

¢Ú ´´½¨Ò»¸ö¹æÔòphone_rule£¬ÏÞÖÆËùÊäÈëµÄÊý¾ÝΪ7λ0~9µÄÊý×Ö¡£ÊµÏָùæÔòµÄ´úÂëΪ

CREATE phone_rule

AS

@phone LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'

¢Û ʹÓÃϵͳ´æ´¢¹ý³Ìsp_bindrule½«phone_rule¹æÔò°ó¶¨µ½stu_phone±íµÄ¡°µç»°ºÅÂ롱ÁÐÉÏ¡£ÊµÏָòÙ×÷µÄ´úÂëΪ

¢Ü ÊäÈëÒÔÏ´úÂ룬½øÐÐÒ»´Î²åÈë²Ù×÷£º

²úÉúÒÔϳö´íÐÅÏ¢£º

sp_bindrule ,'stu_phone.µç»°ºÅÂë'

INSERT INTO stu_phone(ѧºÅ,ÐÕÃû,µç»°ºÅÂë) VALUES('0009','Íõ¹úÇ¿','1234yyy')

ÏûÏ¢513,¼¶±ð16,״̬0,µÚ1 ÐÐ

ÁеIJåÈë»ò¸üÐÂÓëÏÈǰµÄCREATE RULE Óï¾äËùÖ¸¶¨µÄ¹æÔò·¢Éú³åÍ»¡£¸ÃÓï¾äÒÑÖÕÖ¹¡£³åÍ»·¢ÉúÓÚ

Êý¾Ý¿â'studentsdb',±í'dbo.stu_phone',ÁÐ'µç»°ºÅÂë'¡£

14

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

Óï¾äÒÑÖÕÖ¹¡£

ÊÔ·ÖÎö£º Ϊʲô»á²úÉú¸Ã³ö´íÐÅÏ¢£¿Èç¹ûҪʵÏÖ²åÈë²Ù×÷£¬Ó¦ÐÞ¸ÄINSERT INTOÓï¾äÖеÄÄĸöÖµ£¿phone_rule¹æÔòÄÜ·ñ¶ÔÆäËû²Ù×÷£¨ÈçDELETE£©½øÐйæÔò¼ì²é£¿

£¨2£©´´½¨Ò»¸ö¹æÔòstusex_rule£¬½«Æä°ó¶¨µ½stu_phone±íµÄ¡°ÐÔ±ð¡±ÁÐÉÏ£¬±£Ö¤ÊäÈëµÄÐÔ±ðÖµÖ»ÄÜÊÇ¡°ÄС±»ò¡°Å®¡±¡£

£¨3£©Ê¹ÓÃϵͳ´æ´¢¹ý³Ìsp_help²éѯstusex_rule¹æÔòÁÐ±í£¬Ê¹ÓÃsp_helptext²éѯstusex_rule¹æÔòµÄÎı¾£¬Ê¹ÓÃsp_rename½«stusex_rule¹æÔò¸üÃûΪstu_s_rule¡£

£¨4£©É¾³ýstu_s_rule¹æÔò¡£

stu_s_rule£¨stusex_rule¸üÃûºó¹æÔòÃû£©ÊÇ·ñÈÔÈ»°ó¶¨ÔÚstu_phone±íµÄ¡°ÐÔ±ð¡±ÁÐÉÏ£¿Ó¦ÈçºÎ²Ù×÷²ÅÄÜɾ³ýËü£¿

£¨5£©ÔÚstudentdbÊý¾Ý¿âÖУ¬½¨Á¢ÈÕÆÚ¡¢»õ±ÒºÍ×Ö·ûµÈÊý¾ÝÀàÐ͵ÄĬÈ϶ÔÏó¡£

¢Ù ÔÚ²éѯÉè¼ÆÆ÷ÖУ¬Íê³ÉÒÔÏ´úÂ룬´´½¨Ä¬È϶ÔÏódf_date¡¢df_char¡¢df_money¡£

--´´½¨ÈÕÆÚÐÍĬÈ϶ÔÏódf_date CREATE df_date AS '2009-4-12' GO

--´´½¨×Ö·ûÐÍĬÈ϶ÔÏódf_char CREATE DEFAULT df_char 'unknown' GO

--´´½¨»õ±ÒÐÍĬÈ϶ÔÏódf_money CREATE DEFAULT AS $100 GO

¢Ú ÊäÈëÒÔÏ´úÂ룬ÔÚstudentsdbÊý¾Ý¿âÖд´½¨stu_feeÊý¾Ý±í¡£

CREATE TABLE stu_fee

(ѧºÅ char(10) NOT NULL, ÐÕÃû char(8) NOT NULL, ѧ·Ñ money, ½»·ÑÈÕÆÚ datetime, µç»°ºÅÂë char(7))

±ístu_feeµÄÊý¾Ý½á¹¹Èçͼ1-11Ëùʾ¡£

ͼ1-11 stu_feeµÄÊý¾Ý½á¹¹

¢Û ʹÓÃϵͳ´æ´¢¹ý³Ìsp_bindefault½«Ä¬È϶ÔÏódf_money¡¢df_date¡¢df_char·Ö±ð°ó¶¨ÔÚstu_fee±íµÄ¡°Ñ§·Ñ¡±¡¢¡°½»·ÑÈÕÆÚ¡±¡¢¡°µç»°ºÅÂ롱ÁÐÉÏ¡£

df_money,'stu_fee.ѧ·Ñ'

GO

sp_bindefault ,'stu_fee.½»·ÑÈÕÆÚ' GO

sp_bindefault df_char,'stu_fee.µç»°ºÅÂë' GO

15

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

¢Ü ÊäÈëÒÔÏ´úÂ룬ÔÚstu_fee±í½øÐвåÈë²Ù×÷£º

INSERT INTO stu_fee(ѧºÅ,ÐÕÃû) VALUES('0001','ÁõÎÀƽ')

INSERT INTO stu_fee(ѧºÅ,ÐÕÃû,ѧ·Ñ) VALUES('0001','ÕÅÎÀÃñ',$120) INSERT INTO stu_fee(ѧºÅ,ÐÕÃû,ѧ·Ñ,½»·ÑÈÕÆÚ) VALUES('0001','Âí¶«',$110,'2006-5-12')

·ÖÎöstu_fee±íÖвåÈë¼Ç¼µÄ¸÷ÁеÄÖµÊÇʲô£¿

¢Ý Íê³ÉÒÔÏ´úÂ룬½â³ýĬÈ϶ÔÏódf_charµÄ°ó¶¨£¬²¢É¾³ýÖ®¡£

'stu_fee.µç»°ºÅÂë' DEFAULT df_char

°´Í¬ÑùµÄ·½Ê½£¬É¾³ýĬÈ϶ÔÏódf_date¡¢df_money¡£

£¨6£©Îªstudent_info±íÌí¼ÓÒ»ÁУ¬ÃüÃûΪ¡°ÔºÏµ¡±£¬´´½¨Ò»¸öĬÈ϶ÔÏóstu_d_df£¬½«Æä°ó¶¨µ½student_info±íµÄ¡°ÔºÏµ¡±ÁÐÉÏ£¬Ê¹ÆäĬÈÏֵΪ¡°ÐÅÏ¢Ôº¡±£¬¶Ôstudent_info±í½øÐвåÈë²Ù×÷£¬²Ù×÷Íê³Éºó£¬É¾³ý¸ÃĬÈ϶ÔÏó¡£

£¨7£©ÔÚstudentsdbÊý¾Ý¿âÖÐÓÃCREATE TABLEÓï¾ä´´½¨±ístu_con£¬²¢Í¬Ê±´´½¨Ô¼Êø¡£ ¢Ù ´´½¨±íµÄͬʱ´´½¨Ô¼Êø¡£±í½á¹¹Èçͼ1-12Ëùʾ¡£

ͼ1-12 Òª´´½¨µÄ±íµÄ½á¹¹

Ô¼ÊøÒªÇóÈçÏ£º

½«Ñ§ºÅÉèÖÃΪÖ÷¼ü£¨PRIMARY KEY£©£¬Ö÷¼üÃûΪpk_sid¡£ ΪÐÕÃûÌí¼ÓÎ¨Ò»Ô¼Êø£¨UNIQUE£©£¬Ô¼ÊøÃûΪuk_name¡£ ΪÐÔ±ðÌí¼ÓĬÈÏÔ¼Êø£¨DEFAULT£©£¬Ä¬ÈÏÃû³ÆÎªdf_sex£¬ÆäֵΪ¡°ÄС±¡£ Ϊ³öÉúÈÕÆÚÌí¼ÓÊôÐÔÖµÔ¼Êø£¨CHECK£©£¬Ô¼ÊøÃûΪck_bday£¬Æä¼ì²éÌõ¼þΪ£º³öÉúÈÕÆÚ>'1988-1-1'¡£

¢Ú ÔÚstu_con±íÖвåÈëÈç±í1-1ËùʾµÄÊý¾Ý¼Ç¼¡£

±í1-1 ÔÚstu_con±íÖвåÈëµÄÊý¾Ý

ѧºÅ 0009 0010 0011 0012

ÐÕÃû ÕÅС¶« Àî÷ ÍõÇ¿ ÍõÇ¿

ÐÔ±ð Å®

³öÉúÈÕÆÚ 1989-4-6 1983-8-5 1988-9-10 1989-6-3

¼Òͥסַ

·ÖÎö¸÷Ô¼ÊøÔÚ²åÈë¼Ç¼ʱËùÆðµÄ×÷Ó㬲鿴²åÈë¼Ç¼ºó±íÖÐÊý¾ÝÓëËù²åÈëµÄÊý¾ÝÊÇ·ñÒ»Ö£¿

¢Û ʹÓÃALTER TABLEÓï¾äµÄDROP CONSTRAINT²ÎÊýÏîÔÚ²éѯÉè¼ÆÆ÷ÖÐɾ³ýΪstu_con±íËù½¨µÄÔ¼Êø¡£

£¨8£©ÓÃSQL Server¹ÜÀíÆ½Ì¨Íê³ÉʵÑéÄÚÈÝ7µÄËùÓÐÉèÖá£

£¨9£©ÔÚ²éѯÉè¼ÆÆ÷ÖУ¬ÎªstudentsdbÊý¾Ý¿âµÄgrade±íÌí¼ÓÍâ¼üÔ¼Êø£¨FOREIGN KEY£©£¬ÒªÇ󽫡°Ñ§ºÅ¡±ÉèÖÃΪÍâ¼ü£¬²ÎÕÕ±íΪstudent_info£¬Íâ¼üÃû³ÆÎªfk_sid¡£

16