• 沒有找到結果。

2 文獻探討

2.1 結構化查詢語言

2.1.1 SQL 語言的興起與語法標準

SQL(Structure Query Language)全名為結構化查詢語言,是與資料庫溝通 的基礎,一切的指令對資料庫引擎而言,最終都要以 SQL 呈現[21]。SQL 語言 是在 1970 年代晚期,由 IBM 公司在美國加州聖荷西(San Jose)的研究單位所發展 出來的一套程式語言,當時是使用於 DB2 關聯式資料庫系統中。直到 1981 年,

IBM 推出第一套商業用途的 SQL/DS 關聯式資料庫,再加上 Oracle 與其它業者 也陸續推出許多種關聯式資料庫管理系統,才使得 SQL 語言被廣泛使用[19]。

SQL 的語法標準有「業界標準」與「ANSI SQL 標準」之分。關聯式資料庫 百家爭鳴,各家公司都可能有各自的 SQL 語法或是定義不同的資料型別,為了 避免各產品之間 SQL 語法不相容,形成多頭馬車的狀況,因此由 ANSI(American National Standards Institute,美國國家標準局)制定出 ANSI SQL-92,以定義出 SQL 的關鍵字與語法標準。其後更陸續發展出 SQL-99,及目前最新版的 SQL-2003。

大體而言,業界的產品都是包含 ANSI SQL 的基礎下,再擴充自家產品的功能,

以求能展現出本身的特色[19]。本研究於程式原始碼中剖析的資料存取操作 SQL 語法,即新增(INSERT)、修改(UPDATE)及刪除(DELETE)等 SQL 語句語法[16],

本系統剖析的語法是屬於最基礎的 SQL 語法,各家對此都是使用相同的標準語 法,詳細的 SQL 敘述將於以下 2.1.4(新增、修改、刪除的 SQL 語法)說明。

2.1.2 關鍵字、子句與敘述

SQL 語法的基礎是子句(clause),子句中會包括一些關鍵字(keyword)。關鍵

字是對資料庫有特別意義的字,例如與存取資料相關的 SQL 關鍵字[15]

有”INSERT”、”INTO”、”UPDATE”、”SET”、”DELETE”、”FROM”、”WHERE”

等等。至於敘述(statement)則是指一組可產生存取資料庫結果的子句集合。例如:

UPDATE 員工資料表 這是一個 UPDATE 子句,使用到 UPDATE 關鍵字 SET 部門=’研發部’ 這是一個 SET 子句,使用到 SET 關鍵字

WHERE 員工姓名=’張三’ 這是一個 WHERE 子句,使用到 WHERE 關鍵字 以上三行子句組合起來便成為一個敘述,其作用是,更新(UPDATE) ”張三” 這 名員工的員工資料表,將其部門改為”研發部”。

2.1.3 SQL 的分類

SQL 語法中的敘述,依用途可分為以下三大類[14]:

2.1.3.1 資料定義語言(Data Definition Language, DDL)

凡是用來定義(或建立)資料庫物件,以及修改資料庫物件結構的 SQL 敘述,

都屬於資料定義語言,包含了對資料庫及資料庫物件的建立與刪除指令以及更改 表格及對表格加入整合性限制指令。例如包括 CREATE、ALTER、DROP 等命令 的 SQL 敘述。

2.1.3.2 資料操作語言(Data Manipulation Language, DML)

SQL 語法中用來做資料處理的敘述屬於資料操作這一類,即由一些對指定 表格選取(SELECT)、新增(INSERT)、修改(UPDATE)及刪除(DELETE)四種命令 所組成。而本研究所擷取的關鍵字即屬此類中會對資料造成異動的新增、修改及 刪除三種命令。將於下一小節就這三種 SQL 敘述的語法做更詳細的說明。

2.1.3.3 資料控制語言(Data Control Language, DCL)

一些專門用來設定資料庫物件(資料表、檢視表、預存程序等)使用權限的

SQL 敘述,屬於資料控制語言,即由一些控制資料安全、保密及並行處理的命 令所組成。例如 GRANT(允許)、DENY(拒絕)、REVOKE(取消權限設定)等。

2.1.4 新增、修改、刪除的 SQL 語法

2.1.4.1 新增資料

INSERT 敘述的基本語法如下:

INSERT [INTO] tablename [(column list)] VALUES (data values) tablename:欲新增的資料表名稱。

column_list:列出欲輸入值的欄位名稱,欄位名稱之間用逗號分隔。若沒有指定 任何欄位,則表示資料表中的所有欄位。

data values:列出欲填入欄位中的值,值與值之間須用逗號隔開。此處必須與 column_list 互相對應。

2.1.4.2 修改資料

UPDATE 敘述的語法如下:

UPDATE tablename SET {column_name={expression | DEFAULT | NULL}}[,…n]

[WHERE search_condition]

column_name:欲更新的欄位名稱。

Expression:指定新的欄位值,expression 可以是一個常數、運算式、變數…等。

DEFAULT:可將 column_name 的欄位值重設為預設值。

NULL:可將 column_name 的欄位值重設為 NULL。

2.1.4.3 刪除資料

DELETE 敘述的語法如下:

DELETE [FROM] tablename [WHERE search_condition]

tablename:欲刪除的資料表名稱。

相關文件