全面接觸SQL語法(轉)

gugu99發表於2007-08-13
全面接觸SQL語法(轉)[@more@]

  SQL功能與特性

  其實,在前面的文章中,已經提及SQL命令的一些基本功能,然而,透過SQL命令,程式設計師或資料庫管理員(DBA)可以:

  (一)建立資料庫的表格。(包括設定表格所可以使用之空間)

  (二)改變資料庫系統環境設定。

  (三)針對某個資料庫或表格,授予使用者存取許可權。

  (四)對資料庫表格建立索引值。

  (五)修改資料庫表格結構。(新建、刪除或是修改表格欄位)

  (六)對資料庫進行資料的新建。

  (七)對資料庫進行資料的刪除。

  (八)對資料庫進行資料的修改。

  (九)對資料庫進行資料的查詢。

  這幾項便是透過SQL命令可以完成的事情,看起來是不是比起“查詢”兩個字所代表的功能要多的多了呢?

  SQL語法的分類

  其實SQL命令並不是非常多,可是要把SQL用到出神入化,卻也只需要短短几個命令便夠,因為SQL命令是針對關係型資料庫所建立出來的語法敘述,所以SQL在這類資料庫中所發揮的功能非常的強,以下將針對在VB中常用的SQL語法基本命令加以分類介紹。在說明SQL的命令以及使用語法之前,以下將SQL做了的分類,在致上SQL語法所使用到的型別,可以說都已包含在這些類別當中。

  第一類、屬性詞(Predicates)

  在SQL命令中用來指明所要選擇的記錄的方式。如ALL、TOP與DISTINCT等等。

  第二類、宣告(Declaration)

  針對SQL Parameter或Parameter Query 的名稱與資料型別做宣告,如PARAMETERS的宣告等等。

  第三類、條件子句(Clause)

  在SQL的查詢中,利用一些表示式定義出查詢的條件,以縮小尋找的範圍,如WHERE。

  第四類、運算子(Operator)與運算元(Operation)

  在SQL的查詢中,與Operation共同組成表示式(Expression),如BETWEEN....AND 運算子與INNER JOIN運算元。

  第五類、函式(Function)

  一些SQL常見的函式,像是AVG()是求算數平均數的函式。

  第六類、SQL語句(Statement)

  SQL的語句,可以說是SQL語法的主體,用來對某一個特定的資料庫發出指示,並返回相關的資料,而SQL的語法結構,基本上可以利用下面

  的式子來表示:命令+條件子句

  例如:

  SELECT*FROM TAB WHERE TAB.NAME='A'

  其中的“FROM....WHERE”便是一個條件子句,其實SQL的語法並不難,您只需記住這樣的一個規則,相信可以很快的瞭解SQL用法。

  SQL語法與命令

  SELECT 語句

  SELECT[predicate]{*|table.*|[table.]field [,[table.]field2[,...]]} [AS alias1 [,alias2[,...]]]

  FROM tableexpression [,...][IN externaldatabase]

  [WHERE...]

  [GROUP BY...]

  [HAVING...]

  [ORDER BY...]

  [WITH OWNERACCESS OPTION]

  SELECT 語句包括下面幾個部分

  predicate

  如前面所述,包括了ALL,DISTINCT,DISTINCTROW,與TOP 我們可以利用這樣的語句去限制查詢後所得的結果。

  *

  從指定表格中指定所有的欄位。

  table

  針對被選擇出的記錄的欄位,所指定表格的名稱。

  field1,field2

  想要讀取資料的欄位名稱,如果包含了一個以上的欄位,會依照列出的順序來讀取資料。

  alias1,alias2

  用來替代在表格實際欄位名稱的化名。

  tableexpression

  表格名稱或包含我們所想要的資料的表格。

  externaldatabase

  若使用到不是目前的資料庫則將其名字定義在externaldatabase當中。

  ALL,DISTINCT,DISTINCTROW,TOP屬性詞用法

  SELECT [ALL|DISTINCT|DISTINCTROW|[TOP n[PERCENT]]] FROM table

  ALL

  若是您不指定任何的欄位資料,則Microsoft Jet資料庫引擎(database engine)將會選擇所有的欄位,並依據所定的條件查詢出需求資料集。

  例如下面這兩個例子將會具有相同的效果,都會從職員表格中返回所有欄位的資料。

  例如:

  若是我們要查詢出職員表格中的所有記錄,可以透過下面的語句來完成。

  SELECT ALL* FROM 職員表格; DISTINCT

  對某個表格所選擇的欄位資料,略過重複的情況,也就是說,針對某個欄位查詢出來的記錄結果是唯一的。例如有許多存放在職員表格的職員

  資料,也許會具有相同的姓名,所以若是我們用SQL語句中的SELECT DISTINCT,則查詢出來的結果將會針對不一樣的姓名加以篩選。若是您把

  DISTINCT 加以省略,則這樣的查詢會顯示所有的記錄。

  DISTINCTROW

  將整條記錄重複的記錄忽略掉,而不是隻有針對某一個欄位的資料。

  table

  指定查詢記錄所需要的表格。

  例如:

  SELECT DISTINCTROW 公司名稱

  FROM 顧客表格 INNER JOIN 訂單表格

  ON 顧客表格.顧客ID=訂單表格.顧客ID

  ORDER BY 公司名稱;

  如果您忽略 DISTINCTROW 則會對每個公司產生一行以下的訂單資料。此外,若是DISTINCTROW只有用在一個表格當中,則會被省略掉。

  TOP

  從第一條或最後一條開始(利用ORDER BY條件子句),返回特定條數的資料。

  例如:

  當您想要知道在2000年,班上前25名的學生姓名資料時,您可以輸入這樣的語句:

  SELECT TOP 25 學生姓名

  FORM 學生表格

  WHERE 畢業年份=1994

  ORDER BY 畢業成績平均分數 DESC;

  如果您沒有加上ORDER BY 這行條件的話,您所得到的資料,將會隨機的資料。此外,在TOP語句之後,除了可以加上數字以外,還可以利用保留

  字PERCENT來查詢。

  例如:

  SELECT TOP 10 PERCENT學生姓名

  FROM學生表格

  WHERE畢業年份=1994

  ORDER BY畢業成績平均DESC;

  PARAMETERS(引數)宣告的用法

  對於引數型的查詢語法中,對引數的名稱以及資料型別作 宣告的操作。

  PARAMETERS name datatype[,name datatype[,...]]

  name

  PARAMETERS的名稱。您可以把引數名稱當作字串來使用,若是名稱中包含了空字串,可以利用中括號來處理,例如:“VBeden”。

  datatype

  輸入引數的資料型別。

  例如:

  若是您在查詢時,需要機動的輸入姓名 ,可以利用下列的方式完成:

  PARAMETERS “輸入姓名” Text;

  SELECT*

  FROM 職員表格

  WHERE姓名=“輸入姓名:”;

  ORDER BY條件語句

  此條件子句,通常與SELECT語句合併使用目的是將查詢的結果,依照指定欄位加以排序。

  SELECT fieldlist

  FROM table

  WHERE selectcriteria

  ORDER BY field[ASC|DESC][,field2[ASC|DESC][,...]]

  fieldlist

  欲查詢的欄位名稱。其中可以與ALL,DISTINCT,DISINCTROW,或TOP一起來使用。

  table

  欲查詢的表格名稱。

  selectcriteria

  查詢的標準設定。

  field1

  指定要依照那個欄位作為排序的依據,若是你沒有加上ORDER BY查詢出的資料集將不會作排序的操作。

  ASC

  遞增順序類別。(預設值)

  DESC

  遞減順序類別。

  例如:

  或是我們要將輸出資料依據出生的先後次序排列,可以利用下面的命令。

  SELECT 姓名,生日

  FROM 職員表格

  ORDER BY 生日

  SELECT LastName,FirstName

  FROM Employees

  ORDER BY LastName ASC;

  IN 條件子句

  指定要速勝哪一個外部資料庫的表格。(必須是Microsoft Jet資料庫引擎所可以連線的資料庫,如dBase,Paradox等等)

  SELECT|INSERT]INTO destination IN

  {path|["path" "type"]|[""[type;DATABASE=path]]}

  FROM tableexpression IN

  {path|["path" "type"]|[""[type;DATABASE=path]]}

  destination

  欲插入資料的外部表格名稱。

  tableexpression

  表格名稱或是被讀取資料的表格名稱。這個引數可以是一個單一的表格名稱,或是一段已經被儲存的SQL查詢等。

  path

  包含該表格的完整路徑名稱。

  type

  資料庫的型別名稱, 通常是當資料庫部屬於Jet database時才會使用。(例如:dBASE III,dBASE IV,Paradox 3.x,Paradox 4.x,或 Btrieve)

  例如:下面這兩段的意義相同

  PartA....FROM Table

  IN ""[dBASE IV;DATABASE=C:DBASEDATASALES;];

  PartB....FROM Table

  IN "C:DBASEDATASALES" "dBASE IV;"

  例如:Microsoft Jet database

  SELECT 顧客編號

  FROM 顧客表格

  IN CUSTOMER.MDB

  WHERE 顧客編號 Like "A*";

  其中CUSTOMER.MDBO 為Jet database 的資料庫名稱,其中包含了顧客表格。

  例如:dBASE III or IV

  SELECT 顧客編號

  FROM 顧客表格

  IN "C:DBASEDATASALES" "dBASE IV;"

  WHERE 顧客編號 Like "A*";

  所以當我們使用不同於ACCESS 的資料庫時,必須指明該資料庫的型別名稱。

  HAVING 條件子句

  指定一特定的分組記錄,並滿足HAVING 所指定的條件或狀態,但條件是針對分組的條件設定。

  SELECT fieldlist

  FROM table

  WHERE selectcriteria

  GROUP BY groupfieldlist

  HAVING groupcriteria

  fieldlist

  顯示被查詢的欄位名稱。(可與ALL,DISTINCT,DISTINCTROW,或TOP相結合)

  table

  欲查詢資料的表格名稱。

  selectcriteria

  選取標準。

  groupfieldlist

  分組記錄的欄位名稱,到多10個欄位。而這些欄位的順序決定最高到最低的分組階層。

  groupcriteria

  決定什麼樣的分組記錄要被顯示。

  HAVING跟WHERE 的用法相當類似,不同之處在於HAVING必須用於GROUP之後的分組資料上。

  例如:

  SELECT 分類編,Sum(庫存數量)

  FROM 產品表格

  GROUP BY 分類編號

  HAVING Sum(庫存數量)>100 AND 產品名稱 LIKE "*紙";

  GROUP BY 條件子句

  依據指定的欄位,將具有相同數值的記錄合併成一條。

  SELECT fieldlist

  FROM table

  WHERE criteria

  GROUP BY groupfieldlist

  fieldlist

  欲讀取的欄位名稱。(可與ALL,DISTINCT,DISTINCTROW,或TOP合併使用)

  table

  被查詢的表格名稱。

  groupfieldlist

  分組記錄的欄位名稱,到多10個欄位,而這些欄位的順序決定最高到最低的分組層次。

  例如:

  SELECT 姓名,Count(姓名)AS 職員姓名

  FROM 職員表格

  WHERE 部門名稱='業務部'

  GROUP BY 姓名

  FROM 條件子句

  指定表格名稱或是查詢,其中包含列在SELECT語句的欄位資料。

  SELECT fieldlist

  FROM tableexpression[IN externaldatabase]

  fieldlist

  表格中的欄位名稱。(可與ALL,DISTINCT,DISTINCTROW,或TOP相結合)

  tableexpression

  表格名稱,或多個表格的算式。

  externaldatabase

  若該表格參考到外部的資料庫時,將其完整的路徑名稱記下。

  例如:

  從職員表格下,查詢出所有姓名欄位的資料(只有姓名欄位被查詢,其他則不顯示)。

  SELECT 姓名 FROM 職員表格;

  WHERE 條件子句

  指定查詢的條件與限制。

  SELECT fieldlist

  FROM tableexpression

  WHERE criteria

  fieldlist

  欄位名稱。(可與ALL,DISTINCT,DISTINCTROW,或TOP相結合)

  tableexpression

  表格名稱,或多個表格的算式。

  criteria

  查詢的結果,必須依照這一限制標準。

  例如:

  要查詢出職員表格中,所有姓氏是李的資料,可以用下面的語句。

  SELECT 姓名

  FROM 職員表格

  WHERE 姓氏='李';

  BETWEEN...AND 運算子

  決定某一人數值是否介於特定的範圍之內,此運算子只可以用在SQL的語句中。

  expr[Not]BETWEEN value1 AND value2

  expr

  指定要加以計算的欄位與表示式的組合。

  value1,value2

  所指明的數值範圍。

  例如:

  若是要從職員表格查詢出所有年齡介於25-30歲的員工,可以利用下面的程式來做。

  SELECT 姓名,年齡 BETWEEN 25 AND 30

  FROM 職員表格;

  LIKE 運算元

  用來將一字串與另一特定字串樣式(pattern)比較,並將符合該字串樣式的記錄過濾出來。

  expression LIKE "pattern"

  expression

  使用在WHERE條件子句,SQL表示式。

  pattern

  用以比較的字串樣式。

  例如:

  若是你要查詢出所有以“李”為首的姓氏,可以利用下面的式子。

  Like "李*"

  LIKE運算元的多種範例:

  1、多個字元:

  (1)"a*a"

  可篩選:"aa","aBa","aBBBa",不能篩選:"aBC"

  (2)"*ab*"

  可篩選:"abc","AABB","Xab",不能篩選:"aZb","bac"

  2、特殊字元:

  "a“*”a"

  可篩選:"a*a",不能篩選:"aaa"

  3、單一字元:

  "a?a"

  可篩選:"aaa","a3a","aBa",不能篩選:"aBBBa"

  4、單一數字:

  "a#a"

  可篩選:"a0a","a1a","a2a",不能篩選:"aaa","a10a"

  5、字元範圍:

  "“a-z”"

  可篩選:"f","p","j",不能篩選:"2","&"

  6、指定字元以外部範圍:

  "“!a-z”"

  7、指定非數字:

  "“!0-9”"

  可篩選:"A","a","&","~",不能篩選:"0","1","9"

  8、組合式結構:

  "a“!b-m”#"

  可篩選:"An9","az0","a99",不能篩選:"abc","aj0"

  SQL數字函式

  1、AVG:算數平均數

  AVG(expr)

  expr

  欄位名稱或表示式。

  例如:

  若要計算職員身高超過165釐米的職員平均身高,可以利用下面的SQL語句來完成。

  SELECT Avg(身高)

  AS 平均身高

  FROM 職員表格 WHERE 身高>165;

  2、COUNT:計算記錄條數

  COUNT(expr)

  expr

  欄位名稱或表示式。

  例如:

  若是要統計出業務部門的職員人數,並查詢出職員的姓名,可以利用下面的程式。

  SELECT Count(姓名) AS 職員姓名

  FROM 職員表格

  WHERE 部門名稱='業務部';

  3、FIRST與LAST:返回某欄位的第一條資料與最後一條資料。

  FIRST(expr)

  LAST(expr)

  expr

  欄位名稱或表示式。

  例如:

  若是要找出貨品數量欄位的第一條資料與貨品價格欄位的最後一條資料時,可以利用下面的查詢方式。

  SELECT FIRST(貨品數量),LAST(貨品價格)

  FROM 訂單表格

  4、MAX,與MIN:返回某欄位的最大值與最小值。

  用法同FIRST與LAST。

  5、SUM:返回某特定欄位或是運算的總和數值。

  SUM(expr)

  expr

  欄位名稱或表示式。

  例如:

  要計算出貨品總價,可使用下面的程式。

  SELECT

  Sum(單位價格*貨品數量)

  AS 貨品總價 FROM 訂單表格

  多層SQL查詢

  顧名思義,多層的SQL查詢的便在於:“在一個SQL語句中可以包含另一個SQL查詢語句,形成內部巢狀的查詢型別。”

  comparison[ANY|ALL|SOME](sqlstatement)

  expression[NOT]IN (sqlstatement)

  [NOT]EXISTS(sqlstatement)

  comparison

  將表示式與內層查詢的結果比較的操作。

  expression

  對內層查詢的結果作搜尋的表示式。

  sqlstatement

  為SELECT語句構成的SQL查詢,必須用()將該語句括起來。

  例如:

  我們先從訂單表格當中,查詢出所有的單位,再將產品表格中的單位與的一一對比,查詢出所有高於訂單表格的單位價格的記錄。

  SELECT * FROM 產品表格

  WHERE 單位價格>ANY (SELECT 單位價格 FROM 訂單表格 WHERE 折扣>=.25);

  SQL與資料庫的維護

  表格的建立

  將SQL中的基本語法作了一番介紹以後,但大多是偏向於資料庫資料的查詢與過濾,但實際上,我們透過SQL命令所可以做的事還有很多,接下來要介紹的便是如何利用SQL的語法命令來建立一個資料庫中的表格。

  CREATE TABLE語句

  我們可以利用這個命令,來建立一個全新的表格,但前提則是:資料庫必須已經存在。

  CREATE TABLE table(field1 type[(size)][index1][,field2 type[(size)][index2][,...]][,nultifieldindex[,...]])

  table

  欲建立的新的表格名稱。

  field1,field2

  在新表格中的新的欄位名稱,到少要一個欄位以上。

  type

  欄位的資料型別。

  size

  欄位的大小。

  index1,index2

  利用CONSTRAINT條件子句定義一個單一欄位的索引名稱。

  multifieldindex

  利用CONSTRAINT條件子句定義一個多重欄位的索引名稱。

  例如:

  建立一個擁有職員姓名與部門欄位的表格。

  CREATE TABLE 職員表格 (姓名TEST,部門TEST,職員編號 INTEGER CONSTRAINT職員欄位索引PRIMARY KEY)

  在這一個範例中,我們建立了一個表格名稱為“職員表格”的表格,並且定義了該表格的主鍵值,以限制資料不能重複輸入。

  表格索引的建立

  CREATE INDEX語句

  這個命令主要是對一個已存在的表格建立索引,其用法如下:

  CREATE[UNIQUE]INDEX index ON table(field[ASC|DESC][,field[ASC|DESC],...])

  [WITH {PRIMARY|DISALLOWNULL|IGNORENULL}]

  index

  欲被建立的索引名稱。

  table

  欲建立索引的表格名稱。

  field

  欲被建立的索引的欄位名稱。並可透過DESC保留字,來決定索引的順序。

  例如:

  在職員表格中建立一個索引。

  CREATE INDEX 新索引名稱

  ON 職員表格(姓名部門);

  表格的欄位更新

  CONSTRAINT條件子句

  CONSTRAINT 的功能是類似索引(INDEX)的,雖然CONSTRAINT 也可以建立表格之間的關聯性。

  單一欄位索引:

  CONSTRAINT name{PRIMARY KEY|UNIQUE|REFERENCES foreigntable[(foreignfield1,foreignfield2)]}

  多欄位索引:

  CONSTRAINT name

  {PRIMARY KEY(primary1[,primary2[,...]])

  |UNIQUE(unique1[,unique2[,...]])

  |FOREIGN KEY (ref1[,ref2[,...]])

  |REFERENCES foreigntable[(foreignfield1[,foreignfield2[,...]])]}

  name

  要被建立的CONSTRAINT名稱。

  primary1,primary2

  被用來設計成主鍵值的欄位名稱(可一個以上)。

  unique1,unique2

  被用來設計成唯一鍵值的欄位名稱(可一個以上)。

  foreign key

  欄位名稱,或是參考到別的表格中欄位的欄位名稱。

  foreigntable

  如前所述,被參考到的表格。

  foreignfield1,foreignfield2

  在參考到的表格當中,被ref1,ref2欄位所指定的欄位。如果被參考的欄位是參考表格中的主鍵值,你也可以省略這個條件子句。

  例如:

  當我們要建立一個新的職員資料表格,表格包含姓名、部門名稱與生日三個欄位,且由這三個欄位建立一個唯一的索引時,可以使用下面這段SQL的語句。

  CREATE TABLE 職員資料表格

  (姓名 TEST,部門名稱 TEST,生日 DATETIME,CONSTRAINT 職員資料表格限制 UNIQUE(姓名,部門名稱,生日));

  以上是SQL中,與資料庫表格建立相關的命令,你可以利用這些命令,透過SQL的語句,將資料庫表格完整的建立出來,接下來的章節,將針對資料庫建立之後的維護與增刪所要使用的SQL語句作一介紹。

  表的刪除

  DELETE語句

  我們可以利用DELETE語句,將表格中的記錄刪除。(注意:記錄被刪除後,無法再復原,所以條件設定要正確)

  DELETE[table.*]

  FROM tableexpression

  WHERE criteria

  table

  欲刪除記錄的表格名稱,也可以用*來取代。

  tableexpression

  一個或一個以上表格的名稱。此一引數可以為單一的表格名稱或是從INNER JOIN,LEFT JOIN,或RIGHTJOIN 等運算所得到的結果。

  criteria

  決定表格中記錄要被刪除的標準。

  例如:

  若是我們要將職員表格中姓名姓名叫做'李名'的記錄刪除,我們可以利用下面的SQL語句來完成。

  DELETE * FROM 職員表格

  WHERE 姓名='李名';

  資料庫表格相關的操作命令

  SQL除了可以作為查詢與資料庫表格的建立的工具外,對於資料庫與表格的新建、刪修、與維護,與具有相當不錯的功能,若是讀者使用SQL命令得宜,對於整個效率的提高有著很大的幫助,所以對於SQL語句所帶來的優勢,常常會遇到一個情況,就是:“當我們對多個表格作複雜與多步驟的處理時,或許SQL只要一個語句就可以完成所有的需求與目標”,乍看一下,或許覺得有些玄妙,但是接下來的章節,會讓你瞭解其中的妙處。

  SELECT...INTO語句

  我們可以透過這個命令,利用既存表格查詢,來建立一個新表格的查詢語句。

  SELECT field1[,field2[,...]]INTO newtable[IN externaldatabase]

  FROM source

  field1,field2

  欲複製到新表格的欄位名稱。

  newtable

  欲建立之新表格的名稱,不可是已經存在的表格。

  externaldatabase

  若是該表格在另外的外部資料庫時,該資料庫的名稱。

  source

  記錄資料複製的來源表格名稱,可以是單一的表格或是一段SQL查詢之語句。

  例如:

  你可以透過下面的SQL語句,來建立一個新的“訓練名冊”表格。

  SELECT 職員表格.姓名,職員表格.部門

  INTO 訓練名冊 FROM 職員表格

  WHERE 職稱='新進人員';

  INNER JOIN運算元

  當某一個共同的欄位資料相等時,將兩個表格的記錄加以組合。

  SELECT fields

  FROM table1 INNER JOIN table2

  ON table1.field1 compopr table2.field2

  table1,table2

  欲進行記錄組合的表格名稱。

  field1,field2

  欲組合的欄位名稱。(必須具有相同的資料型別)

  compopr

  比較關係運算子如下:“=”,“”,“<=”,“<>”等。

  例如:

  若是你要把分類表格與產品表格作組合,可參考下面的SQL語句。

  SELECT 分類名稱,產品名稱

  FROM 分類表格 INNER JOIN 產品表格

  ON 分類表格.分類編號=產品表格.分類編號;

  UNION運算元

  我們可以透過UNION運算元來建立連線的查詢條件,UNION運算元可以將兩個以上的表格或是查詢的結果組合起來。

  [TABLE]query1 UNION [ALL][TABLE]query2 [UNION [ALL]

  [TABLE]queryn [...]]

  query1,query2,queryn

  為一個SELECT的語句,或是一個已存在的查詢名稱,或是一個已存在的表格名稱。

  例如:

  你可以利用下面的SQL語句,將訂單數量超過1000的顧客表格記錄,與新客戶表格作UNION的操作。

  TABLE 新客戶表格 UNION ALL

  SELECT *

  FROM 顧客表格

  WHERE 訂單數量>1000;

  ALTER語句

  在一個表格被建立之後,利用ALTER語句,我們可以去修改表格的欄位設計。

  ALTER TABLE table

  {ADD {COLUMN field type[(size)][CONSTRAINT index]

  |CONSTRAINT multifieldindex}

  |DROP {COLUMN field|CONSTRAINT indexname}}

  table

  欲被ALTER的表格名稱。

  field

  要被增加或刪除的欄位名稱。

  type

  欄位資料型別。

  size

  欄位大小。

  index

  對此欄位的索引。

  例如:

  在職員表格中新建一個“薪水”的欄位。

  ALTER TABLE 職員表格

  ADD COLUMN 薪水 CURRENCY;

  例如:

  在職員表格中刪除一個“薪水”的欄位。

  ALTER TABLE 職員表格 DROP COLUMN 薪水;

  DROP語句

  針對所指定的表格或欄位加以刪除,或是把索引刪除。

  DROP {TABLE table|INDEX index ON table}

  table

  欲刪除之表格或索引依附之表格名稱。

  index

  欲從表格中刪除的索引名稱。

  例如:

  從職員表格中,刪除編號索引。

  DROP INDEX MyIndex ON Employees;

  例如:

  從資料庫中,刪除整個表格。

  DROP TABLE 職員表格;

  INSERT INTO語句

  新建一條資料到表格當中。

  多條記錄新建查詢:

  INSERT INTO target [IN externaldatabase][(field1[,field2[,...]])]

  SELECT [source.]field1[,field2[,...]

  FROM tableexpression

  單條記錄新建查詢:

  INSERT INTO target[(field1[,field2[,...]])]

  VALUES(value1[,value2[,...])

  target

  新建記錄的表格名稱。

  externaldatabase

  外部資料庫的路徑,搭配IN條件子句使用。

  source

  若是記錄從其它表格中複製時,指明該表格的名稱。

  field1,field2

  欲增加資料的欄位名稱。

  tableexpression

  表格名稱或描述記錄是從哪一個表格中插入的表格名稱。配合INNER JOIN,LEFT JOIN,或 RIGHT JOIN 運算子一起使用。

  value1,value2

  欲插入表格中的數值。

  例如:

  在客戶資料表格中,從新的表格插入資料。

  INSERT INTO 客戶資料表格

  SELECT 新客戶資料表格.*

  FROM 新客戶資料表格;

  例如:

  在職員表格中插入資料。

  INSERT INTO 職員表格(姓名,生日,職稱)

  VALUES("王榮","57/12/11","經理");

  例如:

  從訓練人員表格中,將職員僱用時間超過30天者,加入到正式職員表格中。

  INSERT INTO 職員表格

  SELECT 訓練人員表格.*

  FROM 訓練人員表格

  WHERE 僱用天數>30;

  UPDATE語句

  建立一個UPDATE的查詢,透過條件的限制來修改特定的資料。

  UPDATE table

  SET newvalue

  WHERE criteria;

  table

  欲修改資料的表格名稱。

  newvalue

  欲修改成的數值(將該項數值插入到特定的欄位當中)。

  criteria

  查詢條件,用來決定要修改哪些記錄。

  例如:

  若是要把訂單表格中的訂單數量修改成1.1倍,運費為1.03倍,可利用下列之SQL語句來完成。

  UPDATE 訂單表格

  SET 訂單數量=訂單數量 * 1.1,運費=運費 * 1.03倍

  WHERE 運達地點='美國';

  當我們完成修改後,你可以利用 SELECT 語句,配合同樣的 WHERE 條件子句,來察看修改的資料是否正確。

  事實上,要利用SQL完成某些看似複雜的操作,並不需要繁瑣的SQL命令組合,或是許許多多的步驟才能完成,其實最重要的還是要活用SQL命令,才會在最精簡的SQL語句裡獲得最高的效率。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-954225/,如需轉載,請註明出處,否則將追究法律責任。

相關文章