1. 程式人生 > >SQL Server 2005筆記總結

SQL Server 2005筆記總結

sql

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筆記總結