SQL語(yǔ)法的分類(lèi)
其實(shí)SQL命令并不是非常多,可是要把SQL用到出神入化,卻也只需要短短幾個(gè)命令便夠,因?yàn)镾QL命令是針對(duì)關(guān)系型數(shù)據(jù)庫(kù)所建立出來(lái)的語(yǔ)法敘述,所以SQL在這類(lèi)數(shù)據(jù)庫(kù)中所發(fā)揮的功能非常的強(qiáng)。在說(shuō)明SQL的命令以及使用語(yǔ)法之前,以下將SQL做一個(gè)簡(jiǎn)單的分類(lèi)。
第一類(lèi)、屬性詞(Predicates)
在SQL命令中用來(lái)指明所要選擇的記錄的方式。如ALL、TOP與DISTINCT等等。
第二類(lèi)、聲明(Declaration)
針對(duì)SQL Parameter或Parameter Query 的名稱(chēng)與數(shù)據(jù)類(lèi)型做聲明,如PARAMETERS的聲明等等。
第三類(lèi)、條件子句(Clause)
在SQL的查詢(xún)中,利用一些表達(dá)式定義出查詢(xún)的條件,以縮小尋找的范圍,如WHERE。
第四類(lèi)、運(yùn)算符(Operator)與操作數(shù)(Operation)
在SQL的查詢(xún)中,與Operation共同組成表達(dá)式(Expression),如BETWEEN....AND 運(yùn)算符與INNER JOIN操作數(shù)。
第五類(lèi)、函數(shù)(Function)
一些SQL常見(jiàn)的函數(shù),像是AVG()是求算數(shù)平均數(shù)的函數(shù)。
第六類(lèi)、SQL語(yǔ)句(Statement)
SQL的語(yǔ)句,可以說(shuō)是SQL語(yǔ)法的主體,用來(lái)對(duì)某一個(gè)特定的數(shù)據(jù)庫(kù)發(fā)出指示,并返回相關(guān)的數(shù)據(jù),而SQL的語(yǔ)法結(jié)構(gòu),基本上可以利用下面的式子來(lái)表示:命令+條件子句
例如:SELECT*FROM TAB WHERE TAB.NAME=‘A‘
其中的“FROM....WHERE”便是一個(gè)條件子句,其實(shí)SQL的語(yǔ)法并不難,您只需記住這樣的一個(gè)規(guī)則,相信可以很快的了解SQL用法。
SQL語(yǔ)法與命令
SELECT 語(yǔ)句 SELECT[predicate]{*|table.*|[table.]field [,[table.]field2[,...]]} [AS alias1 [,alias2[,...]]] FROM tableexpression [,...][IN externaldatabase] [WHERE...] [GROUP BY...] [HAVING...] [ORDER BY...] [WITH OWNERACCESS OPTION]
|
SELECT 語(yǔ)句包括下面幾個(gè)部分
predicate 包括了ALL,DISTINCT,DISTINCTROW,與TOP 我們可以利用這樣的語(yǔ)句去限制查詢(xún)后所得的結(jié)果。
* 從指定表格中指定所有的字段。
table 針對(duì)被選擇出的記錄的字段,所指定表格的名稱(chēng)。
field1,field2 想要讀取數(shù)據(jù)的字段名稱(chēng),如果包含了一個(gè)以上的字段,會(huì)依照列出的順序來(lái)讀取數(shù)據(jù)。
alias1,alias2 用來(lái)替代在表格實(shí)際字段名稱(chēng)的化名。
tableexpression 表格名稱(chēng)或包含我們所想要的數(shù)據(jù)的表格。
externaldatabase 若使用到不是目前的數(shù)據(jù)庫(kù)則將其名字定義在externaldatabase當(dāng)中。
ALL,DISTINCT,DISTINCTROW,TOP屬性詞用法
SELECT [ALL|DISTINCT|DISTINCTROW|[TOP n[PERCENT]]] FROM table
ALL 若是您不指定任何的字段數(shù)據(jù),則Microsoft Jet數(shù)據(jù)庫(kù)引擎(database engine)將會(huì)選擇所有的字段,并依據(jù)所定的條件查詢(xún)出需求數(shù)據(jù)集。
例如下面這兩個(gè)例子將會(huì)具有相同的效果,都會(huì)從職員表格中返回所有字段的數(shù)據(jù)。
若是我們要查詢(xún)出職員表格中的所有記錄,可以通過(guò)下面的語(yǔ)句來(lái)完成。
DISTINCT 對(duì)某個(gè)表格所選擇的字段數(shù)據(jù),略過(guò)重復(fù)的情況,也就是說(shuō),針對(duì)某個(gè)字段查詢(xún)出來(lái)的記錄結(jié)果是唯一的。
例如有許多存放在職員表格的職員數(shù)據(jù),也許會(huì)具有相同的姓名,所以若是我們用SQL語(yǔ)句中的SELECT DISTINCT,則查詢(xún)出來(lái)的結(jié)果將會(huì)針對(duì)不一樣的姓名加以篩選。若是您把DISTINCT 加以省略,則這樣的查詢(xún)會(huì)顯示所有的記錄。
DISTINCTROW 將整條記錄重復(fù)的記錄忽略掉,而不是只有針對(duì)某一個(gè)字段的數(shù)據(jù)。
table 指定查詢(xún)記錄所需要的表格。
例如:SELECT DISTINCTROW 公司名稱(chēng) FROM 顧客表格 INNER JOIN 訂單表格 ON 顧客表格.顧客ID=訂單表格.顧客ID ORDER BY 公司名稱(chēng);
如果您忽略 DISTINCTROW 則會(huì)對(duì)每個(gè)公司產(chǎn)生一行以下的訂單數(shù)據(jù)。此外,若是DISTINCTROW只有用在一個(gè)表格當(dāng)中,則會(huì)被省略掉。
TOP 從第一條或最后一條開(kāi)始(利用ORDER BY條件子句),返回特定條數(shù)的數(shù)據(jù)。
例如:當(dāng)您想要知道在2000年,班上前25名的學(xué)生姓名數(shù)據(jù)時(shí),您可以輸入這樣的語(yǔ)句:
SELECT TOP 25 學(xué)生姓名 FORM 學(xué)生表格 WHERE 畢業(yè)年份=1994 ORDER BY 畢業(yè)成績(jī)平均分?jǐn)?shù) DESC;
如果您沒(méi)有加上ORDER BY 這行條件的話,您所得到的數(shù)據(jù),將會(huì)隨機(jī)的數(shù)據(jù)。此外,在TOP語(yǔ)句之后,除了可以加上數(shù)字以外,還可以利用保留字PERCENT來(lái)查詢(xún)。
例如:SELECT TOP 10 PERCENT學(xué)生姓名 FROM學(xué)生表格 WHERE畢業(yè)年份=1994 ORDER BY畢業(yè)成績(jī)平均DESC;
PARAMETERS(參數(shù))聲明的用法
對(duì)于參數(shù)型的查詢(xún)語(yǔ)法中,對(duì)參數(shù)的名稱(chēng)以及數(shù)據(jù)類(lèi)型作 聲明的操作。
PARAMETERS name datatype[,name datatype[,...]] name
PARAMETERS的名稱(chēng)。您可以把參數(shù)名稱(chēng)當(dāng)作字符串來(lái)使用,若是名稱(chēng)中包含了空字符串,可以利用中括號(hào)來(lái)處理,例如:“VBeden”。
datatype 輸入?yún)?shù)的數(shù)據(jù)類(lèi)型。
例如:若是您在查詢(xún)時(shí),需要機(jī)動(dòng)的輸入姓名 ,可以利用下列的方式完成:
PARAMETERS “輸入姓名” Text;
SELECT * FROM 職員表格 WHERE姓名=“輸入姓名:”;
ORDER BY條件語(yǔ)句 此條件子句,通常與SELECT語(yǔ)句合并使用目的是將查詢(xún)的結(jié)果,依照指定字段加以排序。
SELECT fieldlist FROM table WHERE selectcriteria ORDER BY field[ASC|DESC][,field2[ASC|DESC][,...]]
fieldlist 欲查詢(xún)的字段名稱(chēng)。其中可以與ALL,DISTINCT,DISINCTROW,或TOP一起來(lái)使用。
table 欲查詢(xún)的表格名稱(chēng)。
selectcriteria 查詢(xún)的標(biāo)準(zhǔn)設(shè)置。
field1 指定要依照那個(gè)字段作為排序的依據(jù),若是你沒(méi)有加上ORDER BY查詢(xún)出的數(shù)據(jù)集將不會(huì)作排序的操作。
ASC 遞增順序類(lèi)別。(默認(rèn)值)
DESC 遞減順序類(lèi)別。
例如:我們要將輸出數(shù)據(jù)依據(jù)出生的先后次序排列,可以利用下面的命令。
SELECT 姓名,生日 FROM 職員表格 ORDER BY 生日
SELECT LastName,FirstName FROM Employees ORDER BY LastName ASC;
HAVING 條件子句 指定一特定的分組記錄,并滿(mǎn)足HAVING 所指定的條件或狀態(tài),但條件是針對(duì)分組的條件設(shè)置。
SELECT fieldlist FROM table WHERE selectcriteria GROUP BY groupfieldlist HAVING groupcriteria fieldlist 顯示被查詢(xún)的字段名稱(chēng)。(可與ALL,DISTINCT,DISTINCTROW,或TOP相結(jié)合) table 欲查詢(xún)數(shù)據(jù)的表格名稱(chēng)。 selectcriteria 選取標(biāo)準(zhǔn)。 groupfieldlist 分組記錄的字段名稱(chēng),到多10個(gè)字段。而這些字段的順序決定最高到最低的分組階層。 groupcriteria 決定什么樣的分組記錄要被顯示。 HAVING跟WHERE 的用法相當(dāng)類(lèi)似,不同之處在于HAVING必須用于GROUP之后的分組數(shù)據(jù)上。 例如: SELECT 分類(lèi)編,Sum(庫(kù)存數(shù)量) FROM 產(chǎn)品表格 GROUP BY 分類(lèi)編號(hào) HAVING Sum(庫(kù)存數(shù)量)>100 AND 產(chǎn)品名稱(chēng) LIKE "*紙";
|
GROUP BY 條件子句 依據(jù)指定的字段,將具有相同數(shù)值的記錄合并成一條。
SELECT fieldlist FROM table WHERE criteria GROUP BY groupfieldlist fieldlist 欲讀取的字段名稱(chēng)。(可與ALL,DISTINCT,DISTINCTROW,或TOP合并使用) table 被查詢(xún)的表格名稱(chēng)。 groupfieldlist 分組記錄的字段名稱(chēng),到多10個(gè)字段,而這些字段的順序決定最高到最低的分組層次。 例如: SELECT 姓名,Count(姓名)AS 職員姓名 FROM 職員表格 WHERE 部門(mén)名稱(chēng)=‘業(yè)務(wù)部‘ GROUP BY 姓名
|
FROM 條件子句 指定表格名稱(chēng)或是查詢(xún),其中包含列在SELECT語(yǔ)句的字段數(shù)據(jù)。
SELECT fieldlist FROM tableexpression[IN externaldatabase] fieldlist 表格中的字段名稱(chēng)。(可與ALL,DISTINCT,DISTINCTROW,或TOP相結(jié)合) tableexpression 表格名稱(chēng),或多個(gè)表格的算式。 externaldatabase 若該表格參考到外部的數(shù)據(jù)庫(kù)時(shí),將其完整的路徑名稱(chēng)記下。 例如: 從職員表格下,查詢(xún)出所有姓名字段的數(shù)據(jù)(只有姓名字段被查詢(xún),其他則不顯示)。 SELECT 姓名 FROM 職員表格;
|
WHERE 條件子句 指定查詢(xún)的條件與限制。
SELECT fieldlist FROM tableexpression WHERE criteria fieldlist 字段名稱(chēng)。(可與ALL,DISTINCT,DISTINCTROW,或TOP相結(jié)合) tableexpression 表格名稱(chēng),或多個(gè)表格的算式。 criteria 查詢(xún)的結(jié)果,必須依照這一限制標(biāo)準(zhǔn)。 例如: 要查詢(xún)出職員表格中,所有姓氏是李的數(shù)據(jù),可以用下面的語(yǔ)句。 SELECT 姓名 FROM 職員表格 WHERE 姓氏=‘李‘;
|
BETWEEN...AND 運(yùn)算符 決定某一人數(shù)值是否介于特定的范圍之內(nèi),此運(yùn)算符只可以用在SQL的語(yǔ)句中。
expr[Not]BETWEEN value1 AND value2 expr 指定要加以計(jì)算的字段與表達(dá)式的組合。 value1,value2 所指明的數(shù)值范圍。 例如: 若是要從職員表格查詢(xún)出所有年齡介于25-30歲的員工,可以利用下面的程序來(lái)做。 SELECT 姓名,年齡 BETWEEN 25 AND 30 FROM 職員表格;
|
LIKE 操作數(shù) 用來(lái)將一字符串與另一特定字符串樣式(pattern)比較,并將符合該字符串樣式的記錄過(guò)濾出來(lái)。
expression LIKE "pattern" expression 使用在WHERE條件子句,SQL表達(dá)式。 pattern 用以比較的字符串樣式。 例如: 若是你要查詢(xún)出所有以“李”為首的姓氏,可以利用下面的式子。 Like "李*" LIKE操作數(shù)的多種范例: 1、多個(gè)字符: (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、單一數(shù)字: "a#a" 可篩選:"a0a","a1a","a2a",不能篩選:"aaa","a10a" 5、字符范圍: "“a-z”" 可篩選:"f","p","j",不能篩選:"2","&" 6、指定字符以外部范圍: "“!a-z”" 7、指定非數(shù)字: "“!0-9”" 可篩選:"A","a","&","~",不能篩選:"0","1","9" 8、組合式結(jié)構(gòu): "a“!b-m”#" 可篩選:"An9","az0","a99",不能篩選:"abc","aj0"
|
SQL數(shù)字函數(shù)
1、AVG:算數(shù)平均數(shù) AVG(expr) expr 字段名稱(chēng)或表達(dá)式。
例如:若要計(jì)算職員身高超過(guò)165厘米的職員平均身高,可以利用下面的SQL語(yǔ)句來(lái)完成。
SELECT Avg(身高) AS 平均身高 FROM 職員表格 WHERE 身高>165;
2、COUNT:計(jì)算記錄條數(shù) COUNT(expr) expr 字段名稱(chēng)或表達(dá)式。
例如:若是要統(tǒng)計(jì)出業(yè)務(wù)部門(mén)的職員人數(shù),并查詢(xún)出職員的姓名,可以利用下面的程序。
SELECT Count(姓名) AS 職員姓名 FROM 職員表格 WHERE 部門(mén)名稱(chēng)=‘業(yè)務(wù)部‘;
3、FIRST與LAST:返回某字段的第一條數(shù)據(jù)與最后一條數(shù)據(jù)。FIRST(expr) expr 字段名稱(chēng)或表達(dá)式。
例如:若是要找出貨品數(shù)量字段的第一條數(shù)據(jù)與貨品價(jià)格字段的最后一條數(shù)據(jù)時(shí),可以利用下面的查詢(xún)方式。
SELECT FIRST(貨品數(shù)量),LAST(貨品價(jià)格) FROM 訂單表格
4、MAX,與MIN:返回某字段的最大值與最小值。用法同F(xiàn)IRST與LAST。
5、SUM:返回某特定字段或是運(yùn)算的總和數(shù)值。SUM(expr) expr 字段名稱(chēng)或表達(dá)式。
例如:要計(jì)算出貨品總價(jià),可使用下面的程序。
SELECT Sum(單位價(jià)格*貨品數(shù)量) AS 貨品總價(jià) FROM 訂單表格
多層SQL查詢(xún) 顧名思義,多層的SQL查詢(xún)的便在于:“在一個(gè)SQL語(yǔ)句中可以包含另一個(gè)SQL查詢(xún)語(yǔ)句,形成內(nèi)部嵌套的查詢(xún)類(lèi)型。”
comparison[ANY|ALL|SOME](sqlstatement) expression[NOT]IN (sqlstatement) [NOT]EXISTS(sqlstatement) comparison 將表達(dá)式與內(nèi)層查詢(xún)的結(jié)果比較的操作。 expression 對(duì)內(nèi)層查詢(xún)的結(jié)果作搜索的表達(dá)式。 sqlstatement 為SELECT語(yǔ)句構(gòu)成的SQL查詢(xún),必須用()將該語(yǔ)句括起來(lái)。
|
例如:
我們先從訂單表格當(dāng)中,查詢(xún)出所有的單位,再將產(chǎn)品表格中的單位與的一一對(duì)比,查詢(xún)出所有高于訂單表格的單位價(jià)格的記錄。
SELECT * FROM 產(chǎn)品表格 WHERE 單位價(jià)格>ANY (SELECT 單位價(jià)格 FROM 訂單表格 WHERE 折扣>=.25);
SQL與數(shù)據(jù)庫(kù)的維護(hù)
表格的建立
將SQL中的基本語(yǔ)法作了一番介紹以后,但大多是偏向于數(shù)據(jù)庫(kù)數(shù)據(jù)的查詢(xún)與過(guò)濾,但實(shí)際上,我們通過(guò)SQL命令所可以做的事還有很多,接下來(lái)要介紹的便是如何利用SQL的語(yǔ)法命令來(lái)建立一個(gè)數(shù)據(jù)庫(kù)中的表格。
CREATE TABLE語(yǔ)句
我們可以利用這個(gè)命令,來(lái)建立一個(gè)全新的表格,但前提則是:數(shù)據(jù)庫(kù)必須已經(jīng)存在。
CREATE TABLE table(field1 type[(size)][index1][,field2 type[(size)][index2][,...]][,nultifieldindex[,...]]) table 欲建立的新的表格名稱(chēng)。 field1,field2 在新表格中的新的字段名稱(chēng),到少要一個(gè)字段以上。 type 字段的數(shù)據(jù)類(lèi)型。 size 字段的大小。 index1,index2 利用CONSTRAINT條件子句定義一個(gè)單一字段的索引名稱(chēng)。 multifieldindex 利用CONSTRAINT條件子句定義一個(gè)多重字段的索引名稱(chēng)。
|
例如:
建立一個(gè)擁有職員姓名與部門(mén)字段的表格。
CREATE TABLE 職員表格 (姓名TEST,部門(mén)TEST,職員編號(hào) INTEGER CONSTRAINT職員字段索引PRIMARY KEY) 在這一個(gè)范例中,我們建立了一個(gè)表格名稱(chēng)為“職員表格”的表格,并且定義了該表格的主鍵值,以限制數(shù)據(jù)不能重復(fù)輸入。
|
表格索引的建立 CREATE INDEX語(yǔ)句
這個(gè)命令主要是對(duì)一個(gè)已存在的表格建立索引,其用法如下:
CREATE[UNIQUE]INDEX index ON table(field[ASC|DESC][,field[ASC|DESC],...]) [WITH {PRIMARY|DISALLOWNULL|IGNORENULL}] index
|
欲被建立的索引名稱(chēng)。
table 欲建立索引的表格名稱(chēng)。
field 欲被建立的索引的字段名稱(chēng)。并可通過(guò)DESC保留字,來(lái)決定索引的順序。
例如:
在職員表格中建立一個(gè)索引。 CREATE INDEX 新索引名稱(chēng) ON 職員表格(姓名部門(mén)); 表格的字段更新 CONSTRAINT條件子句 CONSTRAINT 的功能是類(lèi)似索引(INDEX)的,雖然CONSTRAINT 也可以建立表格之間的關(guān)聯(lián)性。 單一字段索引: 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名稱(chēng)。 primary1,primary2 被用來(lái)設(shè)計(jì)成主鍵值的字段名稱(chēng)(可一個(gè)以上)。 unique1,unique2 被用來(lái)設(shè)計(jì)成唯一鍵值的字段名稱(chēng)(可一個(gè)以上)。 foreign key 字段名稱(chēng),或是參考到別的表格中字段的字段名稱(chēng)。 foreigntable 如前所述,被參考到的表格。 foreignfield1,foreignfield2 在參考到的表格當(dāng)中,被ref1,ref2字段所指定的字段。如果被參考的字段是參考表格中的主鍵值,你也可以省略這個(gè)條件子句。 例如: 當(dāng)我們要建立一個(gè)新的職員數(shù)據(jù)表格,表格包含姓名、部門(mén)名稱(chēng)與生日三個(gè)字段,且由這三個(gè)字段建立一個(gè)唯一的索引時(shí),可以使用下面這段SQL的語(yǔ)句。 CREATE TABLE 職員數(shù)據(jù)表格 (姓名 TEST,部門(mén)名稱(chēng) TEST,生日 DATETIME,CONSTRAINT 職員數(shù)據(jù)表格限制 UNIQUE(姓名,部門(mén)名稱(chēng),生日)); 以上是SQL中,與數(shù)據(jù)庫(kù)表格建立相關(guān)的命令,你可以利用這些命令,通過(guò)SQL的語(yǔ)句,將數(shù)據(jù)庫(kù)表格完整的建立出來(lái),接下來(lái)的章節(jié),將針對(duì)數(shù)據(jù)庫(kù)建立之后的維護(hù)與增刪所要使用的SQL語(yǔ)句作一介紹。
|
記錄的刪除
DELETE語(yǔ)句 我們可以利用DELETE語(yǔ)句,將表格中的記錄刪除。(注意:記錄被刪除后,無(wú)法再?gòu)?fù)原,所以條件設(shè)置要正確)
DELETE[table.*] FROM tableexpression WHERE criteria table 欲刪除記錄的表格名稱(chēng),也可以用*來(lái)取代。 tableexpression 一個(gè)或一個(gè)以上表格的名稱(chēng)。此一參數(shù)可以為單一的表格名稱(chēng)或是從INNER JOIN,LEFT JOIN,或RIGHTJOIN 等運(yùn)算所得到的結(jié)果。 criteria 決定表格中記錄要被刪除的標(biāo)準(zhǔn)。
|
例如:若是我們要將職員表格中姓名姓名叫做‘李名‘的記錄刪除,我們可以利用下面的SQL語(yǔ)句來(lái)完成。
DELETE * FROM 職員表格 WHERE 姓名=‘李名‘;
SELECT...INTO語(yǔ)句
我們可以通過(guò)這個(gè)命令,利用既存表格查詢(xún),來(lái)建立一個(gè)新表格的查詢(xún)語(yǔ)句。
SELECT field1[,field2[,...]]INTO newtable[IN externaldatabase] FROM source field1,field2 欲拷貝到新表格的字段名稱(chēng)。 newtable 欲建立之新表格的名稱(chēng),不可是已經(jīng)存在的表格。 externaldatabase 若是該表格在另外的外部數(shù)據(jù)庫(kù)時(shí),該數(shù)據(jù)庫(kù)的名稱(chēng)。 source 記錄數(shù)據(jù)拷貝的來(lái)源表格名稱(chēng),可以是單一的表格或是一段SQL查詢(xún)之語(yǔ)句。 例如: 你可以通過(guò)下面的SQL語(yǔ)句,來(lái)建立一個(gè)新的“訓(xùn)練名冊(cè)”表格。 SELECT 職員表格.姓名,職員表格.部門(mén) INTO 訓(xùn)練名冊(cè) FROM 職員表格 WHERE 職稱(chēng)=‘新進(jìn)人員‘;
|
INNER JOIN操作數(shù) 當(dāng)某一個(gè)共同的字段數(shù)據(jù)相等時(shí),將兩個(gè)表格的記錄加以組合。
SELECT fields FROM table1 INNER JOIN table2 ON table1.field1 compopr table2.field2 table1,table2 欲進(jìn)行記錄組合的表格名稱(chēng)。 field1,field2 欲組合的字段名稱(chēng)。(必須具有相同的數(shù)據(jù)類(lèi)型) compopr 比較關(guān)系運(yùn)算符如下:“=”,“<”,“>”,“<=”,“<>”等。 例如: 若是你要把分類(lèi)表格與產(chǎn)品表格作組合,可參考下面的SQL語(yǔ)句。 SELECT 分類(lèi)名稱(chēng),產(chǎn)品名稱(chēng) FROM 分類(lèi)表格 INNER JOIN 產(chǎn)品表格 ON 分類(lèi)表格.分類(lèi)編號(hào)=產(chǎn)品表格.分類(lèi)編號(hào);
|
UNION操作數(shù) 我們可以通過(guò)UNION操作數(shù)來(lái)建立連接的查詢(xún)條件,UNION操作數(shù)可以將兩個(gè)以上的表格或是查詢(xún)的結(jié)果組合起來(lái)。
[TABLE]query1 UNION [ALL][TABLE]query2 [UNION [ALL] [TABLE]queryn [...]] query1,query2,queryn 為一個(gè)SELECT的語(yǔ)句,或是一個(gè)已存在的查詢(xún)名稱(chēng),或是一個(gè)已存在的表格名稱(chēng)。
|
例如:你可以利用下面的SQL語(yǔ)句,將訂單數(shù)量超過(guò)1000的顧客表格記錄,與新客戶(hù)表格作UNION的操作。
TABLE 新客戶(hù)表格 UNION ALL SELECT * FROM 顧客表格 WHERE 訂單數(shù)量>1000;
|
DROP語(yǔ)句 針對(duì)所指定的表格或字段加以刪除,或是把索引刪除。
DROP {TABLE table|INDEX index ON table} table 欲刪除之表格或索引依附之表格名稱(chēng)。 index 欲從表格中刪除的索引名稱(chēng)。 例如: 從職員表格中,刪除編號(hào)索引。 DROP INDEX MyIndex ON Employees; 例如: 從數(shù)據(jù)庫(kù)中,刪除整個(gè)表格。 DROP TABLE 職員表格;
|
INSERT INTO語(yǔ)句 新建一條數(shù)據(jù)到表格當(dāng)中。
多條記錄新建查詢(xún):
INSERT INTO target [IN externaldatabase][(field1[,field2[,...]])] SELECT [source.]field1[,field2[,...] FROM tableexpression 單條記錄新建查詢(xún): INSERT INTO target[(field1[,field2[,...]])] VALUES(value1[,value2[,...]) target 新建記錄的表格名稱(chēng)。 externaldatabase 外部數(shù)據(jù)庫(kù)的路徑,搭配IN條件子句使用。 source 若是記錄從其它表格中拷貝時(shí),指明該表格的名稱(chēng)。 field1,field2 欲增加數(shù)據(jù)的字段名稱(chēng)。 tableexpression 表格名稱(chēng)或描述記錄是從哪一個(gè)表格中插入的表格名稱(chēng)。配合INNER JOIN,LEFT JOIN,或 RIGHT JOIN 運(yùn)算符一起使用。 value1,value2 欲插入表格中的數(shù)值。 例如: 在客戶(hù)數(shù)據(jù)表格中,從新的表格插入數(shù)據(jù)。 INSERT INTO 客戶(hù)數(shù)據(jù)表格 SELECT 新客戶(hù)數(shù)據(jù)表格.* FROM 新客戶(hù)數(shù)據(jù)表格; 例如: 在職員表格中插入數(shù)據(jù)。 INSERT INTO 職員表格(姓名,生日,職稱(chēng)) VALUES("王榮","57/12/11","經(jīng)理"); 例如: 從訓(xùn)練人員表格中,將職員雇用時(shí)間超過(guò)30天者,加入到正式職員表格中。 INSERT INTO 職員表格 SELECT 訓(xùn)練人員表格.* FROM 訓(xùn)練人員表格 WHERE 雇用天數(shù)>30;
|
UPDATE語(yǔ)句 建立一個(gè)UPDATE的查詢(xún),通過(guò)條件的限制來(lái)修改特定的數(shù)據(jù)。
UPDATE table SET newvalue WHERE criteria; table 欲修改數(shù)據(jù)的表格名稱(chēng)。 newvalue 欲修改成的數(shù)值(將該項(xiàng)數(shù)值插入到特定的字段當(dāng)中)。 criteria 查詢(xún)條件,用來(lái)決定要修改哪些記錄。 例如: 若是要把訂單表格中的訂單數(shù)量修改成1.1倍,運(yùn)費(fèi)為1.03倍,可利用下列之SQL語(yǔ)句來(lái)完成。 UPDATE 訂單表格 SET 訂單數(shù)量=訂單數(shù)量 * 1.1,運(yùn)費(fèi)=運(yùn)費(fèi) * 1.03倍 WHERE 運(yùn)達(dá)地點(diǎn)=‘美國(guó)‘; 當(dāng)我們完成修改后,你可以利用 SELECT 語(yǔ)句,配合同樣的 WHERE 條件子句,來(lái)察看修改的數(shù)據(jù)是否正確。 事實(shí)上,要利用SQL完成某些看似復(fù)雜的操作,并不需要繁瑣的SQL命令組合,或是許許多多的步驟才能完成,其實(shí)最重要的還是要活用SQL命令,才會(huì)在最精簡(jiǎn)的SQL語(yǔ)句里獲得最高的效率。
|