這里寫目錄標(biāo)題
- 基本知識
- 常用基本數(shù)據(jù)類型
- 字符型數(shù)據(jù)類型
- 二進制數(shù)據(jù)類型
- 日期類型
- 數(shù)字類型
- 約束條件
- 表SQL語句
- 創(chuàng)建語句
- 修改基本表 & 刪除基本表
- 數(shù)據(jù)查詢
基本知識
常用基本數(shù)據(jù)類型
字符型數(shù)據(jù)類型
名稱 | 大小 | 說明 |
---|
char(n) | 占n個字節(jié) | 只能顯示英文字符 |
nchar(n) | 2n字節(jié)+2字節(jié)額外開銷 | Unicode編碼,支持中文 |
ntext | 每字符2字節(jié) | Unicode編碼 |
nvarchar(max) | 2n字節(jié) + 2字節(jié)額外開銷 | 根據(jù)存儲字符數(shù)字節(jié)占用空間動態(tài)變化,Unicode |
varchar(n) | n字節(jié) + 2字節(jié)額外開銷 | 僅支持英文,動態(tài)變化 |
二進制數(shù)據(jù)類型
名稱 | 大小 |
---|
binary(n) | 占n個字節(jié) |
image | 每個字符1字節(jié) |
varbinary(n) | 每字符1字節(jié) |
varbinary(max) | 每字符1字節(jié) + 2字節(jié)額外開銷 |
日期類型
名稱 | 大小 | 說明 |
---|
Date | 占3個字節(jié) | 保存月日 |
Datetime | 8個字節(jié) | 保存年月日秒,精確到最近的3,3ms |
數(shù)字類型
- 整型:int
- 近似數(shù)據(jù)類型:float
- numeric(p ,q):總共有p位數(shù),小數(shù)后面有d位
- 邏輯數(shù)據(jù)類型:bit, 僅取1,0或null
Null:表示當(dāng)前字段值未知,未插入,不可用,或者稍后添加等。
Default:表示表中數(shù)據(jù)默認取值。
約束條件
- 非空約束(not null):限制當(dāng)前列數(shù)據(jù)都不為空。
- 默認約束(default):為這個數(shù)據(jù)列定義一個默認值
- 唯一性約束(unique):表示當(dāng)前列的所有數(shù)據(jù)都不重復(fù)(除了null,可以有多個null)
- 主鍵約束(primary key):表示這個或者這幾個字段標(biāo)識某一行數(shù)據(jù)
- 外鍵約束(foreign key):根據(jù)另外一個表的某個列獲得的數(shù)據(jù)進行有效值判定,通常是另外一個表的主鍵
- 檢查約束(check):對列進行約束,一般是自定義的表達式。
unique約束與not null 約束沒有關(guān)系, unique只限制有值的情況下每一個值不能相同,可以有多個null 值。
表SQL語句
創(chuàng)建語句
create table table_name(字段名1 類型 額外條件(沒有就省略), 字段名2 類型 額外條件,xxxx,xxx
)create table 表名
(<列名> <數(shù)據(jù)類型> [<列級完整性約束>],<列名> <數(shù)據(jù)類型> [<列級完整性約束>],xxxx,[<表級完整性約束條件>]
)
create table student_table(stu_no char(10) Primary key,name char(6) Not Null,sex char(2),birthday Datetime,class_no char(4)
)
Primary key(字段名1, 字段名2, 。。。。)
FOREIGN KEY (字段1) REFERENCES 表名(字段名2)
修改基本表 & 刪除基本表
Alter table <表名>[add <新列名> <數(shù)據(jù)類型> [完整性約束]] [drop <完整性約束名>] [alter column <列名> <數(shù)據(jù)類型>]; Drop table <表名> [restrict | cascade]
- 刪除時,cascade表示級聯(lián)刪除,依賴于這張表的也將被刪除,例如參考這張表的外鍵所在的表也將被刪除。
- restrict,表示如果有參考這張表的,在刪除時候該條指令會被拒絕。默認restrict刪除。
數(shù)據(jù)查詢
SELECT [ALL | DISTINCT]<目標(biāo)表達式>
[, <目標(biāo)表達式>]
FROM <表或視圖> [, 表或者視圖]
[WHERE <條件表達式>]
[GROUP BY <列名1> [HAVING <條件表達式>]]
[ORDER BY <列名2> [ASC|DESC]]
- distinct 與 ALL 區(qū)別在于查詢結(jié)果是否消除重復(fù)行,all顯示所有,不消除重復(fù)行,結(jié)果有幾個就有幾個。distinct會將查詢結(jié)果向同行只顯示一行。
- [not] between and 表示在什么之間,包括兩個邊界。
- [not] in <值表> 這個字段值是否在這個值表當(dāng)中
- 例如:where Sdept in (‘cs’, ‘ma’, ‘sse’)
- [not] like ‘<匹配串>’ [ESCAPE ‘<換碼字符>’]
- 匹配串中可以使用占位符:%表示任意長度的字符串,下劃線_只占單個字符。
- 如果本來就有%或者_需要\進行轉(zhuǎn)義
- AND OR 用來連接多個查詢條件,AND優(yōu)先級高于OR
- ORDER BY 排序, ASC 升序 DESC 降序