SQL

來自維基學院

SQL(Structured Query Language),結構化查詢語言。SQL與資料庫兩者很大關聯,可以將資料庫比擬為電腦儲存資料的倉庫,而SQL就是倉庫物料的標籤與專業溝通名詞,也就是說SQL是應用程式與資料庫之間溝通的語言,而且SQL通常就是指某種資料庫系統。

SQL概述[編輯 | 編輯原始碼]

SQL語言的主要功能就是同各種數據庫建立聯繫,進行溝通。按照ANSI(美國國家標準協會)的規定,SQL被作為關係型數據庫管理系統的標準語言。SQL語句可以用來執行各種各樣的操作,例如更新數據庫中的數據,從數據庫中提取數據等。絕大多數流行的關係型數據庫管理系統都採用了SQL語言標準。雖然很多數據庫都對SQL語句進行了再開發和擴展,但是包括Select, Insert, Update, Delete, Create,以及Drop在內的標準的SQL命令仍然可以被用來完成幾乎所有的數據庫操作。

舉個簡單的例子,若資料庫建里起一個名為CLIENT客戶資料表,並且有一個名為 AREA代表「地區」的欄位,如果程式需要列出所有在New York的客戶,那麼程式就要下一段 SQL 命令給資料庫:

SELECT * FROM CLIENT WHERE AREA='New York'

上述QL 送到資料庫後,經資料庫系統解譯其意義,然後取出對應的資料,傳送回下達命令的電腦端。   再舉個例子:

UPDATE CLIENT SET TEL='5'+TEL WHERE AREA LIKE '新竹%'

相信可以看出它是用來把所有新竹縣市的客戶的電話號碼前面加一個『5』字,請注意,所有程式語言的「=」與數學的「等於」是不同意義的。 看起來很簡單易懂,但是SQL是個好上手但難以精通的工具,在實際應用上,經常會碰到許多難解的問題考驗著開發人員的智力與耐力。


RDB與NoSQL[編輯 | 編輯原始碼]

列(屬性Attribute)和行(值組Tuple)的形式

關聯式資料庫(Relational database,RDB),是建立在關聯模型基礎上的資料庫,藉助於集合代數等數學概念和方法來處理資料庫中的資料。 表(關聯Relation)是以行(值組Tuple)和列(屬性Attribute)的形式組織起來的數據的集合。一個數據庫包括一個或多個表(關聯Relation)。例如,可能有一個有關作者信息的名為authors的表(關聯Relation)。每列(屬性Attribute)都包含特定類型的信息,如作者的姓氏。每行(值組Tuple)都包含有關特定作者的所有信息:姓、名、住址等等。在關係型數據庫當中一個表(關聯Relation)就是一個關係,一個關係數據庫可以包含多個表(關聯Relation)。

非關聯式資料庫(NOSQL)是對不同於傳統的關聯式資料庫的資料庫管理系統的統稱。允許部分資料使用SQL系統儲存,而其他資料允許使用NOSQL系統儲存。其數據儲存可以不需要固定的表格模式以及元資料(metadata),也經常會避免使用SQL的JOIN操作,一般有水平可延伸性的特徵。

SQL指令類別[編輯 | 編輯原始碼]

資料定義語言[編輯 | 編輯原始碼]

SQL資料定義語言(data definition language,DDL)屬於DBMS語言的一種,為SQL語言集中負責資料結構定義與資料庫物件定義的語言,由CREATEALTERDROP三個語法所組成。


資料操縱語言[編輯 | 編輯原始碼]

SQL資料操縱語言(Data Manipulation Language,DML)是用於資料庫操作,對資料庫其中的物件和資料執行存取工作的編程語句,通常是資料庫專用編程語言之中的一個子集,例如在資訊軟體產業通行標準的SQL語言中,以INSERTUPDATEDELETE三種指令為核心,分別代表插入(意指新增或創建)、更新(修改)與刪除(銷毀)。

資料查詢語言[編輯 | 編輯原始碼]

SQL查詢語言(Data Query Language,DQL)為資料庫或資訊系統查詢的各種程式語言。