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