SQL Server 2005筆記總結
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
(name=,filename=,size=,maxsize=,filegrowth=),
(name=,filename=,size=,maxsize=,filegrowth=)
修改
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
本文出自 “技術員修煉手冊” 博客,請務必保留此出處http://juispan.blog.51cto.com/943137/1949879
SQL Server 2005筆記總結