<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    void

    Using SQL 之 Data Manipulation Language (DML)

    1. Types of MDL statements

    SELECT Retrieves rows from one or more tables. 從一個或多個表中取得若干列

    INSERT Adds one or more new rows to a table. 向表中添加若干列

    UPDATE Modifies one or more rows in a table. 更新表中的若干列

    DELETE Removes one or more rows from a table. 從表中刪除若干列

    2. SELECT

    SELECT 列名, 列名, …, 列名 FROM 表名;

    SELECT *(所有列) FROM 表名;

    如果表名或列名中有空格,要用方括號[]括起來。

    1 使用SMO有條件地SELECT

    SELECT加上限制條件,使用WHERE。

    SELECT something FROM somewhere WHERE 列名 SMO某個值;

    Here, SMO means SQL Mathematical Operators

    操作符

    意義

    =

    等于

    <> 或 !=

    不等于

    <

    小于

    >

    大于

    <=

    小于等于

    >=

    大于等于

    (2) LIKE - 按樣式SELECT

    SELECT something FROM somewhere WHERE 列名 LIKE某個值(帶通配符);

    LIKE 中可以使用的通配符

    通配符

    意義

    _ (下劃線)

    表示作一個任意字符

    %

    表示任意任意字符

    [ ]

    表示與括號中任意一個字符相匹配的字符

    [^ ]

    表示與任意一個不在括號中的字符匹配的字符

    [ - ]

    與括號中從左到右的范圍中字符匹配

    #

    表示一個任意數字

    例:

    ‘Cha_’ 可以是 ‘Chaa’、’Chay’、’Cha4’、’Cha.’、’Cha@’……

    ‘Cha%’ 可以是’‘Chaaasf’、’Chay’、’Chaqq4a4’、’Cha.ert’、’Cha@qawe’……

    ‘[AIO]%’ 表示以’A’、’I’或’O’開頭,以任意字符結尾的字符串

    ‘[AIO]%’ 表示以’A’、’I’或’O’之外的字符開頭,以任意字符結尾的字符串

    ‘[A-O]%’ 表示以從’A到’O’之間的字符開頭,以任意字符結尾的字符串

    (2) IN - 指定選擇范圍

    SELECT something FROM somewhere WHERE 列名 IN(列出范圍);

    列出的范圍可以是顯式地指定出來,也可以用其它方法限制,如用另一個SELECT語句選擇得到的結果。

    例1: SELECT ProductID, ProductName, QuantityPerUnit, UnitPrice FROM Products WHERE ProductID IN (1, 2, 5, 15, 20, 45, 50);

    例2:SELECT OrderID FROM Orders WHERE CustomerID IN

    ( SELECT CustomerID FROM Customers WHERE CompanyName LIKE 'Fu%');

    (3) BETWEEN - 指定選擇范圍

    SELECT something FROM somewhere WHERE 列名 BETWEEN 起始 AND 終止;

    (4) NOT - 取操作符相反的意義

    (5) 選擇列值為空的行

    SELECT something FROM somewhere WHERE 列名 IS NULL;

    (6) 使用邏輯運算符限定多個選擇條件

    使用 AND, OR, NOT

    (7) ORDER BY - 對取得的行進行排序

    SELECT something FROM somewhere ORDER BY 列名 (ASC / DESC);

    可以用ASCDESC指定是按升序或降序排列。

    可以同時使用兩個排序條件:

    ORDER BY 1 (ASC / DESC), 2 (ASC / DESC);

    意為先按列1排列,在此基礎上再按列2排列。

    (8) TOP - 取得最前面的N

    SELECT TOP N something…

    (9) DISTINCT 忽略某列值重復的行

    SELECT DISTINCT something FROM somewhere…

    只取得something指定列中唯一的項。

    (10) UNION 合并SELECT得到的結果

    SELECT something FROM somewhere…

    UNION

    SELECT something_else FROM somewhere_else…

    (11) GROUP BY – 把得到的結果分組

    SELECT something FROM somewhere…GROUP BY something2;

    SELECT something COUNT(*) FROM somewhere…GROUP BY something2;

    按照something2把得到的結果中相同的項合并為一項,即按something2進行分組??梢杂?strong>COUNT(*)計算每組中的個數。

    (12) 限制得到的分組

    SELECT something FROM somewhere…GROUP BY something2 HAVING COUNT(*) > N;

    HAVING限制只得到包括個體數目大于N的組。

    (13) AS - 更改顯示的列名,自定義表名

    SELECT something AS something_else, something2 AS something_else2…;

    顯示自定義的列名。

    SELECT Cust.CustomerID, CompanyName, Address, OrderID, ShipAddress FROM Customers AS Cust, Orders AS Ord WHERE Cust.CustomerID = Ord.CustomerID…;

    為方便、簡略,把表名用別名代替。

    (14) 對列中的值進行計算

    SELECT something (+, -, *, /, … something) FROM somewhere…;

    對選擇的列按其類型(數值、字符、字符串)進行相應的計算,以及在列之間進行計算,得到計算結果。

    (15) 從多個表中進行選擇

    SELECT something, something2, … FROM (table1, table2…);

    table1table2必須JOIN起來。

    如果有選擇的列名同時在兩個表中出現,必須明確表示出來,如:table1.something。

    表的JOIN可以用標準的SQL形式:table1.something=table2.something;也可以用更加“顯式”的形式,直接用JOIN關鍵字:

    SELECT something, something2, … FROM table1

    JOIN table2 ON table1.something=table2.something AND (other conditions)…

    上兩種JOIN方法存在明顯的不足:如果某行中列的值為NULL則不能得到結果,即不能針對存在NULL值的列進行JOIN。外部JOIN可以解決這一問題。

    LEFT OUTER JOIN 可以得到左邊含NULL的值

    RIGHT OUTER JOIN 可以得到右邊含NULL的值

    FULL OUTER JOIN 兩邊含NULL的值都可以取得

    (16) 從視圖中選擇行

    SELECT something FROM table1 INNER JOIN table2… ON (Condition)…;

    取得的View稱為Alphabetical list of something。

    3. INSERT - 向表中插入一行

    INSERT INTO table (column1, column2, …, column…) VALUES (value1, value2, …, value…);

    如果為插入的行的每一列都提供值,則可以忽略列名,只提供值:

    INSERT INTO table VALUES (value1, value2, …, value…);

    4. UPDATE – 修改表中某一行

    UPDATE table

    SET column = (something) WHERE (condition);

    可以同時修改行中多列的值:SET column = (something), column2 = (something2), …

    5. DELETE – 刪除一行

    DELETE FROM table WHERE (condition);

    6. 保持數庫的完整一致性

    1.主鍵的獨一無二性

    2.子表中的Foreign Key指向父表中的有效值

    如:不能修改或刪除一個作為Foreign Key被引用的值

    7. TRANSACTION

    通過把多條語句集合為一個“Transaction”(業務、記錄?),以及業務的執行與回滾實現。

    BEGIN TRANSACTION;

    Do something;

    COMMIT; / ROLLBACK;

    在決定是COMMIT還是ROLLBACK之前,應該檢查業務中有沒有錯誤發生。如果沒有則執行,否則就回滾。用@@ERROR的值判斷是否發生錯誤,0代表沒有。

    BEGIN TRANSACTION MyTransaction;

    Do something;

    IF @@ERROR = 0

    COMMIT TRANSACTION MyTransaction;

    ELSE

    ROLLBACK TRANSACTION MyTransaction;

    posted on 2008-07-19 11:23 void 閱讀(200) 評論(0)  編輯  收藏 所屬分類: SQL

    主站蜘蛛池模板: 国产jizzjizz视频全部免费| 精品久久久久久久久免费影院| 国产麻豆剧传媒精品国产免费| 亚洲一级特黄特黄的大片| 3344永久在线观看视频免费首页 | 女人18特级一级毛片免费视频 | 亚洲砖码砖专无区2023| 99久久99久久精品免费看蜜桃| 亚洲成年人电影在线观看| 84pao强力永久免费高清| 亚洲第一区视频在线观看| 97国产免费全部免费观看| 67194在线午夜亚洲| 天天摸天天操免费播放小视频| 久久精品熟女亚洲av麻豆| 亚洲欧洲自拍拍偷精品 美利坚| 两个人日本免费完整版在线观看1 两个人的视频www免费 | 久久亚洲精品中文字幕| 亚洲免费中文字幕| 亚洲AV成人精品日韩一区| 亚洲国产精品不卡毛片a在线| 国产亚洲精品免费视频播放| 青青草原精品国产亚洲av| 无码中文字幕av免费放| 美女裸体无遮挡免费视频网站| 久久精品国产亚洲Aⅴ蜜臀色欲| 国产一区二区免费| 亚洲日韩AV一区二区三区四区 | av午夜福利一片免费看久久| 亚洲国产精品va在线播放| 天天影视色香欲综合免费| 亚洲AV成人无码久久WWW| 亚洲中文字幕无码一区二区三区| 91成人免费观看| 美女裸免费观看网站| 亚洲av色影在线| 国产成人一区二区三区免费视频| 本免费AV无码专区一区| 亚洲精品第一综合99久久| 亚洲色欲久久久综合网东京热| 国产日本一线在线观看免费|