gembin

          OSGi, Eclipse Equinox, ECF, Virgo, Gemini, Apache Felix, Karaf, Aires, Camel, Eclipse RCP

          HBase, Hadoop, ZooKeeper, Cassandra

          Flex4, AS3, Swiz framework, GraniteDS, BlazeDS etc.

          There is nothing that software can't fix. Unfortunately, there is also nothing that software can't completely fuck up. That gap is called talent.

          About Me

           

          SQL語法參考手冊

           
           
          SQL (Structured Query Language),是一種非常口語化、既易學又易懂的語法。此一語言幾乎是每個資料庫系統都必須提供的,用以表示關連式的操作,包含了資料的定義(DDL)以及資料的處理(DML)。SQL原來拼成SEQUEL,這語言的原型以“系統 R“的名字在 IBM 圣荷西實驗室完成,經過IBM內部及其他的許多使用性及效率測試,其結果相當令人滿意,并決定在系統R 的技術基礎發展出來 IBM 的產品。而且美國國家標準學會(ANSI)及國際標準化組織(ISO)在1987遵循一個幾乎是以 IBM SQL 為基礎的標準關連式資料語言定義。

          一、資料定義 DDL(Data Definition Language)
          資料定語言是指對資料的格式和形態下定義的語言,他是每個資料庫要建立時候時首先要面對的,舉凡資料分哪些表格關系、表格內的有什麼欄位主鍵、表格和表格之間互相參考的關系等等,都是在開始的時候所必須規劃好的。

          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')  

          posted on 2007-09-21 11:26 gembin 閱讀(945) 評論(1)  編輯  收藏

          評論

          # re: SQL語法參考手冊 2007-09-22 00:12 千里冰封

          不錯,有時間好好研究一下  回復  更多評論   


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

          統計

          常用鏈接

          留言簿(6)

          隨筆分類(440)

          隨筆檔案(378)

          文章檔案(6)

          新聞檔案(1)

          相冊

          收藏夾(9)

          Adobe

          Android

          AS3

          Blog-Links

          Build

          Design Pattern

          Eclipse

          Favorite Links

          Flickr

          Game Dev

          HBase

          Identity Management

          IT resources

          JEE

          Language

          OpenID

          OSGi

          SOA

          Version Control

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          free counters
          主站蜘蛛池模板: 天等县| 洪泽县| 达尔| 南投市| 汉中市| 大新县| 卢龙县| 高安市| 大冶市| 区。| 高清| 赤峰市| 嘉鱼县| 广东省| 乐昌市| 云龙县| 读书| 淳安县| 金华市| 菏泽市| 呼和浩特市| 民县| 梅河口市| 鄂托克旗| 班玛县| 广东省| 泰州市| 南投市| 咸丰县| 嫩江县| 循化| 永济市| 清镇市| 保德县| 诸城市| 来宾市| 定结县| 大港区| 辽宁省| 鞍山市| 锦州市|