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 中可以使用的通配符

          通配符

          意義

          _ (下劃線)

          表示作一個任意字符

          %

          表示任意任意字符

          [ ]

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

          [^ ]

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

          [ - ]

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

          #

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

          例:

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

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

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

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

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

          (2) IN - 指定選擇范圍

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

          列出的范圍可以是顯式地指定出來,也可以用其它方法限制,如用另一個SELECT語句選擇得到的結(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)算符限定多個選擇條件

          使用 AND, OR, NOT

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

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

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

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

          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ì)算每組中的個數(shù)。

          (12) 限制得到的分組

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

          HAVING限制只得到包括個體數(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…;

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

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

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

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

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

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

          table1table2必須JOIN起來。

          如果有選擇的列名同時在兩個表中出現(xiàn),必須明確表示出來,如: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é)果,即不能針對存在NULL值的列進(jìn)行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. 保持?jǐn)?shù)庫的完整一致性

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

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

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

          7. TRANSACTION

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

          BEGIN TRANSACTION;

          Do something;

          COMMIT; / ROLLBACK;

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

          BEGIN TRANSACTION MyTransaction;

          Do something;

          IF @@ERROR = 0

          COMMIT TRANSACTION MyTransaction;

          ELSE

          ROLLBACK TRANSACTION MyTransaction;

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


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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 昆山市| 黄浦区| 华蓥市| 盖州市| 兴宁市| 新和县| 河西区| 安庆市| 江都市| 光泽县| 原阳县| 盘山县| 陇西县| 鹤壁市| 高邮市| 昌宁县| 丰城市| 正定县| 邛崃市| 灵石县| 略阳县| 临汾市| 南江县| 葵青区| 宁波市| 秭归县| 班玛县| 延庆县| 都昌县| 莲花县| 新蔡县| 鹤壁市| 嘉鱼县| 德州市| 舞阳县| 普宁市| 达拉特旗| 金坛市| 清苑县| 策勒县| 呼图壁县|