標題標題  顯示論壇會員列表名單  搜索論壇搜索  HelpHelp
  注冊注冊  登入登入
電腦綜合討論區
 DoReMe : 電腦綜合討論區
主題 話題: SQL語法參考手冊 回復發表新主題
作者
貼子內容 << Prev Topic下一個主題 >>
bababa
Groupie
Groupie


加入: 2004/5月/29
Online Status: Offline
回復: 46
Posted: 2004/5月/29 3:24下午 | IP記錄 引用 bababa

DB2 提供了關連式資料庫的查詢語言 SQL (Structured Query Language),是一種非常口語化、既易學又易懂的語法。 此一語言幾乎是每個資料庫系統都必須提供的,用以表示關連式的操作,包含了資料的定義(DDL)以及資料的處理(DML)。SQ L原來拼成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)
    資料定義好之後接下來的就是資料的操作。資料的操作不外乎增加資料(inse rt)、查詢資料(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_na me 的特定欄位資料全部列出來  
        SELECT *
        FROM table_name  
        WHERE column1 = xxx  
        [AND column2 > yyy] [OR column3 <> zzz]  
        說明: &nb sp;
             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  
        說明: &nb sp;
             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')  
Back to Top 查看 bababa's 資料 搜索其他貼子 bababa 訪問 bababa's
 

如果你想回復的話你必須首先 login
如果你還沒有注冊的話你必須首先 注冊

  回復發表新主題
顯示可打印的頁面 顯示可打印的頁面

論壇跳轉
不能 張貼新論題在這個討論版
不能 回應論題在這個討論版
不能 刪除你的發言在這個討論版
不能 編輯你的發言在這個討論版
不能 新增投票標題在這個討論版
不能 在這個討論版投票

Edit by doreme Forums version 2004
Welcome ©2001-2004 doreme Guide

This page was generated in 0.8750 seconds.

 
保養品
保養品, Skin Care
www.elady.tw
Makeups Wholesale
Wholesale Cosmetics SkinCares
lungjyi.com
保養品批發
名牌保養品、保養品批發
www.perfume.com.tw/skincare
Wholesale Perfumes
Fragrances Perfumes Wholesale
lungjyi.net