SQL分類
DDL data definition language
create alter drop
DML data manipulation language
insert update delete select
DCL data control language
grant revoke deny
資料庫的建立和管理
檔案 資料檔案(主資料檔案.mdf 輔助資料檔案.ndf)
日志檔案 .ldf
檔案組 邏輯結構 包含資料檔案
建立資料庫
create database 資料庫名
on primary
(name=,filename=,size=,maxsize=,filegrowth=),
filegroup 檔案組名
(name=,filename=,size=,maxsize=,filegrowth=)
log on
修改
alter database 資料庫名
|add filegroup 檔案組名
|add file() to filegroup 檔案組名
|add log file()
|modify name=新資料庫名
|modify file(name=,newname=,size=,maxsize=,filegrowth=)
|modify filegroup 檔案組名 default
|remove file
|set 資料庫選項
删除
drop database 資料庫名
資料庫收縮
dbcc shrinkfile
dbcc shrinkdatabase
資料庫資訊檢視
sp_helpdb
dbcc sqlperf
sp_spaceused
dbcc checkdb
系統資料類型
整型:bigint int smallint tinyint
精确數值:decimal(p,s) numeric(p,s)
近似數值:float real
貨币:money smallmoney
日期:datetime smalldatetime
--SQL2008
date time datetime2 datetimeoffset
字元:char(n) varchar(n) varchar(max)
nchar(n) nvarchar(n) nvarchar(max)
bit uniqueidentifier table
......
表的建立
create table 表名
(列名 資料類型,
列名 資料類型 not null,
列名 資料類型 identity(seed,increment))
表的修改
alter table 表名
|add 列名 資料類型 屬性
|alter column 列名 新資料類型|舊資料類型 屬性
|drop column 列名 資料類型
表的删除
drop table 表名
DML
insert
insert into 表名(列名清單) values(對應值)
注意:字元和日期資料加單引号
insert into 表名(列名清單) select語句
update
update 表名 set 列名=值 where 條件
delete
delete from 表名 where 條件
select
語句 子句
select:結果中的列
*
列名
distinct
top(n) [percent]
+
函數
算術運算符
with ties
列别名
列名 as 列别名
列名 列别名
列别名=列名
into:将查詢結果放入新表
from:資料源(具體表名;CTE;derived table)
where:條件 對傳回的資料行進行限定
邏輯運算符 and not or
比較運算符 > < >= <= <> != =
算術運算符
between...and...:給定取值範圍,包括邊界
in(值清單):取給定值
like:字元串的模糊查詢
通配符: %:任意長度任意字元
_: 任意單個字元
[]:取給定的任意一個
[^] :除了給定的字元,任意取一個
is null:空值判斷
exists:判斷存在性
group by:分組彙總+聚合函數
having:對分組後的資料進行篩選
order by:排序
升序asc(預設) 降序 desc
可以按多個列排序 null作為最小值
join:多表連接配接
where select 列名 from 表1,表2 where 表1.列=表2.列 and 條件
join select 列名 from 表1 *JOIN* 表2 on 表1.列=表2.列 where 條件
内連接配接:[inner] join 連接配接字段的值在兩張表中相同的資料
左外聯結:left [outer] join 連接配接字段的值在兩張表中相同的資料,連接配接字段的值在左表有在右表沒有的資料
右外連接配接:right [outer] join 連接配接字段的值在兩張表中相同的資料,連接配接字段的值在右表有在左表沒有的資料
全連結:full [outer] join 連接配接字段的值在兩張表中相同的資料,連接配接字段的值在左表有在右表沒有的資料,連接配接字段的值在右表有在左表沒有的資料
stu exam
id name id eid score
1 a 1 2072 100
2 b 2 2072 80
3 c 3 2072 60
4 d null 2072 70
交叉連接配接
笛卡爾積 m*n
select 列名 from 表1 cross join 表2
自連接配接
union
行疊加
select語句 *union* select語句
union//union all//intersect//except
子查詢--可以轉換為多表
select 字段 from 表1 where 字段 in(select語句)
資料完整性
實體完整性:行唯一
域完整性:對字段的取值範圍或格式進行限制
引用完整性:維護表之間的資料一緻性
實作:規則 預設 限制
限制
主鍵限制 primary key
一張表隻有一個主鍵限制,可以建立在多個列上,建立主鍵限制的字段取值唯一,不能為NULL,建立主鍵限制會自動建立唯一聚集索引
唯一限制 unique
一張表可以有多個唯一限制,可以建立在多個列上,建立唯一限制的字段可以為NULL,取值唯一(包括NULL),建立唯一限制會自動建立唯一非聚集索引
檢查限制 check
對字段的取值範圍或格式進行限制
預設限制 default
如果某列定義了預設限制,插入資料時,不給值,自動填充預設值
外鍵限制 foreign key
被參照表的被參照列要定義主鍵限制或唯一限制,維護表之間的資料一緻性
建立表的同時,建立限制************************************
create table 表名
列名 資料類型 not null,
列名 資料類型 primary key,
列名 資料類型 unique,
列名 資料類型 check(表達式)
列名 資料類型 default 預設值,
列名 資料類型 references 被參照表(被參照列))
表建立成功後添加限制***************************************
primary key(主鍵字段)
unique(唯一字段)
alter table 表名 add constraint 限制名 check(表達式)
default 預設值 for 列名
foreign key(參照字段) references 被參照表(被參照列)
視圖
分類:普通視圖 分區視圖 索引視圖
資料庫中隻有視圖定義,不存放資料
建立視圖
create view 視圖名
as
select語句
視圖選項
create view 視圖名
with encryption | schemabinding
as
select語句
with check option
備份還原
備份目标
備份裝置:實作建立好,通過指令和圖形界面均可檢視備份内容
備份檔案:建立的同時建立,隻能通過指令檢視
故障恢複模型
大容量日志:對大批量資料操作隻記錄結果不記錄過程
簡單:不能進行日志備份
完整:
備份類型
完整備份
backup database 資料庫名 to disk=''
backup database 資料庫名 to 備份裝置名
差異備份
backup database 資料庫名 to disk='' with differential
backup database 資料庫名 to 備份裝置名 with differential
日志備份
backup log 資料庫名 to disk=''
backup log 資料庫名 to 備份裝置名
檔案和檔案組備份
backup database 資料庫名 file= to disk=''
backup database 資料庫名 filegroup= to 備份裝置名
尾日志備份
backup log 資料庫名 to disk='' with no_truncate
backup log 資料庫名 to 備份裝置名 with no_truncate
<b>本文轉自Grodd51CTO部落格,原文連結:http://blog.51cto.com/juispan/1949879</b><b>,如需轉載請自行聯系原作者</b>