Áù¸ö½¨Òé·ÀÖ¹SQL×¢Èëʽ¹¥»÷
SQL×¢Èë¹¥»÷µÄΣº¦ÐԺܴó¡£ÔÚ½²½âÆä·ÀÖ¹°ì·¨Ö®Ç°£¬Êý¾Ý¿â¹ÜÀíÔ±ÓбØÒªÏÈÁ˽âÒ»ÏÂÆä¹¥»÷µÄÔÀí¡£ÕâÓÐÀûÓÚ¹ÜÀíÔ±²ÉÈ¡ÓÐÕë¶ÔÐԵķÀÖδëÊ©¡£
¡¡¡¡Ò»¡¢ SQL×¢Èë¹¥»÷µÄ¼òµ¥Ê¾Àý¡£
¡¡¡¡statement := "SELECT * from Users WHERE Value= " + a_variable + "
¡¡¡¡ÉÏÃæÕâÌõÓï¾äÊÇºÜÆÕͨµÄÒ»ÌõSQLÓï¾ä£¬ËûÖ÷ҪʵÏֵŦÄܾÍÊÇÈÃÓû§ÊäÈëÒ»¸öÔ±¹¤±àºÅÈ»ºó²éѯ´¦Õâ¸öÔ±¹¤µÄÐÅÏ¢¡£µ«ÊÇÈôÕâÌõÓï¾ä±»²»·¨¹¥»÷Õ߸Ä×°¹ýºó£¬¾Í¿ÉÄܳÉÎªÆÆ»µÊý¾ÝµÄºÚÊÖ¡£Èç¹¥»÷ÕßÔÚÊäÈë±äÁ¿µÄʱºò£¬ÊäÈëÒÔÏÂÄÚÈÝSA001’;drop table c_order--¡£ÄÇôÒÔÉÏÕâÌõSQLÓï¾äÔÚÖ´ÐеÄʱºò¾Í±äΪÁËSELECT * from Users WHERE Value= ‘SA001’;drop table c_order--¡£
¡¡¡¡ÕâÌõÓï¾äÊÇʲôÒâË¼ÄØ?‘SA001’ºóÃæµÄ·ÖºÅ±íʾһ¸ö²éѯµÄ½áÊøºÍÁíÒ»ÌõÓï¾äµÄ¿ªÊ¼¡£c_orderºóÃæµÄË«Á¬×Ö·û ָʾµ±Ç°ÐÐÓàϵIJ¿·ÖÖ»ÊÇÒ»¸ö×¢ÊÍ£¬Ó¦¸ÃºöÂÔ¡£Èç¹ûÐ޸ĺóµÄ´úÂëÓï·¨ÕýÈ·£¬Ôò·þÎñÆ÷½«Ö´ÐиôúÂ롣ϵͳÔÚ´¦ÀíÕâÌõÓï¾äʱ£¬½«Ê×ÏÈÖ´ÐвéѯÓï¾ä£¬²éµ½Óû§±àºÅΪSA001 µÄÓû§ÐÅÏ¢¡£È»ºó£¬Êý¾Ý½«É¾³ý±íC_ORDER(Èç¹ûûÓÐÆäËûÖ÷¼üµÈÏà¹ØÔ¼Êø£¬Ôòɾ³ý²Ù×÷¾Í»á³É¹¦)¡£Ö»Òª×¢ÈëµÄSQL´úÂëÓï·¨ÕýÈ·£¬±ãÎÞ·¨²ÉÓñà³Ì·½Ê½À´¼ì²â´Û¸Ä¡£Òò´Ë£¬±ØÐëÑéÖ¤ËùÓÐÓû§ÊäÈ룬²¢×Ðϸ¼ì²éÔÚÄúËùÓõķþÎñÆ÷ÖÐÖ´Ðй¹Ôì SQLÃüÁîµÄ´úÂë¡£
¡¡¡¡¶þ¡¢ SQL×¢Èë¹¥»÷ÔÀí¡£
¡¡¡¡¿É¼ûSQL×¢Èë¹¥»÷µÄΣº¦ÐԺܴó¡£ÔÚ½²½âÆä·ÀÖ¹°ì·¨Ö®Ç°£¬Êý¾Ý¿â¹ÜÀíÔ±ÓбØÒªÏÈÁ˽âÒ»ÏÂÆä¹¥»÷µÄÔÀí¡£ÕâÓÐÀûÓÚ¹ÜÀíÔ±²ÉÈ¡ÓÐÕë¶ÔÐԵķÀÖδëÊ©¡£
¡¡¡¡SQL×¢ÈëÊÇĿǰ±È½Ï³£¼ûµÄÕë¶ÔÊý¾Ý¿âµÄÒ»ÖÖ¹¥»÷·½Ê½¡£ÔÚÕâÖÖ¹¥»÷·½Ê½ÖУ¬¹¥»÷Õ߻ὫһЩ¶ñÒâ´úÂë²åÈëµ½×Ö·û´®ÖС£È»ºó»áͨ¹ý¸÷ÖÖÊֶν«¸Ã×Ö·û´®´«µÝµ½SQLServerÊý¾Ý¿âµÄʵÀýÖнøÐзÖÎöºÍÖ´ÐС£Ö»ÒªÕâ¸ö¶ñÒâ´úÂë·ûºÏSQLÓï¾äµÄ¹æÔò£¬ÔòÔÚ´úÂë±àÒëÓëÖ´ÐеÄʱºò£¬¾Í²»»á±»ÏµÍ³Ëù·¢ÏÖ¡£
¡¡¡¡SQL×¢Èëʽ¹¥»÷µÄÖ÷ÒªÐÎʽÓÐÁ½ÖÖ¡£Ò»ÊÇÖ±½Ó½«´úÂë²åÈëµ½ÓëSQLÃüÁî´®ÁªÔÚÒ»Æð²¢Ê¹µÃÆäÒÔÖ´ÐеÄÓû§ÊäÈë±äÁ¿¡£ÉÏÃæ±ÊÕß¾ÙµÄÀý×Ó¾ÍÊDzÉÓÃÁËÕâÖÖ·½·¨¡£ÓÉÓÚÆäÖ±½ÓÓëSQLÓï¾äÀ¦°ó£¬¹ÊÒ²±»³ÆÎªÖ±½Ó×¢Èëʽ¹¥»÷·¨¡£¶þÊÇÒ»ÖÖ¼ä½ÓµÄ¹¥»÷·½·¨£¬Ëü½«¶ñÒâ´úÂë×¢ÈëÒªÔÚ±íÖд洢»òÕß×÷ΪÔÊé¾Ý´æ´¢µÄ×Ö·û´®¡£ÔÚ´æ´¢µÄ×Ö·û´®ÖлáÁ¬½Óµ½Ò»¸ö¶¯Ì¬µÄSQLÃüÁîÖУ¬ÒÔÖ´ÐÐһЩ¶ñÒâµÄSQL´úÂë¡£
¡¡¡¡×¢Èë¹ý³ÌµÄ¹¤×÷·½Ê½ÊÇÌáǰÖÕÖ¹Îı¾×Ö·û´®£¬È»ºó×·¼ÓÒ»¸öеÄÃüÁî¡£ÈçÒÔÖ±½Ó×¢Èëʽ¹¥»÷ΪÀý¡£¾ÍÊÇÔÚÓû§ÊäÈë±äÁ¿µÄʱºò£¬ÏÈÓÃÒ»¸ö·ÖºÅ½áÊø
Ïà¹ØÎĵµ£º
Ó¦ÓÃʾÀý£º
-- ´´½¨2¸ö²âÊÔ±í
CREATE TABLE [dbo].[Table_2019]([Data] [nchar](2019) NOT NULL)
CREATE TABLE [dbo].[Table_2020]([Data] [nchar](2020) NOT NULL)
go
-- Ìî³äÊý¾Ý
declare @i int
set @i = 0
while(@i < 20)
begin
insert Table_2019(Data) values('')
  ......
