SQL語法,SQL語句大全,SQL基礎

 

SQL語法,SQL語句大全,SQL基礎

      1、建表格: 
      Create TABLE table_name( 
      column1 DATATYPE [NOT NULL] [NOT NULL PRIMARY KEY], 
      column2 DATATYPE [NOT NULL], 
      ...) 
      說明:  
      DATATYPE --是資料的格式,詳見表。 
      NUT NULL --可不可以允許資料有空的(尚未有資料填入)。 
      PRIMARY KEY --是本表的主鍵。 

      2、更改表格  
      Alter TABLE table_name 
      ADD COLUMN column_name DATATYPE 
      說明:增加一個欄位(沒有刪除某個欄位的語法。 
      Alter TABLE table_name 
      ADD PRIMARY KEY (column_name) 
      說明:更改表得的定義把某個欄位設爲主鍵。 
      Alter TABLE table_name 
      Drop PRIMARY KEY (column_name) 
      說明:把主鍵的定義刪除。 

      3、建立索引  
      Create INDEX index_name ON table_name (column_name) 
      說明:對某個表格的欄位建立索引以增加查詢時的速度。 

      4、刪除  
      Drop table_name 
      Drop index_name 

      二、的資料形態 DATATYPEs 
      smallint 
      16 位元的整數。 
      interger 
      32 位元的整數。 
      decimal(p,s) 
      p 精確值和 s 大小的十進位整數,精確值p是指全部有幾個數(digits)大小值,s是指小數 
      點後有幾位數。如果沒有特別指定,則系統會設爲 p=5; s=0 。 
      float 
      32位元的實數。 
      double 
      64位元的實數。 
      char(n) 
      n 長度的字串,n不能超過 254。 
      varchar(n) 
      長度不固定且其最大長度爲 n 的字串,n不能超過 4000。 
      graphic(n) 
      和 char(n) 一樣,不過其單位是兩個字元 double-bytes, n不能超過127。這個形態是爲 
      了支援兩個字元長度的字體,例如中文字。 
      vargraphic(n) 
      可變長度且其最大長度爲 n 的雙字元字串,n不能超過 2000。 
      date 
      包含了 年份、月份、日期。 
      time 
      包含了 小時、分鐘、秒。 
      timestamp 
      包含了 年、月、日、時、分、秒、千分之一秒。 

      三、資料*作 DML (Data Manipulation Language) 
      資料定義好之後接下來的就是資料的*作。資料的*作不外乎增加資料(insert)、查詢資料(query)、更改資料(update)
      、刪除資料(delete)四種模式,以下分 別介紹他們的語法: 

      1、增加資料: 
      Insert INTO table_name (column1,column2,...) 
      valueS ( value1,value2, ...) 
      說明: 
      1.若沒有指定column 系統則會按表格內的欄位順序填入資料。 
      2.欄位的資料形態和所填入的資料必須吻合。 
      3.table_name 也可以是景觀 view_name。 

      Insert INTO table_name (column1,column2,...) 
      Select columnx,columny,... FROM another_table 
      說明:也可以經過一個子查詢(subquery)把別的表格的資料填入。 

      2、查詢資料: 
      基本查詢 
      Select column1,columns2,... 
      FROM table_name 
      說明:把table_name 的特定欄位資料全部列出來 
      Select * 
      FROM table_name 
      Where column1 = xxx 
      [AND column2 〉 yyy] [OR column3 〈〉 zzz] 
      說明: 
      1.’*’表示全部的欄位都列出來。 
      2.Where 之後是接條件式,把符合條件的資料列出來。 

      Select column1,column2 
      FROM table_name 
      orDER BY column2 [DESC] 
      說明:ORDER BY 是指定以某個欄位做排序,[DESC]是指從大到小排列,若沒有指明,則是從小到大 
      排列 

      組合查詢 
      組合查詢是指所查詢得資料來源並不只有單一的表格,而是聯合一個以上的 
      表格才能夠得到結果的。 
      Select * 
      FROM table1,table2 
      Where table1.colum1=table2.column1 
      說明: 
      1.查詢兩個表格中其中 column1 值相同的資料。 
      2.當然兩個表格相互比較的欄位,其資料形態必須相同。 
      3.一個複雜的查詢其動用到的表格可能會很多個。 

      整合性的查詢: 
      Select COUNT (*) 
      FROM table_name 
      Where column_name = xxx 
      說明: 
      查詢符合條件的資料共有幾筆。 
      Select SUM(column1) 
      FROM table_name 
      說明: 
      1.計算出總和,所選的欄位必須是可數的數字形態。 
      2.除此以外還有 AVG() 是計算平均、MAX()、MIN()計算最大最小值的整合性查詢。 
      Select column1,AVG(column2) 
      FROM table_name 
      GROUP BY column1 
      HAVING AVG(column2) 〉 xxx 
      說明: 
      1.GROUP BY: 以column1 爲一組計算 column2 的平均值必須和 AVG、SUM等整合性查詢的關鍵字 
      一起使用。 
      2.HAVING : 必須和 GROUP BY 一起使用作爲整合性的限制。 

      複合性的查詢 
      Select * 
      FROM table_name1 
      Where EXISTS ( 
      Select * 
      FROM table_name2 
      Where conditions ) 
      說明: 
      1.Where 的 conditions 可以是另外一個的 query。 
      2.EXISTS 在此是指存在與否。 
      Select * 
      FROM table_name1 
      Where column1 IN ( 
      Select column1 
      FROM table_name2 
      Where conditions ) 
      說明:  
      1. IN 後面接的是一個集合,表示column1 存在集合裏面。 
      2. Select 出來的資料形態必須符合 column1。 

      其他查詢 
      Select * 
      FROM table_name1 
      Where column1 LIKE ’x%’ 
      說明:LIKE 必須和後面的’x%’ 相呼應表示以 x爲開頭的字串。 
      Select * 
      FROM table_name1 
      Where column1 IN (’xxx’,’yyy’,..) 
      說明:IN 後面接的是一個集合,表示column1 存在集合裏面。 
      Select * 
      FROM table_name1 
      Where column1 BETWEEN xx AND yy 
      說明:BETWEEN 表示 column1 的值介於 xx 和 yy 之間。 

      3、更改資料: 
      Update table_name 
      SET column1=’xxx’ 
      Where conditoins 
      說明: 
      1.更改某個欄位設定其值爲’xxx’。 
      2.conditions 是所要符合的條件、若沒有 Where 則整個 table 的那個欄位都會全部被更改。 

      4、刪除資料: 
      Delete FROM table_name 
      Where conditions 
      說明:刪除符合條件的資料。 

      說明:關於Where條件後面如果包含有日期的比較,不同數據庫有不同的表達式。具體如下: 
      (1)如果是ACCESS數據庫,則爲:Where mydate〉#2000-01-01# 
      (2)如果是ORACLE數據庫,則爲:Where mydate〉cast(’2000-01-01’ as date) 
      或:Where mydate〉to_date(’2000-01-01’,’yyyy-mm-dd’) 
      在Delphi中寫成: 
      thedate=’2000-01-01’; 
      query1.SQL.add(’select * from abc where mydate〉cast(’+’’’’+thedate+’’’’+’
      as date)’); 

      如果比較日期時間型,則爲: 
      Where mydatetime〉to_date(’2000-01-01 10:00:01’,’yyyy-mm-dd hh24:mi:ss’)

 

      Recordset對象一些有用的屬性"/〉 引用來自 增加一個 :Recordset對象一些有用的屬性
      rs.CursorType=
      rs.CursorLocation=
      rs.LockType = 
      rs.CacheSize=
      rs.Pagesize=
      rs.Pagecount=
      rs.RecordCount=

      ’’---- CursorType Values ----
      Const adOpenForwardOnly = 0 僅向前
      Const adOpenKeyset = 1 鍵集遊標
      Const adOpenDynamic = 2 動態遊標
      Const adOpenStatic = 3 靜態遊標

      ’’---- LockType Values ----
      Const adLockReadOnly = 1 默認值,只讀
      Const adLockPessimistic = 2 保守式記錄鎖定 
      Const adLockOptimistic = 3 開放式記錄鎖定,只在調用Update方法時鎖定記錄
      Const adLockBatchOptimistic = 4 開放式批更新

      ’’---- CursorLocation Values ----
      Const adUseServer = 2
      Const adUseClient = 3 

      Set rs=Server.CreateObject("ADODB.Rrecordset") 
      rs.Open.sqlst,conn,1,1 ’讀取 
      rs.Open sqlst,conn,1,2 ’新增,修改,或刪除)

 

      下一頁 :《SQL SERVER的數據類型》
      〉〉〉---------我想分頁!--這麼長的文章,在這裏來個分頁多好啊!哈哈----------〈〈〈
      《SQL SERVER的數據類型》

      1.SQL SERVER的數據類型 

        數據類弄是數據的一種屬性,表示數據所表示信息的類型。任何一種計算機語言都定義了自己的數據類型。當然,不同的程序語言都具有不同的特點,所定義的數據類型的各類和名稱都或多或少有些不同。SQLServer
      提供了 25 種數據類型:
        ·Binary [(n)]
        ·Varbinary [(n)]
        ·Char [(n)]
        ·Varchar[(n)]
        ·Nchar[(n)]
        ·Nvarchar[(n)]
        ·Datetime
        ·Smalldatetime
        ·Decimal[(p[,s])]
        ·Numeric[(p[,s])]
        ·Float[(n)]
        ·Real
        ·Int
        ·Smallint
        ·Tinyint
        ·Money
        ·Smallmoney
        ·Bit
        ·Cursor
        ·Sysname
        ·Timestamp
        ·Uniqueidentifier
        ·Text
        ·Image
        ·Ntext 
      (1)二進制數據類型 

        二進制數據包括 Binary、Varbinary 和 Image
        Binary 數據類型既可以是固定長度的(Binary),也可以是變長度的。
        Binary[(n)] 是 n 位固定的二進制數據。其中,n 的取值範圍是從 1 到 8000。其存儲窨的大小是 n + 4 個字節。
        Varbinary[(n)] 是 n 位變長度的二進制數據。其中,n 的取值範圍是從 1 到 8000。其存儲窨的大小是 n +
      4個字節,不是n 個字節。
        在 Image 數據類型中存儲的數據是以位字符串存儲的,不是由 SQL Server
      解釋的,必須由應用程序來解釋。例如,應用程序可以使用BMP、TIEF、GIF 和 JPEG 格式把數據存儲在 Image 數據類型中。 
      (2)字符數據類型 

        字符數據的類型包括 Char,Varchar 和 Text
        字符數據是由任何字母、符號和數字任意組合而成的數據。
        Varchar 是變長字符數據,其長度不超過 8KB。Char 是定長字符數據,其長度最多爲 8KB。超過 8KB 的ASCII
      數據可以使用Text數據類型存儲。例如,因爲 Html 文檔全部都是 ASCII 字符,並且在一般情況下長度超過 8KB,所以這些文檔可以 Text
      數據類型存儲在SQL Server 中。 
      (3)Unicode 數據類型 

        Unicode 數據類型包括 Nchar,Nvarchar 和Ntext
        在 Microsoft SQL Server 中,傳統的非 Unicode 數據類型允許使用由特定字符集定義的字符。在 SQL
      Server安裝過程中,允許選擇一種字符集。使用 Unicode 數據類型,列中可以存儲任何由Unicode 標準定義的字符。在 Unicode
      標準中,包括了以各種字符集定義的全部字符。使用Unicode數據類型,所戰勝的窨是使用非 Unicode 數據類型所佔用的窨大小的兩倍。 
        在 SQL Server 中,Unicode 數據以 Nchar、Nvarchar 和 Ntext
      數據類型存儲。使用這種字符類型存儲的列可以存儲多個字符集中的字符。當列的長度變化時,應該使用Nvarchar 字符類型,這時最多可以存儲 4000
      個字符。當列的長度固定不變時,應該使用 Nchar 字符類型,同樣,這時最多可以存儲4000 個字符。當使用 Ntext
      數據類型時,該列可以存儲多於 4000 個字符。 
      (4)日期和時間數據類型 

        日期和時間數據類型包括 Datetime 和 Smalldatetime兩種類型
        日期和時間數據類型由有效的日期和時間組成。例如,有效的日期和時間數據包括“4/01/98 12:15:00:00:00
      PM”和“1:28:29:15:01AM 8/17/98”。前一個數據類型是日期在前,時間在後一個數據類型是霎時間在前,日期在後。在
      Microsoft SQL Server中,日期和時間數據類型包括Datetime 和 Smalldatetime 兩種類型時,所存儲的日期範圍是從
      1753 年 1 月 1 日開始,到9999 年12 月 31 日結束(每一個值要求 8 個存儲字節)。使用 Smalldatetime
      數據類型時,所存儲的日期範圍是 1900年 1 月 1日 開始,到 2079 年 12 月 31 日結束(每一個值要求 4 個存儲字節)。
        日期的格式可以設定。設置日期格式的命令如下:
        Set DateFormat {format | @format _var|
        其中,format | @format_var 是日期的順序。有效的參數包括 MDY、DMY、YMD、YDM、MYD 和
      DYM。在默認情況下,日期格式爲MDY。
        例如,當執行 Set DateFormat YMD 之後,日期的格式爲年 月 日 形式;當執行 Set DateFormat DMY
      之後,日期的格式爲日 月有年 形式 
      (5)數字數據類型 

        數字數據只包含數字。數字數據類型包括正數和負數、小數(浮點數)和整數
        整數由正整數和負整數組成,例如 39、25、0-2 和 33967。在 Micrsoft SQL Server 中,整數存儲的數據類型是   
      Int,Smallint和 Tinyint。Int 數據類型存儲數據的範圍大於 Smallint 數據類型存儲數據的範圍,而 Smallint
      據類型存儲數據的範圍大於Tinyint 數據類型存儲數據的範圍。使用 Int 數據狗昔存儲數據的範圍是從 -2 147 483 648 到 2
      147 483 647(每一個值要求4個字節存儲空間)。使用 Smallint 數據類型時,存儲數據的範圍從 -32 768 到 32
      767(每一個值要求2個字節存儲空間)。使用Tinyint 數據類型時,存儲數據的範圍是從0 到255(每一個值要求1個字節存儲空間)。
        精確小婁數據在 SQL Server 中的數據類型是 Decimal 和 Numeric。這種數據所佔的存儲空間根據該數據的位數後的位數來確定。

        在SQL Server 中,近似小數數據的數據類型是 Float 和
      Real。例如,三分之一這個分數記作。3333333,當使用近似數據類型時能準確表示。因此,從系統中檢索到的數據可能與存儲在該列中數據不完全一樣。 

      (6)貨幣數據表示正的或者負的貨幣數量 。 

        在 Microsoft SQL Server 中,貨幣數據的數據類型是Money 和 Smallmoney 
        Money數據類型要求 8 個存儲字節,Smallmoney 數據類型要求 4 個存儲字節。 

      (7)特殊數據類型 

        特殊數據類型包括前面沒有提過的數據類型。特殊的數據類型有3種,即    Timestamp、Bit 和 Uniqueidentifier。
        Timestamp 用於表示SQL Server 活動的先後順序,以二進投影的格式表示。Timestamp
      數據與插入數據或者日期和時間沒有關係。
        Bit 由 1 或者 0 組成。當表示真或者假、ON 或者 OFF 時,使用 Bit
      數據類型。例如,詢問是否是每一次訪問的客戶機請求可以存儲在這種數據類型的列中。
        Uniqueidentifier 由 16
      字節的十六進制數字組成,表示一個全局唯一的。當表的記錄行要求唯一時,GUID是非常有用。例如,在客戶標識號列使用這種數據類型可以區別不同的客戶。 
      2.用戶定義的數據類型 

        用戶定義的數據類型基於在 Microsoft SQL Server
      中提供的數據類型。當幾個表中必須存儲同一種數據類型時,並且爲保證這些列有相同的數據類型、長度和可空性時,可以使用用戶定義的數據類型。例如,可定義一種稱爲
        postal_code 的數據類型,它基於 Char 數據類型。
        當創建用戶定義的數據類型時,必須提供三個數:數據類型的名稱、所基於的系統數據類型和數據類型的可空性。 
      (1)創建用戶定義的數據類型 

        創建用戶定義的數據類型可以使用 Transact-SQL 語句。系統存儲過程 sp_addtype
      可以來創建用戶定義的數據類型。其語法形式如下:
        sp_addtype {type},[,system_data_bype][,’null_type’]
        其中,type 是用戶定義的數據類型的名稱。system_data_type 是系統提供的數據類型,例如 Decimal、Int、Char
        等等。 null_type 表示該數據類型是如何處理空值的,必須使用單引號引起來,例如’NULL’、’NOT NULL’或者’NONULL’。
        例子:
        Use cust
        Exec sp_addtype ssn,’Varchar(11)’,"Not Null’
        創建一個用戶定義的數據類型 ssn,其基於的系統數據類型是變長爲11 的字符,不允許空。
        例子:
        Use cust
        Exec sp_addtype birthday,datetime,’Null’
        創建一個用戶定義的數據類型 birthday,其基於的系統數據類型是 DateTime,允許空。
        例子:
        Use master
        Exec sp_addtype telephone,’varchar(24),’Not Null’
        Eexc sp_addtype fax,’varchar(24)’,’Null’
        創建兩個數據類型,即 telephone 和 fax 
      (2)刪除用戶定義的數據類型 

        當用戶定義的數據類型不需要時,可刪除。刪除用戶定義的數據類型的命令是 sp_droptype {’type’}。
        例子:
        Use master
        Exec sp_droptype ’ssn’
        注意:當表中的列還正在使用用戶定義的數據類型時,或者在其上面還綁定有默認或者規則時,這種用戶定義的數據類型不能刪除。 
        以下爲SQL SERVER7.0以上版本的字段類型說明。SQL SERVER6.5的字段類型說明請參考SQL SERVER提供的說明。

      字段類型 描述 
      bit 0或1的整型數字 
      int 從-2^31(-2,147,483,648)到2^31(2,147,483,647)的整型數字 
      smallint 從-2^15(-32,768)到2^15(32,767)的整型數字 
      tinyint 從0到255的整型數字 

      decimal 從-10^38到10^38-1的定精度與有效位數的數字 
      numeric decimal的同義詞 

      money
      從-2^63(-922,337,203,685,477.5808)到2^63-1(922,337,203,685,477.5807)的貨幣數據,最小貨幣單位千分之十
      
      smallmoney 從-214,748.3648到214,748.3647的貨幣數據,最小貨幣單位千分之十 

      float 從-1.79E+308到1.79E+308可變精度的數字 
      real 從-3.04E+38到3.04E+38可變精度的數字 

      datetime 從1753年1月1日到9999年12日31的日期和時間數據,最小時間單位爲百分之三秒或3.33毫秒 
      smalldatetime 從1900年1月1日到2079年6月6日的日期和時間數據,最小時間單位爲分鐘 

      timestamp 時間戳,一個數據庫寬度的唯一數字 
      uniqueidentifier 全球唯一標識符GUID 

      char 定長非Unicode的字符型數據,最大長度爲8000 
      varchar 變長非Unicode的字符型數據,最大長度爲8000 
      text 變長非Unicode的字符型數據,最大長度爲2^31-1(2G) 

      nchar 定長Unicode的字符型數據,最大長度爲8000 
      nvarchar 變長Unicode的字符型數據,最大長度爲8000 
      ntext 變長Unicode的字符型數據,最大長度爲2^31-1(2G) 

      binary 定長二進制數據,最大長度爲8000 
      varbinary 變長二進制數據,最大長度爲8000 
      image 變長二進制數據,最大長度爲2^31-1(2G) 
      〉〉〉---------我想分頁!--這麼長的文章,在這裏來個分頁多好啊!哈哈----------〈〈〈
      《SQL語句的基本語法》

      一.Select語句的完整語法爲:
      Select[ALL|DISTINCT|DISTINCTROW|TOP]
      {*|talbe.*|[table.]field1[AS alias1][,[table.]field2[AS alias2][,…]]}
      FROM tableexpression[,…][IN externaldatabase]
      [Where…]
      [GROUP BY…]
      [HAVING…]
      [ORDER BY…]
      [WITH OWNERACCESS OPTION]
      說明:
      用中括號([])括起來的部分表示是可選的,用大括號({})括起來的部分是表示必須從中選擇其中的一個。

      1 FROM子句
      FROM子句指定了Select語句中字段的來源。FROM子句後面是包含一個或多個的表達式(由逗號分開),其中的表達式可爲單一表名稱、已保存的查詢或由
      INNER JOIN、LEFT JOIN 或 RIGHT JOIN 得到的複合結果。如果表或查詢存儲在外部數據庫,在IN 子句之後指明其完整路徑。
      例:下列SQL語句返回所有有定單的客戶:
      Select orderID,Customer.customerID
      FROM orders Customers
      Where orders.CustomerID=Customers.CustomeersID

      2 ALL、DISTINCT、DISTINCTROW、TOP謂詞
      (1) ALL 返回滿足SQL語句條件的所有記錄。如果沒有指明這個謂詞,默認爲ALL。
      例:Select ALL FirstName,LastName
      FROM Employees
      (2) DISTINCT 如果有多個記錄的選擇字段的數據相同,只返回一個。
      (3) DISTINCTROW 如果有重複的記錄,只返回一個
      (4) TOP顯示查詢頭尾若干記錄。也可返回記錄的百分比,這是要用 TOP N PERCENT子句(其中N 表示百分比)
      例:返回5%定貨額最大的定單
      Select TOP 5 PERCENT*
      FROM [ order Details]
      orDER BY UnitPrice*Quantity*(1-Discount) DESC

      3 用 AS 子句爲字段取別名
      如果想爲返回的列取一個新的標題,或者,經過對字段的計算或總結之後,產生了一個新的值,希望把它放到一個新的列裏顯示,則用AS保留。
      例:返回FirstName字段取別名爲NickName
      Select FirstName AS NickName ,LastName ,City
      FROM Employees
      例:返回新的一列顯示庫存價值
      Select ProductName ,UnitPrice ,UnitsInStock ,UnitPrice*UnitsInStock AS
      valueInStock
      FROM Products


      二 .Where 子句指定查詢條件

      1 比較運算符
      比較運算符 含義
      = 等於
      〉 大於
      〈 小於
      〉= 大於等於
      〈= 小於等於
      〈〉 不等於
      !〉 不大於
      !〈 不小於
      例:返回96年1月的定單
      Select orderID, CustomerID, orderDate
      FROM orders
      Where orderDate〉#1/1/96# AND orderDate〈#1/30/96#
      注意:
      Mcirosoft JET SQL
      中,日期用‘#’定界。日期也可以用Datevalue()函數來代替。在比較字符型的數據時,要加上單引號’’,尾空格在比較中被忽略。
      例:
      Where orderDate〉#96-1-1#
      也可以表示爲:
      Where orderDate〉Datevalue(‘1/1/96’)
      使用 NOT 表達式求反。
      例:查看96年1月1日以後的定單
      Where Not orderDate〈=#1/1/96#

      2 範圍(BETWEEN 和 NOT BETWEEN)
      BETWEEN …AND…運算符指定了要搜索的一個閉區間。
      例:返回96年1月到96年2月的定單。
      Where orderDate Between #1/1/96# And #2/1/96#

      3 列表(IN ,NOT IN)
      IN 運算符用來匹配列表中的任何一個值。IN子句可以代替用OR子句連接的一連串的條件。
      例:要找出住在 London、Paris或Berlin的所有客戶
      Select CustomerID, CompanyName, ContactName, City
      FROM Customers
      Where City In(‘London’,’ Paris’,’ Berlin’)

      4 模式匹配(LIKE)
      LIKE運算符檢驗一個包含字符串數據的字段值是否匹配一指定模式。
      LIKE運算符裏使用的通配符
      通配符 含義
      ? 任何一個單一的字符
      * 任意長度的字符
      # 0~9之間的單一數字
      [字符列表] 在字符列表裏的任一值
      [!字符列表] 不在字符列表裏的任一值
      - 指定字符範圍,兩邊的值分別爲其上下限
      例:返回郵政編碼在(171)555-0000到(171)555-9999之間的客戶
      Select CustomerID ,CompanyName,City,Phone
      FROM Customers
      Where Phone Like ‘(171)555-####’
      LIKE運算符的一些樣式及含義
      樣式 含義 不符合
      LIKE ‘A*’ A後跟任意長度的字符 Bc,c255
      LIKE’5 
      ’ 5*5 555
      LIKE’5?5’ 5與5之間有任意一個字符 55,5wer5
      LIKE’5##5’ 5235,5005 5kd5,5346
      LIKE’[a-z]’ a-z間的任意一個字符 5,%
      LIKE’[!0-9]’ 非0-9間的任意一個字符 0,1
      LIKE’[[]’ 1,*

      三 .用ORDER BY子句排序結果
      orDER子句按一個或多個(最多16個)字段排序查詢結果,可以是升序(ASC)也可以是降序(DESC),缺省是升序。ORDER子句通常放在SQL語句的最後。

      orDER子句中定義了多個字段,則按照字段的先後順序排序。
      例:
      Select ProductName,UnitPrice, UnitInStock
      FROM Products
      orDER BY UnitInStock DESC , UnitPrice DESC, ProductName 
      orDER BY 子句中可以用字段在選擇列表中的位置號代替字段名,可以混合字段名和位置號。
      例:下面的語句產生與上列相同的效果。
      Select ProductName,UnitPrice, UnitInStock
      FROM Products
      orDER BY 1 DESC , 2 DESC,3 

      四 .運用連接關係實現多表查詢
      例:找出同一個城市中供應商和客戶的名字
      Select Customers.CompanyName, Suppliers.ComPany.Name
      FROM Customers, Suppliers
      Where Customers.City=Suppliers.City
      例:找出產品庫存量大於同一種產品的定單的數量的產品和定單
      Select ProductName,OrderID, UnitInStock, Quantity
      FROM Products, [Order Deails]
      Where Product.productID=[Order Details].ProductID
      AND UnitsInStock〉Quantity
      另一種方法是用 Microsof JET SQL 獨有的 JNNER JOIN
      語法:
      FROM table1 INNER JOIN table2
      ON table1.field1 comparision table2.field2
      其中comparision 就是前面Where子句用到的比較運算符。
      Select FirstName,lastName,OrderID,CustomerID,OrderDate
      FROM Employees
      INNER JOIN orders ON Employees.EmployeeID=Orders.EmployeeID
      注意:
      INNER JOIN不能連接Memo OLE Object Single Double 數據類型字段。
      在一個JOIN語句中連接多個ON子句
      語法:
      Select fields
      FROM table1 INNER JOIN table2
      ON table1.field1 compopr table2.field1 AND
      ON table1.field2 compopr table2.field2 or
      ON table1.field3 compopr table2.field3
      也可以
      Select fields
      FROM table1 INNER JOIN
      (table2 INNER JOIN [( ]table3
      [INNER JOER] [( ]tablex[INNER JOIN]
      ON table1.field1 compopr table2.field1 
      ON table1.field2 compopr table2.field2 
      ON table1.field3 compopr table2.field3
      外部連接返回更多記錄,在結果中保留不匹配的記錄,不管存不存在滿足條件的記錄都要返回另一側的所有記錄。
      FROM table [LEFT|RIGHT]JOIN table2
      ON table1.field1comparision table.field2
      用左連接來建立外部連接,在表達式的左邊的表會顯示其所有的數據
      例:不管有沒有定貨量,返回所有商品
      Select ProductName ,OrderID
      FROM Products
      LEFT JOIN orders ON Products.PrductsID=Orders.ProductID
      右連接與左連接的差別在於:不管左側表裏有沒有匹配的記錄,它都從左側表中返回所有記錄。
      例:如果想了解客戶的信息,並統計各個地區的客戶分佈,這時可以用一個右連接,即使某個地區沒有客戶,也要返回客戶信息。
      空值不會相互匹配,可以通過外連接才能測試被連接的某個表的字段是否有空值。
      Select *
      FROM talbe1
      LEFT JOIN table2 ON table1.a=table2.c

      1 連接查詢中使用Iif函數實現以0值顯示空值
      Iif表達式: Iif(IsNull(Amount,0,Amout)
      例:無論定貨大於或小於¥50,都要返回一個標誌。
      Iif([Amount]〉50,?Big order?,?Small order?)

      五. 分組和總結查詢結果
      在SQL的語法裏,GROUP BY和HAVING子句用來對數據進行彙總。GROUP
      BY子句指明瞭按照哪幾個字段來分組,而將記錄分組後,用HAVING子句過濾這些記錄。
      GROUP BY 子句的語法
      Select fidldlist
      FROM table
      Where criteria
      [GROUP BY groupfieldlist [HAVING groupcriteria]]
      注:Microsoft Jet數據庫 Jet 不能對備註或OLE對象字段分組。
      GROUP BY字段中的Null值以備分組但是不能被省略。
      在任何SQL合計函數中不計算Null值。
      GROUP BY子句後最多可以帶有十個字段,排序優先級按從左到右的順序排列。
      例:在‘WA’地區的僱員表中按頭銜分組後,找出具有同等頭銜的僱員數目大於1人的所有頭銜。
      Select Title ,Count(Title) as Total
      FROM Employees
      Where Region = ‘WA’
      GROUP BY Title
      HAVING Count(Title)〉1
      JET SQL 中的聚積函數
      聚集函數 意義
      SUM ( ) 求和
      AVG ( ) 平均值
      COUNT ( ) 表達式中記錄的數目
      COUNT (* ) 計算記錄的數目
      MAX 最大值
      MIN 最小值
      VAR 方差
      STDEV 標準誤差
      FIRST 第一個值
      LAST 最後一個值

      六. 用Parameters聲明創建參數查詢
      Parameters聲明的語法:
      PARAMETERS name datatype[,name datatype[, …]]
      其中name 是參數的標誌符,可以通過標誌符引用參數.
      Datatype說明參數的數據類型.
      使用時要把PARAMETERS 聲明置於任何其他語句之前.
      例:
      PARAMETERS[Low price] Currency,[Beginning date]datatime
      Select orderID ,OrderAmount
      FROM orders
      Where orderAMount〉[low price]
      AND orderDate〉=[Beginning date]

      七. 功能查詢
      所謂功能查詢,實際上是一種操作查詢,它可以對數據庫進行快速高效的操作.它以選擇查詢爲目的,挑選出符合條件的數據,再對數據進行批處理.功能查詢包括更新查詢,刪除查詢,添加查詢,和生成表查詢.


      1 更新查詢
      Update子句可以同時更改一個或多個表中的數據.它也可以同時更改多個字段的值.
      更新查詢語法:
      Update 表名
      SET 新值
      Where 準則
      例:英國客戶的定貨量增加5%,貨運量增加3%
      Update OEDERS
      SET orderAmount = orderAmount *1.1
      Freight = Freight*1.03
      Where ShipCountry = ‘UK’

      2 刪除查詢
      Delete子句可以使用戶刪除大量的過時的或冗於的數據.
      注:刪除查詢的對象是整個記錄.
      Delete子句的語法:
      Delete [表名.*]
      FROM 來源表
      Where 準則
      例: 要刪除所有94年前的定單
      Delete *
      FROM orders
      Where orderData〈#94-1-1#

      3 追加查詢 
      Insert子句可以將一個或一組記錄追加到一個或多個表的尾部.
      INTO 子句指定接受新記錄的表
      valueS 關鍵字指定新記錄所包含的數據值.
      Insert 子句的語法:
      INSETR INTO 目的表或查詢(字段1,字段2,…)
      valueS(數值1,數值2,…)
      例:增加一個客戶
      Insert INTO Employees(FirstName,LastName,title)
      valueS(‘Harry’,’Washington’,’Trainee’)

      4 生成表查詢
      可以一次性地把所有滿足條件的記錄拷貝到一張新表中.通常製作記錄的備份或副本或作爲報表的基礎.
      Select INTO子句用來創建生成表查詢語法:
      Select 字段1,字段2,…
      INTO 新表[IN 外部數據庫]
      FROM 來源數據庫
      Where 準則
      例:爲定單製作一個存檔備份
      Select *
      INTO ordersArchive
      FROM orders

      八. 聯合查詢
      UNION運算可以把多個查詢的結果合併到一個結果集裏顯示.
      UNION運算的一般語法:
      [表]查詢1 UNION [ALL]查詢2 UNION …
      例:返回巴西所有供給商和客戶的名字和城市
      Select CompanyName,City
      FROM Suppliers
      Where Country = ‘Brazil’
      UNION
      Select CompanyName,City
      FROM Customers
      Where Country = ‘Brazil’
      注:
      缺省的情況下,UNION子句不返回重複的記錄.如果想顯示所有記錄,可以加ALL選項
      UNION運算要求查詢具有相同數目的字段.但是,字段數據類型不必相同.
      每一個查詢參數中可以使用GROUP BY 子句 或 HAVING
      子句進行分組.要想以指定的順序來顯示返回的數據,可以在最後一個查詢的尾部使用OREER BY子句.

      九. 交叉查詢
      交叉查詢可以對數據進行總和,平均,計數或其他總和計算法的計算,這些數據通過兩種信息進行分組:一個顯示在表的左部,另一個顯示在表的頂部.
      Microsoft Jet SQL 用TRANSFROM語句創建交叉表查詢語法:
      TRANSFORM aggfunction
      Select 語句
      GROUP BY 子句
      PIVOT pivotfield[IN(value1 [,value2[,…]]) ]
      Aggfounction指SQL聚積函數,
      Select語句選擇作爲標題的的字段,
      GROUP BY 分組
      說明:
      Pivotfield 在查詢結果集中創建列標題時用的字段或表達式,用可選的IN子句限制它的取值.
      value代表創建列標題的固定值.
      例:顯示在1996年裏每一季度每一位員工所接的定單的數目:
      TRANSFORM Count(OrderID)
      Select FirstName&’’&LastName AS FullName
      FROM Employees INNER JOIN orders
      ON Employees.EmployeeID = orders.EmployeeID
      Where DatePart(“yyyy”,OrderDate)= ‘1996’
      GROUP BY FirstName&’’&LastName
      orDER BY FirstName&’’&LastName
      POVOT DatePart(“q”,OrderDate)&’季度’

      十 .子查詢
      子查詢可以理解爲 套查詢.子查詢是一個Select語句.

      1 表達式的值與子查詢返回的單一值做比較
      語法: 
      表達式 comparision [ANY|ALL|SOME](子查詢)
      說明:
      ANY和SOME謂詞是同義詞,與比較運算符(=,〈,〉,〈〉,〈=,〉=)一起使用.返回一個布爾值True或False.ANY的意思是,表達式與子查詢返回的一系列的值逐一比較,只要其中的一次比較產生True結果,ANY測試的返回
      True值(既Where子句的結果),對應於該表達式的當前記錄將進入主查詢的結果中.ALL測試則要求表達式與子查詢返回的一系列的值的比較都產生True結果,纔回返回True值.

      例:主查詢返回單價比任何一個折扣大於等於25%的產品的單價要高的所有產品
      Select * FROM Products
      Where UnitPrice〉ANY
      (Select UnitPrice FROM[Order Details] Where Discount〉0.25)

      2 檢查表達式的值是否匹配子查詢返回的一組值的某個值
      語法:
      [NOT]IN(子查詢)
      例:返回庫存價值大於等於1000的產品.
      Select ProductName FROM Products
      Where ProductID IN
      (Select PrdoctID FROM [Order DEtails]
      Where UnitPrice*Quantity〉= 1000)

      3檢測子查詢是否返回任何記錄
      語法:
      [NOT]EXISTS (子查詢)
      例:用EXISTS檢索英國的客戶
      Select ComPanyName,ContactName
      FROM orders
      Where EXISTS
      (Select *
      FROM Customers
      Where Country = ‘UK’ AND
      Customers.CustomerID= orders.CustomerID)
      〉〉〉---------我想分頁!--這麼長的文章,在這裏來個分頁多好啊!哈哈----------〈〈〈
      Sql Server 和 Access 操作數據庫結構Sql語句
      下面是Sql Server 和 Access 操作數據庫結構的常用Sql,希望對你有所幫助。
      內容由海娃整理,不正確與不完整之處還請提出,謝謝。

      新建表:
      create table [表名]
      (
      [自動編號字段] int IDENTITY (1,1) PRIMARY KEY ,
      [字段1] nVarChar(50) default ’默認值’ null ,
      [字段2] ntext null ,
      [字段3] datetime,
      [字段4] money null ,
      [字段5] int default 0,
      [字段6] Decimal (12,4) default 0,
      [字段7] image null ,
      )

      刪除表:
      Drop table [表名]

      插入數據:
      Insert INTO [表名] (字段1,字段2) VALUES (100,’51WINDOWS.NET’)

      刪除數據:
      Delete FROM [表名] Where [字段名]〉100

      更新數據:
      Update [表名] SET [字段1] = 200,[字段2] = ’51WINDOWS.NET’ Where [字段三] = ’HAIWA’

      新增字段:
      Alter TABLE [表名] ADD [字段名] NVARCHAR (50) NULL

      刪除字段:
      Alter TABLE [表名] Drop COLUMN [字段名]

      修改字段:
      Alter TABLE [表名] Alter COLUMN [字段名] NVARCHAR (50) NULL

      重命名錶:(Access 重命名錶,請參考文章:在Access數據庫中重命名錶)


       引用來自 在Access數據庫中重命名錶

      Dim Conn,ConnStr,oCat,oTbl
      ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
      Server.MapPath("data.mdb")
      Set oCat=Server.CreateObject("ADOX.Catalog") 
      oCat.ActiveConnection = ConnStr

      Set oTbl = Server.CreateObject("ADOX.Table")
      Set oTbl = oCat.Tables("OldTable") ’要重命名的表名:OldTable
      oTbl.Name = "NewTable" ’新表名
      Set oCat = Nothing
      Set oTbl = Nothing


      sp_rename ’表名’, ’新表名’, ’OBJECT’

      新建約束:
      Alter TABLE [表名] ADD CONSTRAINT 約束名 CHECK ([約束字段] 〈= ’2000-1-1’)

      刪除約束:
      Alter TABLE [表名] Drop CONSTRAINT 約束名

      新建默認值
      Alter TABLE [表名] ADD CONSTRAINT 默認值名 DEFAULT ’51WINDOWS.NET’ FOR [字段名]

      刪除默認值
      Alter TABLE [表名] Drop CONSTRAINT 默認值名

      刪除Sql Server 中的日誌,減小數據庫文件大小
      dump transaction 數據庫名 with no_log
      backup log 數據庫名 with no_log
      dbcc shrinkdatabase(數據庫名)
      exec sp_dboption ’數據庫名’, ’autoshrink’, ’true’

      
      【摘要】 select *(列名) from table_name(表名) where column_name operator value
      ex:(宿主) select * from stock_information where stockid = str(nid) stockname
      = ‘str_name‘ stockname like ‘% find this %‘ stockname like ‘[a-zA-Z]%‘
      --------- ([]指定值的範圍) stockname like ‘[^F-M]%‘ --------- (^排除指定範圍)

      SQL語句大全

      --語 句 功 能
      --數據操作
      SELECT --從數據庫表中檢索數據行和列
      INSERT --向數據庫表添加新數據行
      DELETE --從數據庫表中刪除數據行
      UPDATE --更新數據庫表中的數據
      --數據定義
      CREATE TABLE --創建一個數據庫表
      DROP TABLE --從數據庫中刪除表
      ALTER TABLE --修改數據庫表結構
      CREATE VIEW --創建一個視圖
      DROP VIEW --從數據庫中刪除視圖
      CREATE INDEX --爲數據庫表創建一個索引
      DROP INDEX --從數據庫中刪除索引
      CREATE PROCEDURE --創建一個存儲過程
      DROP PROCEDURE --從數據庫中刪除存儲過程
      CREATE TRIGGER --創建一個觸發器
      DROP TRIGGER --從數據庫中刪除觸發器
      CREATE SCHEMA --向數據庫添加一個新模式
      DROP SCHEMA --從數據庫中刪除一個模式
      CREATE DOMAIN --創建一個數據值域
      ALTER DOMAIN --改變域定義
      DROP DOMAIN --從數據庫中刪除一個域
      --數據控制
      GRANT --授予用戶訪問權限
      DENY --拒絕用戶訪問
      REVOKE --解除用戶訪問權限
      --事務控制
      COMMIT --結束當前事務
      ROLLBACK --中止當前事務
      SET TRANSACTION --定義當前事務數據訪問特徵
      --程序化SQL
      DECLARE --爲查詢設定遊標
      EXPLAN --爲查詢描述數據訪問計劃
      OPEN --檢索查詢結果打開一個遊標
      FETCH --檢索一行查詢結果
      CLOSE --關閉遊標
      PREPARE --爲動態執行準備SQL 語句
      EXECUTE --動態地執行SQL 語句
      DESCRIBE --描述準備好的查詢
      ---局部變量
      declare @id char(10)
      --set @id = ‘10010001‘
      select @id = ‘10010001‘
      ---全局變量
      ---必須以@@開頭

      --IF ELSE
      declare @x int @y int @z int
      select @x = 1 @y = 2 @z=3
      if @x > @y
      print ‘x > y‘ --打印字符串‘x > y‘
      else if @y > @z
      print ‘y > z‘
      else print ‘z > y‘

      --CASE
      use pangu
      update employee
      set e_wage =
      case
      when job_level = ’1’ then e_wage*1.08
      when job_level = ’2’ then e_wage*1.07
      when job_level = ’3’ then e_wage*1.06
      else e_wage*1.05
      end

      --WHILE CONTINUE BREAK
      declare @x int @y int @c int
      select @x = 1 @y=1
      while @x < 3
      begin
      print @x --打印變量x 的值
      while @y < 3
      begin
      select @c = 100*@x + @y
      print @c --打印變量c 的值
      select @y = @y + 1
      end
      select @x = @x + 1
      select @y = 1
      end

      --WAITFOR
      --例 等待1 小時2 分零3 秒後才執行SELECT 語句
      waitfor delay ’01:02:03’
      select * from employee
      --例 等到晚上11 點零8 分後才執行SELECT 語句
      waitfor time ’23:08:00’
      select * from employee


      ***SELECT***

      select *(列名) from table_name(表名) where column_name operator value
      ex:(宿主)
      select * from stock_information where stockid = str(nid)
      stockname = ‘str_name‘
      stockname like ‘% find this %‘
      stockname like ‘[a-zA-Z]%‘ --------- ([]指定值的範圍)
      stockname like ‘[^F-M]%‘ --------- (^排除指定範圍)
      --------- 只能在使用like關鍵字的where子句中使用通配符)
      or stockpath = ‘stock_path‘
      or stocknumber < 1000
      and stockindex = 24
      not stocksex = ‘man‘
      stocknumber between 20 and 100
      stocknumber in(10,20,30)
      order by stockid desc(asc) --------- 排序,desc-降序,asc-升序
      order by 1,2 --------- by列號
      stockname = (select stockname from stock_information where stockid = 4)
      --------- 子查詢
      --------- 除非能確保內層select只返回一個行的值,
      --------- 否則應在外層where子句中用一個in限定符
      select distinct column_name form table_name ---------
distinct指定檢索獨有的列值,不重複
      select stocknumber ,"stocknumber + 10" = stocknumber + 10 from table_name
      select stockname , "stocknumber" = count(*) from table_name group by
      stockname
      --------- group by 將表按行分組,指定列中有相同的值
      having count(*) = 2 --------- having選定指定的組

      select *
      from table1, table2
      where table1.id *= table2.id -------- 左外部連接,table1中有的而table2中沒有得以null表示
      table1.id =* table2.id -------- 右外部連接

      select stockname from table1
      union [all] ----- union合併查詢結果集,all-保留重複行
      select stockname from table2

      ***insert***

      insert into table_name (Stock_name,Stock_number) value ("xxx","xxxx")
      value (select Stockname , Stocknumber from Stock_table2)---value爲select語句

      ***update***

      update table_name set Stockname = "xxx" [where Stockid = 3]
      Stockname = default
      Stockname = null
      Stocknumber = Stockname + 4

      ***delete***

      delete from table_name where Stockid = 3
      truncate table_name ----------- 刪除表中所有行,仍保持表的完整性
      drop table table_name --------------- 完全刪除表

      ***alter table*** --- 修改數據庫表結構

      alter table database.owner.table_name add column_name char(2) null .....
      sp_help table_name ---- 顯示錶已有特徵
      create table table_name (name char(20), age smallint, lname varchar(30))
      insert into table_name select ......... ----- 實現刪除列的方法(創建新表)
      alter table table_name drop constraint Stockname_default ----
      刪除Stockname的default約束

      ***function(/*常用函數*/)***

      ----統計函數----
      AVG --求平均值
      COUNT --統計數目
      MAX --求最大值
      MIN --求最小值
      SUM --求和

      --AVG
      use pangu
      select avg(e_wage) as dept_avgWage
      from employee
      group by dept_id

      --MAX
      --求工資最高的員工姓名
      use pangu
      select e_name
      from employee
      where e_wage =
      (select max(e_wage)
      from employee)

      --STDEV()
      --STDEV()函數返回表達式中所有數據的標準差

      --STDEVP()
      --STDEVP()函數返回總體標準差

      --VAR()
      --VAR()函數返回表達式中所有值的統計變異數

      --VARP()
      --VARP()函數返回總體變異數

      ----算術函數----

      /***三角函數***/
      SIN(float_expression) --返回以弧度表示的角的正弦
      COS(float_expression) --返回以弧度表示的角的餘弦
      TAN(float_expression) --返回以弧度表示的角的正切
      COT(float_expression) --返回以弧度表示的角的餘切
      /***反三角函數***/
      ASIN(float_expression) --返回正弦是FLOAT 值的以弧度表示的角
      ACOS(float_expression) --返回餘弦是FLOAT 值的以弧度表示的角
      ATAN(float_expression) --返回正切是FLOAT 值的以弧度表示的角
      ATAN2(float_expression1,float_expression2)
      --返回正切是float_expression1 /float_expres-sion2的以弧度表示的角
      DEGREES(numeric_expression)
      --把弧度轉換爲角度返回與表達式相同的數據類型可爲
      --INTEGER/MONEY/REAL/FLOAT 類型
      RADIANS(numeric_expression) --把角度轉換爲弧度返回與表達式相同的數據類型可爲
      --INTEGER/MONEY/REAL/FLOAT 類型
      EXP(float_expression) --返回表達式的指數值
      LOG(float_expression) --返回表達式的自然對數值
      LOG10(float_expression)--返回表達式的以10 爲底的對數值
      SQRT(float_expression) --返回表達式的平方根
      /***取近似值函數***/
      CEILING(numeric_expression) --返回>=表達式的最小整數返回的數據類型與表達式相同可爲
      --INTEGER/MONEY/REAL/FLOAT 類型
      FLOOR(numeric_expression) --返回<=表達式的最小整數返回的數據類型與表達式相同可爲
      --INTEGER/MONEY/REAL/FLOAT 類型
      ROUND(numeric_expression) --返回以integer_expression 爲精度的四捨五入值返回的數據
      --類型與表達式相同可爲INTEGER/MONEY/REAL/FLOAT 類型
      ABS(numeric_expression) --返回表達式的絕對值返回的數據類型與表達式相同可爲
      --INTEGER/MONEY/REAL/FLOAT 類型
      SIGN(numeric_expression) --測試參數的正負號返回0 零值1 正數或-1 負數返回的數據類型
      --與表達式相同可爲INTEGER/MONEY/REAL/FLOAT 類型
      PI() --返回值爲π 即3.1415926535897936
      RAND([integer_expression]) --用任選的[integer_expression]做種子值得出0-1 間的隨機浮點數


      ----字符串函數----
      ASCII() --函數返回字符表達式最左端字符的ASCII 碼值
      CHAR() --函數用於將ASCII 碼轉換爲字符
      --如果沒有輸入0 ~ 255 之間的ASCII 碼值CHAR 函數會返回一個NULL 值
      LOWER() --函數把字符串全部轉換爲小寫
      UPPER() --函數把字符串全部轉換爲大寫
      STR() --函數把數值型數據轉換爲字符型數據
      LTRIM() --函數把字符串頭部的空格去掉
      RTRIM() --函數把字符串尾部的空格去掉
      LEFT(),RIGHT(),SUBSTRING() --函數返回部分字符串
      CHARINDEX(),PATINDEX() --函數返回字符串中某個指定的子串出現的開始位置
      SOUNDEX() --函數返回一個四位字符碼
      --SOUNDEX函數可用來查找聲音相似的字符串但SOUNDEX函數對數字和漢字均只返回0 值
      DIFFERENCE() --函數返回由SOUNDEX 函數返回的兩個字符表達式的值的差異
      --0 兩個SOUNDEX 函數返回值的第一個字符不同
      --1 兩個SOUNDEX 函數返回值的第一個字符相同
      --2 兩個SOUNDEX 函數返回值的第一二個字符相同
      --3 兩個SOUNDEX 函數返回值的第一二三個字符相同
      --4 兩個SOUNDEX 函數返回值完全相同


      QUOTENAME() --函數返回被特定字符括起來的字符串
      /*select quotename(‘abc‘, ‘{‘) quotename(‘abc‘)
      運行結果如下
      ----------------------------------{
      {abc} [abc]*/

      REPLICATE() --函數返回一個重複character_expression 指定次數的字符串
      /*select replicate(‘abc‘, 3) replicate( ‘abc‘, -2)
      運行結果如下
      ----------- -----------
      abcabcabc NULL*/

      REVERSE() --函數將指定的字符串的字符排列順序顛倒
      REPLACE() --函數返回被替換了指定子串的字符串
      /*select replace(‘abc123g‘, ‘123‘, ‘def‘)
      運行結果如下
      ----------- -----------
      abcdefg*/

      SPACE() --函數返回一個有指定長度的空白字符串
      STUFF() --函數用另一子串替換字符串指定位置長度的子串


      ----數據類型轉換函數----
      CAST() 函數語法如下
      CAST() (<expression> AS <data_ type>[ length ])
      CONVERT() 函數語法如下
      CONVERT() (<data_ type>[ length ], <expression> [, style])

      select cast(100+99 as char) convert(varchar(12), getdate())
      運行結果如下
      ------------------------------ ------------
      199 Jan 15 2000

      ----日期函數----
      DAY() --函數返回date_expression 中的日期值
      MONTH() --函數返回date_expression 中的月份值
      YEAR() --函數返回date_expression 中的年份值
      DATEADD(<datepart> ,<number> ,<date>)
      --函數返回指定日期date 加上指定的額外日期間隔number 產生的新日期
      DATEDIFF(<datepart> ,<number> ,<date>)
      --函數返回兩個指定日期在datepart 方面的不同之處
      DATENAME(<datepart> , <date>) --函數以字符串的形式返回日期的指定部分
      DATEPART(<datepart> , <date>) --函數以整數值的形式返回日期的指定部分
      GETDATE() --函數以DATETIME 的缺省格式返回系統當前的日期和時間

      ----系統函數----
      APP_NAME() --函數返回當前執行的應用程序的名稱
      COALESCE() --函數返回衆多表達式中第一個非NULL 表達式的值
      COL_LENGTH(<‘table_name‘>, <‘column_name‘>) --函數返回表中指定字段的長度值
      COL_NAME(<table_id>, <column_id>) --函數返回表中指定字段的名稱即列名
      DATALENGTH() --函數返回數據表達式的數據的實際長度
      DB_ID([‘database_name‘]) --函數返回數據庫的編號
      DB_NAME(database_id) --函數返回數據庫的名稱
      HOST_ID() --函數返回服務器端計算機的名稱
      HOST_NAME() --函數返回服務器端計算機的名稱
      IDENTITY(<data_type>[, seed increment]) [AS column_name])
      --IDENTITY() 函數只在SELECT INTO 語句中使用用於插入一個identity column列到新表中
      /*select identity(int, 1, 1) as column_name
      into newtable
      from oldtable*/
      ISDATE() --函數判斷所給定的表達式是否爲合理日期
      ISNULL(<check_expression>, <replacement_value>) --函數將表達式中的NULL 值用指定值替換
      ISNUMERIC() --函數判斷所給定的表達式是否爲合理的數值
      NEWID() --函數返回一個UNIQUEIDENTIFIER 類型的數值
      NULLIF(<expression1>, <expression2>)
      --NULLIF 函數在expression1 與expression2 相等時返回NULL 值若不相等時則返回expression1 的值

 

      --------------------------------------------------------------------------------

      sql中的保留字

      action add aggregate all
      alter after and as
      asc avg avg_row_length auto_increment
      between bigint bit binary
      blob bool both by
      cascade case char character
      change check checksum column
      columns comment constraint create
      cross current_date current_time current_timestamp
      data database databases date
      datetime day day_hour day_minute
      day_second dayofmonth dayofweek dayofyear
      dec decimal default delayed
      delay_key_write delete desc describe
      distinct distinctrow double drop
      end else escape escaped
      enclosed enum explain exists
      fields file first float
      float4 float8 flush foreign
      from for full function
      global grant grants group
      having heap high_priority hour
      hour_minute hour_second hosts identified
      ignore in index infile
      inner insert insert_id int
      integer interval int1 int2
      int3 int4 int8 into
      if is isam join
      key keys kill last_insert_id
      leading left length like
      lines limit load local
      lock logs long longblob
      longtext low_priority max max_rows
      match mediumblob mediumtext mediumint
      middleint min_rows minute minute_second
      modify month monthname myisam
      natural numeric no not
      null on optimize option
      optionally or order outer
      outfile pack_keys partial password
      precision primary procedure process
      processlist privileges read real
      references reload regexp rename
      replace restrict returns revoke
      rlike row rows second
      select set show shutdown
      smallint soname sql_big_tables sql_big_selects
      sql_low_priority_updates sql_log_off sql_log_update sql_select_limit
      sql_small_result sql_big_result sql_warnings straight_join
      starting status string table
      tables temporary terminated text
      then time timestamp tinyblob
      tinytext tinyint trailing to
      type use using unique
      unlock unsigned update usage
      values varchar variables varying
      varbinary with write when
      where year year_month zerofill

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章