SQL 語言
SQL語言的特點
- 一體化。SQL語言風格統一,可以完成資料庫活動中的全部工作,包括建立資料庫、定義模式、更改和查詢資料以及安全控制和維護資料庫等。
- 高度非過程化。在使用SQL語句通路資料庫時,使用者沒有必要告訴計算機如何一步步完成任務,隻需要用SQL語言描述要做什麼就行了,資料庫管理系統會自動完成全部工作。
- 面向集合的操作方式。SQL語言采用集合操作方式,不僅查詢結果是記錄的集合,而且插入、删除和更新操作也是記錄的集合。
- 提供多種方式使用。SQL既是自含式語言,又是嵌入式語言。自含式語言可以獨立地聯機互動,即使用者可以直接以指令的方式互動使用。嵌入式語言是指SQL可以嵌入到向Java、C#等進階程式設計語言中使用。
- 語言簡潔。SQL文法簡單,易學易用。
SQL語言的功能
SQL語言按其功能可分為4大部分:資料定義、資料查詢、資料操作、資料控制。相關謂詞為:
SQL功能 | 謂詞 |
資料定義(DDL) | CREATE、DROP、ALTER |
資料查詢(DQL) | SELECT |
資料操縱(DML) | INSERT、UPDATE、DELETE |
資料控制(DCL) | GRANT、REVOKE、DENY |
- 資料定義功能用于定義、删除和修改資料庫中的對象,資料庫、關系表、視圖、索引等都是資料庫對象。
- 資料查詢功能用于實作查詢資料的功能,資料查詢是資料庫中使用最多的操作。
- 資料操作功能用于添加、删除和修改資料庫。
- 資料控制功能用于控制使用者對資料的操作權限。
SQL支援的資料類型
主要是 Microsoft SQL Server 中的類型
數值型
精确數字
資料類型 | 描述 | 存儲 |
tinyint | 允許從0到255的所有數字 | 1位元組 |
smallint | 允許從-32 768到32 767的所有數字 | 2位元組 |
int | 允許從-2 147 483 648 到 2 147 483 647 的所有數字 | 4位元組 |
bigint | 允許從 -9 233 372 036 854 775 808 到 9 233 372 036 854 775 807 的是以數字 | 8位元組 |
decimal(p,s) 或 numeric(p,s) | 固定精度和比例的數字,允許從 -10^38+1 到 10^38-1 之間的數字,p表示可以存儲的最大位數(小數點左側和右側),p必須是 1~38 之間的值。預設是18;s表示小數點右側存儲的最大位數,s必須是0到p之間的值,預設是0 | 5-17位元組 |
smallmoney | 介于 -214 748. 364 8 和 214 748. 364 7 之間的貨币資料 | 4位元組 |
money | 介于 -922 337 203 685 477. 850 8和 922 337 206 685 477. 580之間的貨币資料 | 8位元組 |
近似資料
資料類型 | 描述 | 存儲 |
float(n) | 從 -1.79E+308 到 1.79E+308 的浮動精度數字資料;參數n表示該字段保留4位元組還是8位元組,float(24)儲存4位元組,float(53)儲存8位元組,n的預設值為53 | 4或8位元組 |
real | 從 -3.40E+38 到 3.40E+38 的浮動精度數字資料 | 4位元組 |
日期類型
資料類型 | 描述 | 存儲 |
datetime | 從1753年1月1日到9999年12月31日,精度為3.33ms | 8位元組 |
datetime2 | 從1753年1月1日到9999年12月31日,精度為100ns | 6~8位元組 |
smalldatetime | 從1900年1月1日到2079年6月6日,精度為1min | 4位元組 |
date | 僅存儲日期,從0001年1月1日到9999年12月31日 | 3位元組 |
datetimeoffset | 與datetime2相同,外加時區偏移 | 8~10位元組 |
timestamp | 存儲唯一的數字,每當建立或修改某行時,該數字會更新。timestamp基于内部時鐘,不對應真實時間,每個表隻能有一個timestamp變量 |
字元串型
普通字元編碼串
資料類型 | 描述 | 存儲 |
char(n) | 固定長度的字元串,最多8000個字元 | n位元組 |
varchar(n) | 可變長度的字元串,最多8000個字元 | 由實際長度決定 |
varchar(max) | 可變長度的字元串,最多1073741824個字元 | 由實際長度決定 |
text | 可變長度的字元串,最多2GB字元資料 | 由實際長度決定 |
統一字元編碼串
資料類型 | 描述 | 存儲 |
nchar(n) | 固定長度的Unicode資料,最多4000個字元 | n位元組 |
nvarchar(n) | 可變長度的Unicode資料,最多4000個字元 | 由實際長度決定 |
nvarchar(max) | 可便長度的Unicode資料,最多536870912個字元 | 由實際長度決定 |
ntext | 可變長度的Unicode資料,最多2GB字元資料 | 由實際長度決定 |
二進制串
資料類型 | 描述 | 存儲 |
bit | 允許0,1或NULL |
binary(n) | 固定長度的二進制資料,最多8000B | n B |
varbinary(n) | 可變長度的二進制資料,最多8000B | 由實際長度決定 |
varbinary(max) | 可變長度的二進制資料,最多2GB | 由實際長度決定 |
image | 可變長度的二進制資料,最多2GB | 由實際長度決定 |
其他類型
資料類型 | 描述 |
sql_variant | 存儲最多8000位元組不同資料類型的資料,除了text、ntext、timestamp |
uniqueidentifier | 存儲全局辨別符(GUID) |
xml | 存儲XML格式化資料,最多2GB |
cursor | 存儲對用于資料庫操作的指針的引用 |
table | 存儲結果集,供稍後處理 |