¾µäSQLÓï¾ä´óÈ«
ÏÂÁÐÓï¾ä²¿·ÖÊÇMssqlÓï¾ä£¬²»¿ÉÒÔÔÚaccessÖÐʹÓá£
¡¡¡¡SQL·ÖÀࣺ
¡¡¡¡DDL—Êý¾Ý¶¨ÒåÓïÑÔ(CREATE£¬ALTER£¬DROP£¬DECLARE)
¡¡¡¡DML—Êý¾Ý²Ù×ÝÓïÑÔ(SELECT£¬DELETE£¬UPDATE£¬INSERT)
¡¡¡¡DCL—Êý¾Ý¿ØÖÆÓïÑÔ(GRANT£¬REVOKE£¬COMMIT£¬ROLLBACK)
¡¡¡¡Ê×ÏÈ,¼òÒª½éÉÜ»ù´¡Óï¾ä£º
¡¡¡¡1¡¢Ë ......
ͨ¹ýË÷Òý£¬¿ÉÒÔ¼Ó¿ìÊý¾ÝµÄ²éѯËٶȺͼõÉÙϵͳµÄÏìӦʱ¼ä£»¿ÉÒÔʹ±íºÍ±íÖ®¼äµÄÁ¬½ÓËٶȼӿ졣µ«ÊÇ£¬²»ÊÇÔÚÈκÎʱºòʹÓÃË÷Òý¶¼Äܹ»´ïµ½ÕâÖÖЧ¹û¡£ÈôÔÚ²»Ç¡µ±µÄ³¡ºÏÏ£¬Ê¹ÓÃË÷Òý·´¶ø»áÊÂÓëԸΥ¡£ Ë÷ÒýÊÇÒÔ±íÁÐΪ»ù´¡µÄÊý¾Ý¿â¶ÔÏó¡£Ë÷ÒýÖб£´æ×űíÖÐÅÅÐòµÄË÷ÒýÁÐ
¡¡¡¡
ͨ¹ýË÷Òý£¬¿ÉÒÔ¼Ó¿ìÊý¾ÝµÄ²éѯËٶȺͼõÉÙϵͳµÄÏìӦʱ¼ä£ ......
1. Nested Loop Join(ǶÌ×Ñ»·Áª½á)
Ëã·¨£º
Æä˼·Ï൱µÄ¼òµ¥ºÍÖ±½Ó£º¶ÔÓÚ¹ØÏµRµÄÿ¸öÔª×é r ½«ÆäÓë¹ØÏµSµÄÿ¸öÔª×é s ÔÚJOINÌõ¼þµÄ×Ö¶ÎÉÏÖ±½Ó±È½Ï²¢É¸Ñ¡³ö·ûºÏÌõ¼þµÄÔª×顣д³Éα´úÂë¾ÍÊÇ£º
´ú¼Û£º
±»Áª½áµÄ±íËù´¦ÄÚ²ã»òÍâ²ãµÄ˳Ðò¶Ô´ÅÅÌI/O¿ªÏúÓÐ×ŷdz£ÖØÒªµÄÓ°Ïì¡£¶øCPU¿ªÏúÏà¶ÔÀ´ËµÓ°Ïì½ÏС£¬Ö÷ÒªÊÇÔª×é¶ÁÈ ......
Ê×ÏȽéÉÜÒ»ÏÂʲôÊÇ´æ´¢¹ý³Ì£º´æ´¢¹ý³Ì¾ÍÊǽ«³£ÓõĻòºÜ¸´ÔӵŤ×÷£¬Ô¤ÏÈÓÃSQLÓï¾äдºÃ²¢ÓÃÒ»¸öÖ¸¶¨µÄÃû³Æ´æ´¢ÆðÀ´£¬²¢ÇÒÕâÑùµÄÓï¾äÊÇ·ÅÔÚÊý¾Ý¿âÖе쬻¹¿ÉÒÔ¸ù¾ÝÌõ¼þÖ´Ðв»Í¬SQLÓï¾ä£¬ ÄÇôÒÔºóÒª½ÐÊý¾Ý¿âÌṩÓëÒѶ¨ÒåºÃµÄ´æ´¢¹ý³ÌµÄ¹¦ÄÜÏàͬµÄ·þÎñʱ£¬Ö»Ðèµ÷ÓÃexecute,¼´¿É×Ô¶¯Íê³ÉÃüÁî¡£
¡¡¡¡Çë´ó¼ÒÀ´Á˽âÒ»ÏÂ´æ´ ......