<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. 從一個(gè)或多個(gè)表中取得若干列

    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 表名;

    如果表名或列名中有空格,要用方括號(hào)[]括起來(lái)。

    1 使用SMO有條件地SELECT

    SELECT加上限制條件,使用WHERE

    SELECT something FROM somewhere WHERE 列名 SMO某個(gè)值;

    Here, SMO means SQL Mathematical Operators

    操作符

    意義

    =

    等于

    <> 或 !=

    不等于

    <

    小于

    >

    大于

    <=

    小于等于

    >=

    大于等于

    (2) LIKE - 按樣式SELECT

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

    LIKE 中可以使用的通配符

    通配符

    意義

    _ (下劃線)

    表示作一個(gè)任意字符

    %

    表示任意個(gè)任意字符

    [ ]

    表示與括號(hào)中任意一個(gè)字符相匹配的字符

    [^ ]

    表示與任意一個(gè)不在括號(hào)中的字符匹配的字符

    [ - ]

    與括號(hào)中從左到右的范圍中字符匹配

    #

    表示一個(gè)任意數(shù)字

    例:

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

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

    ‘[AIO]%’ 表示以’A’、’I’或’O’開(kāi)頭,以任意字符結(jié)尾的字符串

    ‘[AIO]%’ 表示以’A’、’I’或’O’之外的字符開(kāi)頭,以任意字符結(jié)尾的字符串

    ‘[A-O]%’ 表示以從’A到’O’之間的字符開(kāi)頭,以任意字符結(jié)尾的字符串

    (2) IN - 指定選擇范圍

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

    列出的范圍可以是顯式地指定出來(lái),也可以用其它方法限制,如用另一個(gè)SELECT語(yǔ)句選擇得到的結(jié)果。

    例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) 使用邏輯運(yùn)算符限定多個(gè)選擇條件

    使用 AND, OR, NOT

    (7) ORDER BY - 對(duì)取得的行進(jìn)行排序

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

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

    可以同時(shí)使用兩個(gè)排序條件:

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

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

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

    SELECT TOP N something…

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

    SELECT DISTINCT something FROM somewhere…

    只取得something指定列中唯一的項(xiàng)。

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

    SELECT something FROM somewhere…

    UNION

    SELECT something_else FROM somewhere_else…

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

    SELECT something FROM somewhere…GROUP BY something2;

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

    按照something2把得到的結(jié)果中相同的項(xiàng)合并為一項(xiàng),即按something2進(jìn)行分組。可以用COUNT(*)計(jì)算每組中的個(gè)數(shù)。

    (12) 限制得到的分組

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

    HAVING限制只得到包括個(gè)體數(shù)目大于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…;

    為方便、簡(jiǎn)略,把表名用別名代替。

    (14) 對(duì)列中的值進(jìn)行計(jì)算

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

    對(duì)選擇的列按其類型(數(shù)值、字符、字符串)進(jìn)行相應(yīng)的計(jì)算,以及在列之間進(jìn)行計(jì)算,得到計(jì)算結(jié)果。

    (15) 從多個(gè)表中進(jìn)行選擇

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

    table1table2必須JOIN起來(lái)。

    如果有選擇的列名同時(shí)在兩個(gè)表中出現(xiàn),必須明確表示出來(lái),如:table1.something

    表的JOIN可以用標(biāo)準(zhǔn)的SQL形式:table1.something=table2.something;也可以用更加“顯式”的形式,直接用JOIN關(guān)鍵字:

    SELECT something, something2, … FROM table1

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

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

    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);

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

    5. DELETE – 刪除一行

    DELETE FROM table WHERE (condition);

    6. 保持?jǐn)?shù)庫(kù)的完整一致性

    1.主鍵的獨(dú)一無(wú)二性

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

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

    7. TRANSACTION

    通過(guò)把多條語(yǔ)句集合為一個(gè)“Transaction”(業(yè)務(wù)、記錄?),以及業(yè)務(wù)的執(zhí)行與回滾實(shí)現(xiàn)。

    BEGIN TRANSACTION;

    Do something;

    COMMIT; / ROLLBACK;

    在決定是COMMIT還是ROLLBACK之前,應(yīng)該檢查業(yè)務(wù)中有沒(méi)有錯(cuò)誤發(fā)生。如果沒(méi)有則執(zhí)行,否則就回滾。用@@ERROR的值判斷是否發(fā)生錯(cuò)誤,0代表沒(méi)有。

    BEGIN TRANSACTION MyTransaction;

    Do something;

    IF @@ERROR = 0

    COMMIT TRANSACTION MyTransaction;

    ELSE

    ROLLBACK TRANSACTION MyTransaction;

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


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲成人免费网站| 亚洲精品视频免费观看| 无码一区二区三区亚洲人妻 | 国产一级理论免费版| 久久99久久成人免费播放| 亚洲视频在线观看地址| 国产免费直播在线观看视频| a级男女仿爱免费视频| 国产成+人+综合+亚洲专| 亚洲人成影院在线无码观看| 色老头永久免费网站| 免费国产污网站在线观看不要卡| 久久亚洲一区二区| 高清国语自产拍免费视频国产 | 中文字幕在线免费| 五月婷婷免费视频| 亚洲an日韩专区在线| 久久久久噜噜噜亚洲熟女综合| 国产91色综合久久免费| 国产人成网在线播放VA免费| 中文字幕乱码亚洲无线三区| 国产日韩亚洲大尺度高清| 精品久久久久久久免费人妻| 久艹视频在线免费观看| 一级毛片人与动免费观看| 亚洲伊人久久大香线蕉AV| 五月婷婷免费视频| 亚洲中文字幕乱码一区| 亚洲无线电影官网| 亚洲免费人成在线视频观看| 国产国产成年年人免费看片| 国产又大又粗又长免费视频| a级片免费观看视频| 日韩在线观看免费| 另类图片亚洲校园小说区| 亚洲精品伊人久久久久| 亚洲午夜视频在线观看| 亚洲线精品一区二区三区影音先锋 | 一级毛片免费视频| 羞羞视频免费网站在线看| 老司机午夜性生免费福利|