久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

常見(jiàn)SQL查詢

 L羅樂(lè) 2018-04-14

1,、IN的用法

  在where條件中,用于限定查詢范圍,。

SELECT t.* FROM tablename t WHERE t.name IN ('張三','李四');

2,、UNION,UNINALL的用法

      UNIONUNION ALL都是將兩個(gè)SQL語(yǔ)句輸出結(jié)果合并,區(qū)別在于,,UNION會(huì)將輸出結(jié)果中的重復(fù)數(shù)據(jù)去重,,UNION ALL則顯示全部查詢結(jié)果,不去重,。

SELECT t.* FROM table1 t WHEREt.id IN ('822','237')

UNION ALL

SELECT t.* FROM table2 t WHEREt.id IN ('822');

3,、MINUS的用法

  第一條查詢SQL的輸出結(jié)果 減去 第二條查詢SQL的輸出結(jié)果,即顯示在第一條查詢記錄中,,但不在第二條查詢記錄中的數(shù)據(jù),。

SELECT t.* FROM table1 t WHEREt.id IN ('822','237')

MINUS

SELECT t.* FROM table2 t WHEREt.id IN ('822');

4、JOIN((INNERJOIN),LEFT JOIN,RIGHT JOIN,FULL JOIN

      兩個(gè)表使用直接關(guān)聯(lián)方式,,不會(huì)列出關(guān)聯(lián)不上的數(shù)據(jù),。使用LEFT JOIN或RIGHT JOIN則可顯示關(guān)聯(lián)不上的數(shù)據(jù)。

  不管是左連接,,還是右連接,,都以左邊的表為基礎(chǔ)表,基礎(chǔ)表顯示所有數(shù)據(jù),,右邊的表如有關(guān)聯(lián)不上的數(shù)據(jù),,則顯示為空。

1) INNER JOIN(等值連接)

  只返回兩個(gè)表中連接字段相等的行,。

2) LEFT JOIN(左外連接)

  A LEFT JOIN B(也可寫(xiě)成A LEFT OUTER JOIN B):A加入到B的左邊,,以A表為基礎(chǔ)表。

3) RIGHT JOIN(右外連接)

  A RIGHT JOIN B(也可寫(xiě)成A RIGHT OUTER JOIN B):A加入到B的右邊,,以B表為基礎(chǔ)表,。

4)FULL JOIN(全連接)

經(jīng)過(guò)測(cè)試此語(yǔ)句在MySQL 5.1.25-rc-win32 這個(gè)版本中不能執(zhí)行。MYSQL 中的FULL JOIN 可以用LEFT JOIN UNION RIGHTJOIN 來(lái)模擬,。

FULL JOIN 會(huì)把關(guān)聯(lián)的兩個(gè)表中沒(méi)有連接上的數(shù)據(jù)都顯示出來(lái),。

例如原始表有如下兩個(gè)表:

Persons表:

Id_P

LastName

FirstName

Address

City

1

Adams

John

Oxford Street

London

2

Bush

George

Fifth Avenue

New York

3

Carter

Thomas

Changan Street

Beijing

Orders 表:

Id_O

OrderNo

Id_P

1

77895

3

2

44678

3

3

22456

1

4

24562

1

5

34764

65

  現(xiàn)在,我們希望列出所有的人,,以及他們的定單,,以及所有的定單,以及定購(gòu)它們的人,??梢允褂孟旅娴?SELECT 語(yǔ)句:

  SELECT Persons.LastName,Persons.FirstName, Orders.OrderNo FROM Persons FULL JOIN Orders ON P=Id_P ORDERBY Persons.LastName 結(jié)果集:

LastName

FirstName

OrderNo

Adams

John

22456

Adams

John

24562

Carter

Thomas

77895

Carter

Thomas

44678

Bush

George




34764

FULL JOIN 關(guān)鍵字會(huì)從左表 (Persons) 和右表 (Orders) 那里返回所有的行。如果 'Persons' 中的行在表 'Orders' 中沒(méi)有匹配,,或者如果'Orders' 中的行在表 'Persons' 中沒(méi)有匹配,,這些行同樣會(huì)列出。

5,、EXISTS

  IN,,EXISTS只顯示單表數(shù)據(jù),當(dāng)需要顯示兩個(gè)表的數(shù)據(jù)時(shí),,使用IN,,EXISTS都不合適,要使用連接查詢,。

  EXISTS指定一個(gè)關(guān)聯(lián)子查詢,,檢測(cè)行的存在,用于檢查子查詢是否至少會(huì)返回一行數(shù)據(jù),,該子查詢實(shí)際上并不返回任何數(shù)據(jù),,而是返回值True或False,所以EXISTS()中的子句SELECT后寫(xiě)*或任何有效字段名都可以,,例如:

SELECT CustomerId,CompanyName FROM Customers c  

WHERE EXISTS ( SELECT OrderID FROM Orders o  

           WHERE o.CustomerID = c.CustomerID

   ) 

 

IN和EXISTS哪個(gè)效率高:

EXISTS是用LOOP的方式,,循環(huán)的次數(shù)對(duì)于速度影響大,外表記錄數(shù)少則速度快,。

IN,,內(nèi)表如果小,整個(gè)查詢的范圍都會(huì)很小,,如果內(nèi)表很大,,外表如果也很大就很慢了,EXISTS相反,。

所以,,IN適合于外表大而內(nèi)表小的情況;EXISTS適合于外表小而內(nèi)表大的情況,。

NOT IN和NOTEXISTS哪個(gè)效率高:

NOT IN內(nèi)外表都進(jìn)行全表掃描,,沒(méi)有用到索引。NOT EXISTS的子查詢能用到表上的索引,。所以通常NOT EXISTS要比NOT IN 要快,,推薦用NOT EXISTS代替NOT IN。

6,、GROUP BY 

SELECT

FROM

WHERE

GROUPBY

HAVING

SELECT t.key,COUNT(*) FROM table t

GROUP BY t.key

HAVING COUNT(*) < 100;

7,、關(guān)聯(lián)UPDATE

UPDATE T1

  SET COLUMNNAME1 =

      (SELECT COLUMNNAME2 FROM T2 WHERE T1.XXXID = T2.XXXID);

 

 


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多