全面接觸SQL語法(轉)
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 入侵檢測術語全接觸(轉)
- PL/SQL程式設計接觸SQL程式設計
- SQL語法參考(轉)SQL
- PL/SQL基本語法要素(轉)SQL
- linux 啟動全接觸(轉)Linux
- SQL Prompt教程:舊式聯接語法(ST001)SQL
- 接觸postgresqlSQL
- SQL語法參考手冊(轉)SQL
- 托盤程式設計全接觸(轉)程式設計
- 托盤程式設計全接觸 (轉)程式設計
- SQL語法SQL
- MVVM初接觸MVVM
- WebSocket初接觸Web
- 初次接觸 CookieCookie
- SCSS初接觸CSS
- SQL 語法參考手冊(SQL) (轉)SQL
- 駭客初步接觸之網站的入侵(轉)網站
- 動態生成select選項全接觸 (轉)
- 全接觸SQLServer異常與孤立事務! (轉)SQLServer
- Oracle SQL Loader的詳細語法 <轉>OracleSQL
- sql語法中的一個重點(轉)SQL
- 初次接觸express框架Express框架
- 一、初次接觸javaJava
- ITextSharp 初次接觸
- 整理SQL語法SQL
- SQL基本語法SQL
- sql 99 語法SQL
- sql case語法和plsql case語法!SQL
- 駭客零接觸(第二章 入侵之IPC$)(轉)
- 作業系統全接觸之UNIX系統(轉)作業系統
- ORACLE常用的SQL語法和資料物件(轉)OracleSQL物件
- iris 的 websocket 初始接觸Web
- 接觸el-admin
- MyBatis TypeHandler的初次接觸MyBatis
- 再次接觸物件導向物件
- 剛接觸JAVA 問問Java
- 再次接觸tts的特性TTS
- 觸發器中獲取SQL語句觸發器SQL