程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 全面接觸SQL語法(一)

全面接觸SQL語法(一)

編輯:關於SqlServer

您正在看的SQLserver教程是:全面接觸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;
PA


您正在看的SQLserver教程是:全面接觸SQL語法(一)。RAMETERS(參數)聲明的用法
對於參數型的查詢語法中,對參數的名稱以及數據類型作 聲明的操作。
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 groupfIEl


您正在看的SQLserver教程是:全面接觸SQL語法(一)。dlist
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 姓氏=’李’;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved