sqlserver2012学习总结笔记
Sqlserver2012 学习总结笔记
第⼀节创建和维护库
sqlserver的版本
企业版(Enterprise) 是⼀种综合的数据平台,可以为运⾏安全的业务关键应⽤程序提供企业级可扩展性、性能、⾼可⽤性和⾼级商业智能功能。
标准版(Standard) 是⼀个提供易⽤性和可管理性的完整数据平台,部门级的应⽤提供⽀持。
开发版(Developer) ⽀持开发⼈员构建基于 Server 的任⼀种类型的应⽤程序,拥有企业级的特性,但是有限制。
⼯作组版(Workgroup) 是运⾏分⽀位置数据库的理想选择,它提供⼀个可靠的数据管理和报告平台,其中包括安全的远程同步和管理功能。
⽹络版(Web) 对于为从⼩规模⾄⼤规模 Web 资产提供可扩展性和可管理性功能的 Web 宿主和⽹站来说成本低。
移动版(Compact) 3.5 免费提供,是⽣成⽤于基于各种 Windows 平台的移动设备、桌⾯和 Web 客户端的独⽴和偶尔连接的应⽤程序的嵌⼊式数据库理想选择。
免费版(Express) 适⽤于学习构建⼩型的应⽤。、
sqlserver的数据库分类
1.系统数据库
master 数据库:
master 数据库记录 SQL 系统的所有系统级别信息。它记录所有的登录帐户和系统配置设置。
master 数据库是这样⼀个数据库,它记录所有其它的数据库,其中包括数据库⽂件的位置。
master 数据库记录 SQL Server 的初始化信息,它始终有⼀个可⽤的最新 master 数据库备份。
msdb 数据库:
msdb 数据库供 SQL Server 代理程序调度警报和作业以及记录操作员时使⽤。
tempdb 数据库:
tempdb 数据库保存所有的临时表和临时存储过程。
model 数据库:
model 数据库⽤作在系统上创建的所有数据库的模板。当发出 CREATE DATABASE 语句时,新数据库的第⼀部分通过复制 model 数据库中的内容创建,剩余部分由空页填充。由于 SQL Server 每次启动时都要创建 tempdb 数据库,model 数据库必须⼀直存在于 SQL Server 系统中。
Resource 数据库:
Resource 数据库⼀个只读数据库,包含 SQL Server 包括的系统对象。系统对象在物理上保留在 Resource 数据库中,但在逻辑上显⽰在每个数据库的sys 架构中。
2.⽤户数据库
sqlserver数据库的组成
sqlserver将数据库映射为⼀组可操作的⽂件:
数据⽂件
.
mdf⽂件,主数据⽂件,只有⼀个,⼤⼩不得⼩于3Mb。
.ndf⽂件,次要数据⽂件,可以0个或多个,可以在⼀个或者多个磁盘存放。
⽇志⽂件
.ldf⽂件,事务⽇志⽂件,⾄少有⼀个⽂件。
数据库存储空间的分配
创建⽤户数据库时,model数据库会被⾃动的复制到新建的数据库。
数据库存储的最⼩单位是,数据页(page 简称 页)。
1页是8KB的连续的磁盘存储空间。
页的⼤⼩决定了数据库表⼀⾏数据的最⼤的⼤⼩。
⾏不可以跨页存储。
俩种类型的⽂件组:
主⽂件组
包含主要的数据⽂件和任何没有明确分配的其他⽂件组的其他数据⽂件,系统表的所有表页都分配在主⽂件组中。
⽤户定义⽂件组:
在定义或者修改数据库时⽤ ‘FILEGROUP’关键字指定。
注意::
1.⽇志⽂件不在⽂件组中,⽇志⽂件和数据⽂件分开。
2.⼀个⽂件不可以时多个⽂件组成员。
3.若⽂件组含有多个⽂件,则在所有⽂件被填满后才会⾃动循环增长。
4.⽂件加⼊数据库后,不能移动到其他⽂件组。
5.只能指定⼀个⽂件组为默认⽂件组。
数据⽂件的属性
定义数据⽂件和⽇志⽂件的所有信息:
⽂件名及位置:
逻辑⽂件名,物理⽂件名。
初始⼤⼩:
不能⼩于model数据库主要⽂件的⼤⼩。
增长⽅式:
可以指定⽂件是否⾃动增长(默认)
⽂件⼤⼩:
⽂件增长的最⼤限制,默认⽆限制。
T-sql创建数据库
1.sql server management studio
2.T-sql创建数据库
T-SQL格式语法举例:
create database
db_zhj --数据库名字
on
(
name=‘db_zhj_data’,–逻辑数据⽂件名
filename=‘E:\gongzuo_hc\db_service_data\sqlserver_2012_home\userdb_data\data\db_zhj_data.mdf’,–主数据库⽂件逻辑名字
size=3mb,–主数据⽂件初始化⼤⼩
maxsize=50Mb,–主数据⽂件最⼤⼤⼤⼩
filegrowth=10% --超过初始化⼤⼩后⽂集⾃动增长率。
)
log on
(
name=‘db_zhj_log’,–逻辑⽇志⽂件名
filename=‘E:\gongzuo_hc\db_service_data\sqlserver_2012_home\userdb_data\log\db_zhj_log.ldf’,–⽇志存放的逻辑物理名size=2mb,–⽇志初始化⼤⼩
maxsize=50Mb,–⽇志最⼤⼤⼩
filegrowth=1mb --超过初始化⼤⼩后⽂集⾃动增长率。
)
go
收缩数据库空间:
即释放数据库中未使⽤的空间,
收缩从尾部开始:
⾃动收缩:auto_shrink 默认 false
⼿⼯收缩:收缩数据库中某个⽂件的⼤⼩。
按⽐例收缩整个数据库⼤⼩。
添加删除数据库⽂件:
扩⼤指定⽂件的⼤⼩
alter database db_zhj
modify file(name=‘dbz_zhj’,size=8MB)
添加新的数据⽂件
alter database db_zhj
add file(
name=‘db_zhj_data1’,–逻辑数据⽂件名
filename=‘E:\gongzuo_hc\db_service_data\sqlserver_2012_home\userdb_data\data\db_zhj_data1.ndf’,–次数据库⽂件逻辑名字.扩展名字为ndf
size=3mb,–主数据⽂件初始化⼤⼩
maxsize=50Mb,–主数据⽂件最⼤⼤⼤⼩
filegrowth=10% --超过初始化⼤⼩后⽂集⾃动增长率。
)
注意:::
添加⽂件时候,每个⽂件组的数据⽂件是按⽐例填充,⽇志⽂件是依次添加。
收缩整个数据库的⼤⼩
dbcc shrinkdatabase(db_zhj,20) 收缩数据库db_zhj所有⽂件为20%可以空间
收缩指定⽂件的⼤⼩
dbcc shrinkdatabase(db_zhj_data1,4) 收缩数据库的⽂件db_zhj_data1为4mb
删除数据库⽂件
alter database db_zhj
remove file db_zhj_data1
注意:::
⽂件为空才可以被删除。
分离和附加数据库
分离数据库:作⽤是实现数据库从⼀台计算机移动到另⼀台计算机上,不需要重建。
从实例中删除,但是不删除数据⽂件和⽇志⽂件,保持了数据⽂件和⽇志⽂件的完整性。
使⽤sp_detach_db系统存储过程。
eg: exec sp_detach_db ‘数据库名字’ true
第⼆节 架构
架构(Schema ,也称为模式),
是数据库的⼀个逻辑命名空间,是数据库对象的容器,⼀个数据库包含多个架构或者⼀个,同⼀个数据库架构名字唯⼀。
创建架构: create schema 架构名字 authorization ⽤户名字
删除架构: drop schema 架构名字
第三节 分区表附加数据库:将分离的数据库附加到数据库管理当中去。必须指定主数据⽂件的物理存储位置和⽂件名字。create databa db_zhj on (filename='E:\gongzuo_hc\db_service_data\sqlserver_2012_home\userdb_data\data\db_zhj_data.mdf') for attach --for attach 是附加的意思1
2
3
4
1.基本概念:分区表是把表中的数据⽔平分割成不同的⼦集,并将数据⼦集存放在⼀个或者多个⽂件组中。物理上是⼤表分成⼏个⼩表,逻辑上还是⼀个表。
合理分区可以提⾼数据库的性能。
是否创建分区表取决于表当前数据量的⼤⼩,以及将来的数据量,还取决于表中的数据操作特点。
表包含或者将包含以多种不同⽅式使⽤的⼤量数据。
数据是分段的,⽐如按年份分段。
2.创建分区表
三个步骤:
(1)创建分区函数,告诉DBMS以什么⽅式进⾏分区。
create partition function
(2)创建分区⽅案,作⽤是将分区函数⽣成的分区映射到⽂件组中。
create partition schema
(3)使⽤分区创建表
eg:create partition function myf1(int) as range left for value (1,100,1000);–left 为包含左侧的1
create partition function myf2(int) as range right for value (1,100,1000);–left 为包含右侧的100 分区函数
go
create partition schema myfa as partition myf1 to (test1,test2,test3,test4)—创建分区⽅案
go
create table table_partition --创建分区表
(
coll int,
name char(100)
on myfa(coll) --分区⽅案上
)
第四节 索引
1.创建索引
语法:create [unique] --表⽰唯⼀索引,可选
[clustered] —聚集索引
[nonclustered] —⾮聚集索引
index index_name --索引名字
on table_name --所在的表
(column_name…) --所在的列
[with fillfactor=x] --填充因⼦,指0-100之间,该值指索引页填满的空间所占的百分⽐。
2.删除索引
语法:drop index table_name.index_name 或者 view_name.index_name
索引可以在表可以在视图上
第五节 索引视图
1.基本概念:
标准视图页称为虚拟表,返回结果与基本表⼀致,结果集不永久存放。
建⽴唯⼀聚集索引的视图称为索引视图,也成物化视图,建⽴索引视图后视图的结果存放在数据库中。
对基本表的修改,也反映在索引视图存储的数据中。
2.建⽴索引视图的场景
很少更新基础数据,索引视图效果好。
若基础数据是批处理的⽅式定期更新,且主要作为读取数据处理,可考虑更新前删除索引视图,然后重建,效果会更好。
索引视图可提⾼哪些性能:
处理⼤量的连接和聚合时候
许多查询经常执⾏连接和聚合时候
索引视图不可提⾼哪些性能:
具有⼤量写操作的OLPT操作系统
具有⼤量更新操作的数据库
不涉及聚合或连接的查询
group by具有⾼基数度的数据聚合
3.定义索引视图
创建聚合索引前视图需要符合的条件:
定义索引视图时候,视图只能引⽤基本表,不能是其他视图。
引⽤的基本表和视图在同⼀库,所属同⼀⽤户。
视图中表达式所引⽤的函数必须确定。
对视图建⽴的第⼀个索引是聚合索引,然后是其他。
create view;schemabinding;create unqiue clustered index…
第七章 ⾼级数据库查询
第⼀节 ⼀般数据库查询功能扩展
1.select语句
select [distinct] [top n] 查询的数据表达式
[into 插⼊的数据表]
[from 数据表]
[while 查询条件]
[group by 表达式]
[having 表达式] --聚合查询的条件
[order by 表达式[asc]|[desc]]
[compute 表达式] --在查询的结果末尾产⽣汇总
2.使⽤top限制结果集
top n [percent] [with ties]
top n --前n⾏
top n [percent]–前百分之n
[with ties]–包含最后⼀⾏取值并列的结果
3.case函数
是⼀种分⽀表达式
俩种类型:
简单case函数
搜索case函数
语法:
case
when 条件 then 结果表达式
when 条件 then 结果表达式
[else 结果表达式n+1]
end
4.将查询结果保存在新表中
select 查询列表 into 新表 from 源表 while 条件sql自学难吗
注意:表前⾯加# 为局部临时表,加##为全局临时表
eg:select xxxx into #临时表 from 源表 while 条件
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论