SQL(Structured Query Language) 又稱結構化查詢語言,是一種在關係型數據庫中定義和查詢及操縱數據的標準語言,是用戶和數據庫之間進行交流的接口,正在像Oracle、MySQL、SQL Server等幾乎所有的數據庫實現了該接口,都支持SQL的查詢。SQL語言結構簡潔,功能強大,簡單易學,所以自從推出以來,SQL語言得到了廣泛的應用。
SQL 語言由下面5個子語言組成:
數據定義語言(DDL-Data Definition Language);
數據查詢語言(SELETE-Query Statements);
數據操縱語言(DML-Datat Manipulation Language);
事務控制語言(TC-Transaction Control Statements);
數據控制語言(DCL-Datat Control Language);
數據類型
Oracle和MySQL都是兩種重要的數據爲,下面從它們各自的基本數據類型開始講起。
數據類型 | 數據類型 | 說明 | |
Oracle | MySQL | ||
數值類型 | NUMBER(p,s) | 存儲數值數據類型,如浮點型、整數型、分數、雙精度等。其中p爲精度,表示數字的總位數(1 <= p <=38) ; s爲範圍,表示小數點右邊的位數,它在-84至127之間。默認38位 | |
TINYINT | 微整型,1字節 | ||
SMALLINT | 小整型,2字節 | ||
MEDIUMINT | 中整型,3字節 | ||
INT或INTEGER | 整數數據類型 | 整型,4字節 | |
BIGINT | 大整型,8字節 | ||
FLOAT | 浮點數數據類型 | 單精度浮點數值,4字節 | |
DOUBLE | 雙精度浮點數值,8字節 | ||
DECIMAL | 對DECIMAL(M,D) ,如果M>D,爲M+2否則爲D+2 | ||
字符串類型 | CHAR(n) | n=1to2000字節,定長字符串,n字節長,如果不指定長度,缺省爲1個字節長(一個漢字爲2字節) | 定長字符串,0-255字節 |
NCHAR(n) | NLS(national language support , 國際語言支持)的數據類型僅可以存儲由數據庫 NLS 字符集定義的 Unicode 字符集。Oracle最多可以存儲2000Byte | ||
VARCHAR(n) | 最多可以以可變長度來存儲4000B,因此不需要空格來作補充。 | 變長字符串,0-255字節 | |
NVARCHAR(n) | n=1to4000字節,最多可以以可變長度來存儲4000B,因此不需要空格來作補充。 | NLS(national language support , 國際語言支持)的數據類型僅可以存儲由數據庫 NLS 字符集定義的 Unicode 字符集。 | |
VARCHAR2(n) | VARCHAR2 比 VARCHAR 更適合使用,由於兼容性的原因,所以仍然在 Oracle 數據庫中保留着 VARCHAR 。 | ||
NVARCHAR2 | NLS 的數據類型與 VARCHAR2 數據類型等價。這個數據類型最多可存儲4000B 。 | ||
CLOB | 存儲大量的單字節字符數據和多字節字符數據。存儲的最大容量爲4G | ||
NCLOB | 存儲可變長度的Unicode字符集字符數據,存儲的最大容量爲4G | ||
BLOB | 存儲較大的二進制對象。例:圖形,視頻,音頻等 | ||
BFILE | bfile:文件定位器;指向位於服務器文件系統是二進制文件(存儲一個文件路徑) | ||
LONG | 存儲可變長度的字符數據,最多存儲2GB 。 | ||
RAW | 存儲基於字節的數據。最多存儲2000個字節,使用需指定大小。raw數據類型可以建立索引。 | ||
LONG RAW | 存儲可變長度的二進制數據。最多能存儲2GB。不能索引。 | ||
TINYBLOB | 不超過 255 個字符的二進制字符串,0-255字節 | ||
TINYTEXT | 短文本字符串,0-255字節 | ||
BLOB | 二進制形式的長文本數據,0-65 535字節 | ||
TEXT | 長文本數據,0-65 535字節 | ||
MEDIUMBLOB | 二進制形式的中等長度文本數據 | ||
MEDIUMTEXT | 中等長度文本數據,0-16 777 215字節 | ||
LOGNGBLOB | 二進制形式的極大文本數據,0-4 294 967 295字節 | ||
LONGTEXT | 極大文本數據,0-4 294 967 295字節 | ||
日期和時間 | DATE | 存儲表的日期和時間數據,使用7個字節固定長度,每個字節分別存儲世紀,年,月,日,小時,分和秒;值從公元前4712年1月1日到公元9999年12月31日。 Oracle中的sysdate函數功能是返回當前的日期和時間。 | 日期值,YYYY-MM-DD |
TIMESTAMP | 存儲日期的年,月,日以及時間的小時,分和秒值。其中秒值精確到小數點後6位,同時包含時區信息。 Oracle中的systimestamp函數功能是返回當前日期,時間和時區。 | ||
TIME | 時間值或持續時間,HH:MM:SS | ||
YEAR | 年份值,YYYY | ||
DATETIME | 混合日期和時間,YYYY-MM-DD HH:MM:SS | ||
TIMESTAMP | 混合日期和時間值,時間戳,YYYYMMDD HHMMSS | ||
複合類型 | ENUM | 一個 ENUM 類型最多可以包含 65536 個元素,其中一個元素被 MySQL 保留,用來存儲錯誤信息,這個錯誤值用索引 0 或者一個空字符串表示。 | |
SET | 容器類型,一個 SET 類型最多可以包含 64 項元素,且不可能包含兩個相同的元素 |