1. 程式人生 > >精華:全面接觸SQL語法

精華:全面接觸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:/DBASE/DATA/SALES;];

PartB....FROM Table

IN "C:/DBASE/DATA/SALES" "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:/DBASE/DATA/SALES" "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語句裡獲得最高的效率。

相關推薦

精華全面接觸SQL語法

  SQL功能與特性 其實,在前面的文章中,已經提及SQL命令的一些基本功能,然而,通過SQL命令,程式設計師或資料庫管理員(DBA)可以: (一)建立資料庫的表格。(包括設定表格所可以使用之空間) (二)改變資料庫系統環境設定。 (三)針對某個資料庫或表格,授予使用

全面接觸SQL語法

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

全面接觸SQL語法(5)

BETWEEN...AND 運算子 決定某一人數值是否介於特定的範圍之內,此運算子只可以用在SQL的語句中。 expr[Not]BETWEEN value1 AND value2 expr

全面接觸SQL語法(4)

HAVING 條件子句 指定一特定的分組記錄,並滿足HAVING 所指定的條件或狀態,但條件是針對分組的條件設定。 SELECT fieldlist FROM table WHER

SQL語法全面接觸第三節

指定一特定的分組記錄,並滿足HAVING 所指定的條件或狀態,但條件是針對分組的條件設定。    Select fieldlist  FROM table  Where selectcriteria  GROUP BY groupfieldlist  HAVING group

Sql語法高級應用之二視圖

多個 用戶查詢 lec exist border repl 方式 多個數據庫 inventory SQL CREATE VIEW 語句 什麽是視圖? 在 SQL 中,視圖是基於 SQL 語句的結果集的可視化的表。 視圖包含行和列,就像一個真實的表。視圖中的字段就是來自一個或

Sql語法高級應用之三存儲過程

while 重新 begin dealloc scom 查詢信息 普通 not null lar 一、存儲過程概述   SQL Server中的存儲過程是使用T_SQL編寫的代碼段。它的目的在於能夠方便的從系統表中查詢信息,或者完成與更新數據庫表相關的管理任務和其他的系統管

Sql語法高級應用之四使用視圖實現多表聯合數據明細

sele inner receiver rod erp upn pen logistic received 之前章節我們講到:如果某個表的數據是多個表的聯合,並且存在列與列的合並組成新列,用視圖是最好的方案。 下面我分享兩個個真實的SQL語句案例 USE Wot_In

分享知識-快樂自己Oracle SQL語法彙總

--刪除重複值-保留重複值最大的編號 delete from emp where rowid in( select rowid from emp where rowid not in( select max(rowid) rd from emp group by empname) )

PostgreSQL SQL語法(三)呼叫函式

原文地址 PostgreSQL允許帶有命名引數的函式被使用位置或命名記號法呼叫。命名記號法對於有大量引數的函式特別有用,因為它讓引數和實際引數之間的關聯更明顯和可靠。在位置記號法中,書寫一個函式呼叫時,其引數值要按照它們在函式宣告中被定義的順序書寫。在命名記號法中,

sql語法inner join on, left join on, right join on詳細使用方法

inner join(等值連線) 只返回兩個表中聯結欄位相等的行 left join(左聯接) 返回包括左表中的所有記錄和右表中聯結欄位相等的記錄 right join(右聯接) 返回包括右表中的所有記錄和左表中聯結欄位相等的記錄 INNER JOIN 語法: INN

ORACLE PL/SQL語法應用遊標,儲存過程,觸發器,函式

--遊標 --do while迴圈 declare    cursor c is select * from t_t_student order by id;   v_record c%rowtype

MySQL之SQL語法例項大全1-10

1.從table中讀取某一Column(例如:dept_name) 程式碼: select dept_name from departments; 結果: 2.從table中讀取全部Colum

淘寶數據庫OceanBase SQL編譯器部分 源代碼閱讀--解析SQL語法

git itemtype 工具 銷毀 cin bsp 年輕 you any OceanBase是阿裏巴巴集團自主研發的可擴展的關系型數據庫,實現了跨行跨表的事務,支持數千億條記錄、數百TB數據上的SQL操作。在阿裏巴巴集團下,OceanBase數據庫支持了多個重

SQL 語法之“增”、“刪”、“改”、“查”

group by num having div 沒有 popu 模糊查詢 上海 條件 /* 四、查 1.普通查詢 語法:select <列名> from <表名> [where <查詢條件表達試>] [order by &

008-Hadoop Hive sql語法詳解3-DML 操作:元數據存儲

pan 查詢 寫入 所有 not insert語句 int 寫入文件 文件系統 一、概述 hive不支持用insert語句一條一條的進行插入操作,也不支持update操作。數據是以load的方式加載到建立好的表中。數據一旦導入就不可以修改。 DML包括:INSERT插入

基於mysql的一些sql語法

文本搜索 print use 客戶 .com fault lac images 磁盤 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545 } p.p2 {

sql語法

sqlSQL 約束 (Constraints)SQL 約束約束用於限制加入表的數據的類型。可以在創建表時規定約束(通過 CREATE TABLE 語句),或者在表創建之後也可以(通過 ALTER TABLE 語句)。我們將主要探討以下幾種約束:NOT NULLUNIQUEPRIMARY KEYFOREIGN

黃聰濃縮的才是精華淺析GIF格式圖片的存儲和壓縮(轉)

meid 單獨 圖片分辨率 change 之前 dex 本質 0.11 blog http://www.cnblogs.com/qcloud1001/p/6647080.html 成文迪, 在Web前端摸爬滾打的碼農一枚,對技術充滿熱情的菜鳥,致力為手Q的建設添磚加瓦

iOSCoreText的常用語法

ear 單位 [] 翻轉 1.2 iphone 書寫 attach direct CoreText的關鍵語法 一、坐標旋轉 -(void)drawRect:(CGRect)rect { //獲取上下文 CGContextRef ctx = UIGra