本篇內容轉自維基百科
一:數據庫基本概念
1,數據庫
數據庫,簡而言之可視爲電子化的文件櫃——存儲電子文件的處所,用戶可以對文件中的數據運行新增、截取、更新、刪除等操作。
所謂“數據庫”系以一定方式儲存在一起、能予多個用戶共享、具有儘可能小的冗餘度、與應用程序彼此獨立的數據集合
2,數據庫管理系統
數據庫管理系統(Database Management System,簡稱DBMS)是爲管理數據庫而設計的電腦軟件系統,一般具有存儲、截取、安全保障、備份等基礎功能
數據庫管理系統主要分爲以下兩類:
2.1 關係數據庫
關係數據庫是創建在關係模型基礎上的數據庫,藉助於集合代數等數學概念和方法來處理數據庫中的數據。現實世界中的各種實體以及實體之間的各種聯繫均用關係模型來表示。
幾乎所有的數據庫管理系統都配備了一個開放式數據庫連接(ODBC)驅動程序,令各個數據庫之間得以互相集成。
典型代表有:MySQL、Oracle、Microsoft SQL Server、Access及PostgreSQL等
2.2 非關係型數據庫 NoSQL
非關係型數據庫是對不同於傳統的關係數據庫的數據庫管理系統的統稱。與關係數據庫最大的不同點是不使用SQL作爲查詢語言。
典型代表有:BigTable(Google)、Cassandra、MongoDB、CouchDB;
還包括鍵值數據庫:Apache Cassandra(Facebook)、LevelDB(Google)
3,數據庫架構
數據庫的架構可以大致區分爲三個概括層次:內層、概念層和外層。
內層:最接近實際存儲體,亦即有關數據的實際存儲方式。
外層:最接近用戶,即有關個別用戶觀看數據的方式。
概念層:介於兩者之間的間接層
二:SQL簡介
1,SQL
SQL(Structured Query Language 結構化查詢語句)是一種特定目的程序語言,用於管理關係數據庫管理系統(RDBMS),或在關係流數據管理系統(RDSMS)中進行流處理。
SQL基於關係代數和元組關係演算,包括一個數據定義語言和數據操縱語言。SQL的範圍包括數據插入、查詢、更新和刪除,數據庫模式創建和修改,以及數據訪問控制。
2,SQL標準化過程
3,SQL語法簡介
3.1 運算符
3.2 查詢
SQL中最常見的操作是查詢,它是通過陳述性SELECT語句執行的。SELECT從一個或多個表或表達式中檢索數據。
SELECT是最複雜的SQL語句,可選的關鍵詞和子句包括:
SELECT *
FROM Book
WHERE price > 100.00
ORDER BY title;
查詢可以嵌套,以便一個查詢的結果可以通過關係運算符或聚合函數在另一個查詢中使用。嵌套查詢也稱爲子查詢:
SELECT isbn,
title,
price
FROM Book
WHERE price < (SELECT AVG(price) FROM Book)
ORDER BY title;
3.3 空值與三值邏輯
SQL中引入了空值的概念,用來處理關係模型中缺少信息的情況。NULL一詞表示空白值,是SQL中的保留詞。如果Null進行比較,例如在WHERE子句中使用“=”判斷相等,那麼會返回未知值,而SELECT語句只會返回WHERE子句條件爲真(TRUE)的結果,不會返回條件爲假(FALSE)或未知的結果。
“真”、“假”以及與空值直接比較時所得到的“未知”共同組成了SQL的three-valued logic 三值邏輯
由於直接與空值比較會返回未知,因此SQL又提供了兩個用於測試空值的語句:IS NULL
和IS NOT NULL
3.4 數據類型
一張表中的每個字段都要定義該字段的類型。ANSI SQL包括下列數據類型:
3.5 數據定義
數據定義語言(DDL)管理表和索引結構。DDL的最基本是CREATE、ALTER、RENAME、DROP和TRUNCATE語句:
CREATE在數據庫中創建一個對象(例如一張表)
CREATE TABLE example(
column1 INTEGER,
column2 VARCHAR(50),
column3 DATE NOT NULL,
PRIMARY KEY (column1, column2)
);
ALTER以不同方式修改現有對象的結構,例如向現有的表或約束添加字段:
ALTER TABLE example ADD column4 NUMBER(3) NOT NULL;
TRUNCATE以一種非常快速的方式刪除表中的所有數據,刪除表內的數據而不是表本身
TRUNCATE TABLE example;
DROP刪除數據庫中的對象,通常無法挽回的,即,它不能被回滾
DROP TABLE example;
3.6 數據操作
數據操縱語言(DML)是SQL用於添加、更新和刪除數據的子集:
INSERT添加行(正式名稱爲元組)到一個現有的表
INSERT INTO example
(field1, field2, field3)
VALUES
('test', 'N', NULL);
UPDATE修改現有的表中一些行
UPDATE example
SET field1 = 'updated value'
WHERE field2 = 'N';
DELETE從表中刪除現有的行
DELETE FROM example
WHERE field2 = 'N';
3.7 數據控制
數據控制語言 (Data Control Language, DCL) 授權的用戶訪問和操作的數據。 它的兩個主要的語句是:
GRANT: 授權的一個或多個用戶執行在一個對象上的一個操作或者一組操作。
REVOKE: 消除了授權,其可以是默認的授權。
GRANT SELECT, UPDATE
ON example
TO some_user, another_user;
REVOKE SELECT, UPDATE
ON example
FROM some_user, another_user;