SQL Server 2000½øÐÐÈ«ÎļìË÷
SQL Server 2000ÌṩµÄÈ«ÎļìË÷Óï¾äÖ÷ÒªÓÐCONTAINSºÍFREETEXT¡£CONTAINSÓï¾äµÄ¹¦ÄÜÊÇÔÚ±íµÄËùÓÐÁлòÖ¸¶¨ÁÐÖÐËÑË÷£ºÒ»¸ö×Ö»ò¶ÌÓһ¸ö×Ö»ò¶ÌÓïµÄǰ׺£»ÓëÒ»¸ö×ÖÏà½üµÄÁíÒ»¸ö×Ö£»Ò»¸ö×ÖµÄÅÉÉú×Ö£»Ò»¸öÖØ¸´³öÏÖµÄ×Ö¡£
CONTAINSÓï¾äµÄÓï·¨¸ñʽΪ£º
CONTAINS({column | *}), <contains_search
_condition>)
ÆäÖУ¬columnÊÇËÑË÷ÁУ¬Ê¹ÓÃ'*'ʱ˵Ã÷¶Ô±íÖÐËùÓÐÈ«ÎÄË÷ÒýÁнøÐÐËÑË÷¡£Contains_search_
condition ˵Ã÷CONTAINSÓï¾äµÄËÑË÷ÄÚÈÝ£¬ÆäÓï·¨¸ñʽΪ£º
{<simple_term>|<prefix_term>|<proximity_term>|<generation_term>|<weighted_term>}[{{AND|AND NOT|OR}<contains_search_condition>}] [...n]
ÏÂÃæ¾Ísimple_termºÍprefix_term²ÎÊý×ö¼òҪ˵Ã÷£º
simple_termÊÇCONTAINSÓï¾äËùËÑË÷µÄµ¥×Ö»ò¶ÌÓµ±ËÑË÷µÄÊÇÒ»¸ö¶ÌÓïʱ£¬±ØÐëʹÓÃË«ÒýºÅ×÷Ϊ¶¨½ç·û¡£Æä¸ñʽΪ£º
{'word'|' phrase'}
prefix_term˵Ã÷CONTAINSÓï¾äËùËÑË÷µÄ×Ö»ò¶ÌÓïǰ׺£¬Æä¸ñʽΪ£º
{'word*' | 'phrase*'}
ÀýÈ磬ÏÂÃæÓï¾ä¼ìË÷Book±íµÄTitleÁкÍNotesÁÐÖаüº¬'database'»ò'computer'×Ö·û´®µÄͼÊéÃû³Æ¼°Æä×¢ÊÍÐ ......
SQL> setsqlprompt"_user _privilege> " ͨ¹ýÒÔÉÏÉèÖã¬ÄãµÄsqlplusÌáʾ±êʶ¾Í³ÉÁËÒÔϸñʽÁË£º SYS AS SYSDBA> Õâ¾Í±íÃ÷µ±Ç°µÄµÇ¼ÕʺÅÊÇSYS£¬Éí·ÝÊÇSYSDBA¡£Çë×¢ÒâÔÚÉÏÃæÓï¾äÖÐʹÓÃÁËÁ½¸öÌØÊâµÄÔ¤¶¨ÒåµÀµÂ±äÁ¿£º_userºÍ_privilege£¬·Ö±ð¶¨ÒåÁ˵±Ç°Óû§ºÍÕâ¸öÓû§µÄµÇ¼Éí·Ý£¨È¨ÏÞ£©¡£ÏÖÔÚÎÒÃÇÔÙÔö¼ÓһЩÆäËûÄÚÈÝ¡£±ÈÈçÎÒ³ýÁËÏëÖªµÀÒÔÉÏÐÅÏ¢Í⣬»¹ÏëÖªµÀµ±Ç°µÄµÇ¼ʱ¼ä£º SQL> setsqlprompt"_user _privilege on _date>" SYS AS SYSDBA on 31-8ÔÂ-05> ÔÙÔö¼ÓÒ»¸öÁ¬½ÓÐÅÏ¢¿´£¬ÕâÑù¾Í¿ÉÒÔÖ¸³öÄãµÇ¼µÄÊÇÄĸö·þÎñÆ÷µÄ£º SQL>setsqlprompt"_user on _date at _connect_identifier>" SYS on 31-8ÔÂ-05 atteng> µ«ÊÇÇ°ÃæµÄµ±Ç°Ê±¼äÐÅÏ¢Ö»ÓÐÈÕÆÚ£¬Èç¹ûÐèÒª¾«È·µ½µ±Ç°µÄÈ·ÇÐʱ¼äÄØ£º SYS on 31-8ÔÂ-05 atteng>alter session setnls_date_format='yyyy-mm-ddhh24:mi:ss'; »á»°ÒѸü¸Ä¡£ -------------- 15:02:59 SQL> SELECT USER ||'@'|| REPLACE (GLOBAL_NAME, '.WORLD', NULL) GLOBAL_NAME from GLOBAL_NAME ·½·¨2£º ¼ÓÔÚlogin.sql»òglogin.sqlÎļþµÄºóÃæ£º DEFINE gname = 'not connected'
CO ......
Student(S#,Sname,Sage,Ssex) ѧÉú±í
Course(C#,Cname,T#) ¿Î³Ì±í
SC(S#,C#,score) ³É¼¨±í
Teacher(T#,Tname) ½Ìʦ±í
ÎÊÌ⣺
1¡¢²éѯ“001”¿Î³Ì±È“002”¿Î³Ì³É¼¨¸ßµÄËùÓÐѧÉúµÄѧºÅ£»
select a.S# from (select s#,score from SC where C#='001') a,(select s#,score
from SC where C#='002') b
where a.score>b.score and a.s#=b.s#;
2¡¢²éѯƽ¾ù³É¼¨´óÓÚ60·ÖµÄͬѧµÄѧºÅºÍƽ¾ù³É¼¨£»
select S#,avg(score)
from sc
group by S# having avg(score) >60;
3¡¢²éѯËùÓÐͬѧµÄѧºÅ¡¢ÐÕÃû¡¢Ñ¡¿ÎÊý¡¢×ܳɼ¨£»
select Student.S#,Student.Sname,count(SC.C#),sum(score)
from Student left Outer join SC on Student.S#=SC.S#
group by Student.S#,Sname
4¡¢²éѯÐÕ“ÀÄÀÏʦµÄ¸öÊý£»
select count(distinct(Tname))
from Teacher
where Tname like 'Àî%';
5¡¢²éѯûѧ¹ý“Ҷƽ”ÀÏʦ¿ÎµÄͬѧµÄѧºÅ¡¢ÐÕÃû£»
select Student.S#,Stu ......
ÔÚʹÓùý³ÌÖдó¼Ò¾³£Åöµ½Êý¾Ý¿âÈÕÖ¾·Ç³£´óµÄÇé¿ö£¬ÔÚÕâÀï½éÉÜÁËÁ½ÖÖ´¦Àí·½·¨……
¡¡¡¡·½·¨Ò»
¡¡¡¡Ò»°ãÇé¿öÏ£¬SQLÊý¾Ý¿âµÄÊÕËõ²¢²»Äܴܺó³Ì¶ÈÉϼõСÊý¾Ý¿â´óС£¬ÆäÖ÷Òª×÷ÓÃÊÇÊÕËõÈÕÖ¾´óС£¬Ó¦µ±¶¨ÆÚ½øÐд˲Ù×÷ÒÔÃâÊý¾Ý¿âÈÕÖ¾¹ý´ó¡£
¡¡¡¡1¡¢ÉèÖÃÊý¾Ý¿âģʽΪ¼òµ¥Ä£Ê½£º´ò¿ªSQLÆóÒµ¹ÜÀíÆ÷£¬ÔÚ¿ØÖÆÌ¨¸ùĿ¼ÖÐÒÀ´Îµã¿ªMicrosoft SQL Server-->SQL Server×é-->Ë«»÷´ò¿ªÄãµÄ·þÎñÆ÷-->Ë«»÷´ò¿ªÊý¾Ý¿âĿ¼-->Ñ¡ÔñÄãµÄÊý¾Ý¿âÃû³Æ(ÈçÂÛ̳Êý¾Ý¿âForum)-->È»ºóµã»÷ÓÒ¼üÑ¡ÔñÊôÐÔ-->Ñ¡ÔñÑ¡Ïî-->ÔÚ¹ÊÕÏ»¹ÔµÄģʽÖÐÑ¡Ôñ“¼òµ¥”£¬È»ºó°´È·¶¨±£´æ
¡¡¡¡2¡¢ÔÚµ±Ç°Êý¾Ý¿âÉϵãÓÒ¼ü£¬¿´ËùÓÐÈÎÎñÖеÄÊÕËõÊý¾Ý¿â£¬Ò»°ãÀïÃæµÄĬÈÏÉèÖò»Óõ÷Õû£¬Ö±½ÓµãÈ·¶¨
¡¡¡¡3¡¢ÊÕËõÊý¾Ý¿âÍê³Éºó£¬½¨Ò齫ÄúµÄÊý¾Ý¿âÊôÐÔÖØÐÂÉèÖÃΪ±ê׼ģʽ£¬²Ù×÷·½·¨Í¬µÚÒ»µã£¬ÒòΪÈÕÖ¾ÔÚһЩÒì³£Çé¿öÏÂÍùÍùÊǻָ´Êý¾Ý¿âµÄÖØÒªÒÀ¾Ý
¡¡¡¡·½·¨¶þ
¡¡¡¡SET NOCOUNT ON
¡¡¡¡DECLARE @LogicalFileName sysname,
¡¡¡¡@MaxMinutes INT,
¡¡¡¡@NewSize INT
¡¡¡¡USE tablename -- Òª²Ù×÷µÄÊý¾Ý¿âÃû
¡¡¡¡SELECT @LogicalFileName = 'tablename_log', -- ÈÕÖ¾ÎļþÃû
¡¡¡¡@M ......
1. Nested Loop Join(ǶÌ×Ñ»·Áª½á)
Ëã·¨£º
Æä˼·Ï൱µÄ¼òµ¥ºÍÖ±½Ó£º¶ÔÓÚ¹ØÏµRµÄÿ¸öÔª×é r ½«ÆäÓë¹ØÏµSµÄÿ¸öÔª×é s ÔÚJOINÌõ¼þµÄ×Ö¶ÎÉÏÖ±½Ó±È½Ï²¢É¸Ñ¡³ö·ûºÏÌõ¼þµÄÔª×顣д³Éα´úÂë¾ÍÊÇ£º
´ú¼Û£º
±»Áª½áµÄ±íËù´¦ÄÚ²ã»òÍâ²ãµÄ˳Ðò¶Ô´ÅÅÌI/O¿ªÏúÓÐ×ŷdz£ÖØÒªµÄÓ°Ïì¡£¶øCPU¿ªÏúÏà¶ÔÀ´ËµÓ°Ïì½ÏС£¬Ö÷ÒªÊÇÔª×é¶ÁÈëÄÚ´æÒÔºó(in-memory)µÄ¿ªÏú£¬ÊÇ O (n * m)
¶ÔÓÚI/O¿ªÏú£¬¸ù¾Ý page-at-a-time µÄǰÌáÌõ¼þ£¬I/O cost = M + M * N£¬
·ÒëһϾÍÊÇ I/OµÄ¿ªÏú = ¶ÁÈ¡MÒ³µÄI/O¿ªÏú + M´Î¶ÁÈ¡NÒ³µÄI/O¿ªÏú¡£
2. Sort-Merge Join (ÅÅÐòºÏ²¢Áª½á)
Nested LoopÒ»°ãÔÚÁ½¸ö¼¯ºÏ¶¼ºÜ´óµÄÇé¿öÏÂЧÂʾÍÏ൱²îÁË£¬¶øSort-MergeÔÚÕâÖÖÇé¿öϾͱÈËüÒª¸ßЧ²»ÉÙ£¬ÓÈÆäÊǵ±Á½¸ö¼¯ºÏµÄJOIN×Ö¶ÎÉ϶¼Óоۼ¯Ë÷Òý(clustered index)´æÔÚʱ£¬Sort-MergeÐÔÄܽ«´ïµ½×îºÃ¡£
Ëã·¨£º
»ù±¾Ë¼Â·Ò²ºÜ¼òµ¥(¸´Ï°Ò»ÏÂÊý¾Ý½á¹¹Öеĺϲ¢ÅÅÐò°É)£¬Ö÷ÒªÓÐÁ½¸ö²½Ö裺
a.°´JOIN×ֶνøÐÐÅÅÐò
b.¶ÔÁ½×éÒÑÅÅÐò¼¯ºÏ½øÐкϲ¢ÅÅÐò£¬´ÓÀ´Ô´¶Ë¸÷×ÔÈ¡µÃÊý¾ÝÁкó¼ÓÒԱȽÏ(ÐèÒª¸ù¾ÝÊÇ·ñÔÚJOIN×Ö¶ÎÓÐÖØ¸´Öµ×öÌØÊâµÄ“·ÖÇø”´¦Àí)
´ú¼Û£º(Ö÷ÒªÊÇI/O¿ªÏú)
ÓÐÁ½¸öÒòËØ×óÓÒSort-MergeµÄ¿ªÏú£ºJOIN×Ö¶ÎÊÇ·ñÒÑÅÅ ......
¡¡ÔÚSQL Server 2005Êý¾Ý¿âÖÐʵÏÖ×Ô¶¯±¸·ÝµÄ¾ßÌå²½Öè:
¡¡¡¡1¡¢´ò¿ªSQL Server Management Studio
¡¡¡¡2¡¢Æô¶¯SQL Server´úÀí
¡¡¡¡3¡¢µã»÷×÷Òµ->н¨×÷Òµ
¡¡¡¡4¡¢"³£¹æ"ÖÐÊäÈë×÷ÒµµÄÃû³Æ
¡¡¡¡5¡¢Ð½¨²½Ö裬ÀàÐÍÑ¡T-SQL£¬ÔÚÏÂÃæµÄÃüÁîÖÐÊäÈëÏÂÃæÓï¾ä£¨Çë¸ù¾Ý×Ô¼ºµÄʵ¼ÊÇé¿ö¸ü¸Ä£¬D:\sql2005\\back\¸ÄΪ×Ô¼ºµÄ±¸·Ý·¾¶£¬sq_testÐÞ¸ÄΪÏ뱸·ÝµÄÊý¾Ý¿âµÄÃû³Æ£©
¡¡¡¡DECLARE @strPath NVARchar(200)
¡¡¡¡set @strPath = convert(NVARchar(19),getdate(),120)
¡¡¡¡set @strPath = REPLACE(@strPath, ’:’ , ’.’)
¡¡¡¡set @strPath = ’D:\sql2005\\back\’ + @strPath + ’.bak’
¡¡¡¡BACKUP DATABASE [sq_test] TO DISK = @strPath WITH NOINIT , NOUNLOAD , NOSKIP , STATS = 10, NOFORMAT
¡¡¡¡6¡¢Ìí¼Ó¼Æ»®£¬ÉèÖÃÆµÂÊ£¬Ê±¼äµÈ¡£
¡¡¡¡7¡¢È·¶¨£¬Íê³É¡£
......