歡迎您光臨本站 註冊首頁

基礎教程:全面接觸SQL語法一

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0
   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 的資料庫時,必須指明該資料庫的類型名稱.  


[火星人 ] 基礎教程:全面接觸SQL語法一已經有381次圍觀

http://coctec.com/docs/linux/show-post-58209.html