【正文】
me,連接起來。在第二個(gè)欄位上,原本我們的標(biāo)題是 Sum(Sales),而現(xiàn)在我們有一個(gè)很清楚的 Total Sales。要給一個(gè)表格取一個(gè)別名,只要在 FROM 子句中的表格名后空一格,然后再列出要用的表格別名就可以了。HAVING 的語法如下: SELECT 欄位1, SUM(欄位2) FROM 表格名 GROUP BY 欄位1 HAVING (函數(shù)條件) 請(qǐng)讀者注意: 如果被 SELECT 的只有函數(shù)欄, 那就不需要 GROUP BY 子句。這個(gè)語法為: SELECT 欄位1, SUM(欄位2) FROM 表格名 GROUP BY 欄位1 在我們的范例上, Store_Information 表格store_name Sales Date Los Angeles $1500 Jan051999 San Diego $250 Jan071999 Los Angeles $300 Jan081999 Boston $700 Jan081999 我們就鍵入,SELECT store_name, SUM(Sales) FROM Store_Information GROUP BY store_name 結(jié)果: store_name SUM(Sales) Los Angeles $1800 San Diego $250 Boston $700 當(dāng)我們選不只一個(gè)欄位,且其中至少一個(gè)欄位有包含函數(shù)的運(yùn)用時(shí),我們就需要用到 GROUP BY 這個(gè)指令。 COUNT在上一頁有提到, COUNT 是函數(shù)之一。 舉例來說,若我們要依照 Sales 欄位的由大往小列出 Store_Information 表格中的資料, Store_Information 表格store_name Sales Date Los Angeles $1500 Jan051999 San Diego $250 Jan071999 San Francisco $300 an081999 Boston $700 Jan081999 我們就鍵入,SELECT store_name, Sales, Date FROM Store_Information ORDER BY Sales DESC結(jié)果: store_name Sales Date Los Angeles $1500 Jan051999 Boston $700 Jan081999 San Francisco $300 Jan081999 San Diego $250 Jan071999 在以上的例子中,我們用欄位名來指定排列順序的依據(jù)。在這種情況下,我們就可以運(yùn)用 ORDER BY 這個(gè)指令來達(dá)到我們的目的。 都符合這個(gè)模式。%AN%39。XYZ39。舉例來說,39。 都符合這一個(gè)模式,而 39。A39。請(qǐng)讀者注意:在不同的數(shù)據(jù)庫中,日期的儲(chǔ)存法可能會(huì)有所不同。值一39。若在括號(hào)內(nèi)只有一個(gè)值,那這個(gè)子句就等于 WHERE 欄位名 = 39。 舉例來說,我們?nèi)粢?Store_Information 表格中選出所有 Sales 高于 $1,000 或是 Sales 在 $500 及 $275 之間的資料的話, Store_Information 表格store_name Sales Date Los Angeles $1500 Jan051999 San Diego $250 Jan071999 San Francisco $300 Jan081999 Boston $700 Jan081999我們就鍵入,SELECT store_name FROM Store_Information WHERE Sales 1000 OR (Sales 500 AND Sales 275) 結(jié)果: store_name Los Angeles San Francisco IN在 SQL 中,在兩個(gè)情況下會(huì)用到 IN 這個(gè)指令;這一頁將介紹其中之一:與 WHERE 有關(guān)的那一個(gè)情況。要做到這一點(diǎn),我們就需要用到 WHERE 這個(gè)指令。這將把所有的資料都抓出,無論資料值有無重復(fù)。希望在看完這個(gè)網(wǎng)站后,您也會(huì)有同樣的想法。這個(gè) SQL 教材網(wǎng)站列出常用的 SQL 指令,包含以下幾個(gè)部分: ? SQL 指令: SQL 如何被用來儲(chǔ)存、讀取、以及處理數(shù)據(jù)庫之中的資料。當(dāng)您讀完了這個(gè)網(wǎng)站的所有教材后,您將對(duì) SQL 的語法會(huì)有一個(gè)大致上的了解。) 我們由這里可以看到最基本的 SQL 架構(gòu): SELECT 欄位名 FROM 表格名 我們用以下的例子來看看實(shí)際上是怎么用的。DISTINCT 的語法如下: SELECT DISTINCT 欄位名 FROM 表格名 舉例來說,若要在以下的表格,Store_Information,找出所有不同的店名時(shí), Store_Information 表格store_name Sales Date Los Angeles $1500 Jan051999 San Diego $250 Jan071999 Los Angeles $300 Jan081999 Boston $700 Jan081999 我們就鍵入,SELECT DISTINCT store_name FROM Store_Information結(jié)果: store_name Los Angeles San Diego Boston WHERE我們并不一定每一次都要將表格內(nèi)的資料都完全抓出。 復(fù)雜條件的語法如下: SELECT 欄位名 FROM 表格名 WHERE 簡單條件 {[AND|OR] 簡單條件}+ {}+ 代表{}之內(nèi)的情況會(huì)發(fā)生一或多次。值二39。San Diego39。Jan06199939。 LIKE 的語法如下: SELECT 欄位名 FROM 表格名 WHERE 欄位名 LIKE {模式} {模式} 經(jīng)常包括野卡 (wildcard). 以下是幾個(gè)例子: 39。ABZ39。: 所有以 39。 39。ZZXYZ39。LOS ANGELES39。這其實(shí)是一個(gè)很重要的問題。 我們可以照好幾個(gè)不同的欄位來排順序。它們是: AVG (平均) COUNT (計(jì)數(shù)) MAX (最大值) MIN (最小值) SUM (總合) 運(yùn)用函數(shù)的語法是: SELECT 函數(shù)名(欄位名) FROM 表格名 舉例來說,若我們要由我們的范例表格中求出 Sales 欄位的總合, Store_Information 表格store_name Sales Date Los Angeles $1500 Jan051999 San Diego $250 Jan071999 Los Angeles $300 Jan081999 Boston $700 Jan081999 我們就鍵入,SELECT SUM(Sales) FROM Store_Information 結(jié)果: SUM(Sales) $2750 $2750 代表所有 Sales 欄位的總合: $1500 + $250 + $300 + $700. 除了函數(shù)的運(yùn)用外,SQL 也可以做簡單的數(shù)學(xué)運(yùn)算,例如加(+)和減()。舉例來說,如果我們要找出我們的表格中有多少個(gè)不同的 store_name,我們就鍵入, SELECT COUNT(DISTINCT store_name) FROM Store_Information 結(jié)果: Count(DISTINCT store_name) 3 GROUP BY我們現(xiàn)在回到函數(shù)上。那要怎么辦呢?很幸運(yùn)地,SQL 有提供一個(gè) HAVING 的指令,而我們就可以用這個(gè)指令來達(dá)到這個(gè)目標(biāo)。雖然在這個(gè)情況下沒有什么問題,可是如果這個(gè)欄位不是一個(gè)簡單的總合,而是一個(gè)復(fù)雜的計(jì)算,那欄位名就沒有這么易懂了。這里的不同處是我們加上了欄位別名以及表格別名: SELECT Store, SUM() Total Sales FROM Store_Information A1GROUP BY 結(jié)果: Store Total Sales Los Angeles $1800 San Diego $250 Boston $700 在結(jié)果中,資料本身沒有不同。我們先假設(shè)我們有以下的兩個(gè)表格, Store_Information 表格store_name Sales Date Los Angeles $1500 Jan051999 San Diego $250 Jan071999 Los Angeles $300 Jan081999 Boston $700 Jan081999 Geography 表格 region_name store_name East Boston East New York West Los Angeles West San Diego 而我們要知道每一區(qū) (region_name) 的營業(yè)額 (sales)。 接下來我們看第三行,就是 WHERE 子句。在這個(gè)情況下,要兩個(gè)表格內(nèi)都有同樣的值,那一筆資料才會(huì)被選出。所以,在這個(gè)情況下,我們需要用外部連接來串聯(lián)這兩個(gè)表格: SELECT , SUM() SALES FROM Georgraphy A1, Store_Information A2 WHERE = (+) GROUP BY 我們?cè)谶@里是使用了 Oracle 的外部連接語法。||39。 39。Boston39。Los Angeles39。最常見的用途是移除字首或字尾的空白。)。 例 3: SELECT RTRIM(39。 在我們跳入 CREATE TABLE 的語法之前,我們最好先對(duì)表格這個(gè)東西有些多一點(diǎn)的了解。)、一個(gè)日期/時(shí)間 (例如 39。 CREATE TABLE 的語法是: CREATE TABLE 表格名(欄位 1 欄位 1 資料種類,欄位 2 欄位 2 資料種類,... ) 若我們要建立我們上面提過的顧客表格,我們就鍵入以下的 SQL: CREATE TABLE customer(First_Name char(50),Last_Name char(50),Address char(50),City char(50),Country char(25),Birth_Date date) CONSTRAINT我們可以限制哪一些資料可以存入表格中。 SID 欄位不能有重復(fù)值存在,而 Last_Name 及 First_Name 這兩個(gè)欄位則是允許有重復(fù)值存在。 主鍵主鍵 (Primary Key) 中的每一筆資料都是表格中的唯一值。 SQL Server: CREATE TABLE Customer (SID integer PRIMARY KEY, Last_Name varchar(30), First_Name varchar(30))。 舉例來說,假設(shè)我們有兩個(gè)表格:一個(gè) CUSTOMER 表格,里面記錄了所有顧客的資料;另一個(gè) ORDERS 表格,里面記錄了所有顧客訂購的資料。 SQL Server: CREATE TABLE ORDERS (Order_ID integer primary key, Order_Date datetime, Customer_SID integer references CUSTOMER(SID), Amount double)。來看一個(gè)例子。若這本書有索引的話,我們就可以先去索引找出種植青椒的信息是在哪一頁,然后直接到那一頁去閱讀。 因此,在表格上建立索引是一件有利于系統(tǒng)效率的事。常見的改變?nèi)缦拢?加一個(gè)欄位 刪去一個(gè)欄位 改變欄位名稱 改變欄位的資料種類 以上列出的改變并不是所有可能的改變。事實(shí)上,如果我們不能這樣做的話,那將會(huì)是一個(gè)很大的問題,因?yàn)閿?shù)據(jù)庫管理師 (Database Administrator DBA) 勢(shì)必?zé)o法對(duì)數(shù)據(jù)庫做有效率的管理。但是這些資料是如果進(jìn)入這些表格的呢?這就是這一頁 (INSERT INTO) 和下一頁 (UPDATE) 要討論的。, 900, 39。不同的數(shù)據(jù)庫會(huì)有不同的語法。如果有多筆資料符合條件的話,每一筆符合條件的資料都會(huì)被修改的。 UNION 的一個(gè)限制是兩個(gè) SQL 語句所產(chǎn)生的欄位需要是同樣的資料種類。要達(dá)到這個(gè)目的,我們用以下的 SQL 語句: SELECT Date FROM Store_InformationUNION ALLSELECT Date FROM Internet_Sales 結(jié)