1.1 数据库的构成
1.2 数据库对象概述
1.2.1 数据库对象
RDBMS 关系数据库管理系统
对象:数据库、索引、事务日志、CLR程序集、表 、报表、文件组、全文目录、图表、用户自定义数据类型 、视图、角色、存储过程、用户、用户 自定义函数、加密密钥
安装好的sql server 第一次加载时包括以下4个系统数据库 :master、model、msdb、tempdb
1.master数据库;保存一组特殊的数据表(系统表)用户跟踪整个系统。
2.model数据库顾名思义,是指可以基于该模型得到一个副本。model数据库是新建数据库的模板。
3.msdb数据库是SQL代理进程保存任意系统任务的地方。如果计划对一个数据库每夜进行备份,则在msdb数据库中有一个记录项。
4.tempdb数据库是服务器的一个主要工作区。在执行复杂或者大型的查询操作时,如果SQL Server需要创建一些中间表来完成,那它就在tempdb数据库中进行。在创建临时表时,即使你是在 当前数据库中创建这些表的,但实际也是在tempdb数据库屮创建的。只要需要临时保存数据, 就很可能是将数据保存在tempdb数据库中。tempdb数据库与其他任意数据库大相径庭。不仅数据库中的对象是临时的,连数据库本身也是临时的。每次动SQL Server时,tempdb数据库是系统中唯一完全重建的数据库。
1.2.2 事务日志
1.2.3 最基本的数据库对象:表
表可以有与之相关联的附加对象----这些对象只在特定表的结构中存在。
1、索引(聚集索引和非聚集索引)
2、触发器
3、约束
1.2.4 模式
模式(Schema)为数据库和其所包含的其他对象之间提供了中间名称空间。任意 数据库的模式都是dbo(表示数据库所有者)
1.2.4 文件组
默认情况下,数据库中所有的表及其他多想(日志除外要存储在一个文件中)。该文件是一些所谓的主要文件组的成员。不过,并不一定要坚持这样的配置。
1.2.6 图表
数据库图表是数据库设计的可视表示,它包括了各种表、每一张表的列名以及表之间的关系。
1.2.7 视图
视图是一种虚拟表。除了视图本身不包含任意数据外,视图的使用基本与表的使用类似。事实上 视图仅仅是存储在表中的数据的预先设计好的映射和表示。
1.2.8 存储过程
存储过程是sql server 编程功能的基础。存储过程通常是组成一个逻辑单元的Transact-SQL(用于查询Microsoft SQL Server的语言)语句的有序集合。存储过程允许使用变量和参数,也可时使用选择和循环结构。与发送单条语句到服务器相比,使用存储过程具有以下几个优点:
- 调用存储过程不使用长文本串而使用短存储过程名,可减少运行存储过程中的代码所要的网络流量。
- 预先优化和预编译,能将存储过程每次运行的时间缩短一点。
- 通常考虑安全原因,或仅仅是简化数据库的复杂性,将过程封装。
- 可从其他存储过程调用,使得它们在一定意义上重用。
此外 ,可利用任何 .NET语言创建程序集,并向存储过程中添加T-SQL之外的程序结构。
1.2.9 用户自定义函数
用户自定义函数(UDF)与存储过程非常相似,不同之处有以下几点:
- 返回值的数据类型包括大部分SQL Server数据类型。不包括的返回类型是:text、ntext、image、cursor和timestamp
- 没有“副作用”,即用户自定义函数不能外城在其范围之外的功能,如更改表、发送电子邮件或更改系统或数据库参数。
1.2.10 用户和角色
用户和角色关系密切。用户几乎等价于登录名。简言之, 该对象标识登录SQL Server 的用户的标识符。登录SQL Server的任何人都映射到一个用户。用户属于一个或多个角色。SQL Server 中可以直接赋予用户或角色执行某种操作的权限,一个或多个可属于同一个角色。
1.2.11 规则
规则和越是都是限制插入到表中的数据类型的信息。如果更新或插入记录违反规则,则插入或更新操作被拒绝。此外,规则可用于定义用户自定义数据类型上的限制。与规则不同,约束本身不是实际对象,至少是描述特定表的元数据片段。
1.2.12 默认值
SQL Server中有两种类型的默认值,包括对象本身的默认值,以及描述表中特定列的元数据的默认值(非真正对象)。和约束与规则类型,规则是对象,而约束不是对象,是元数据。当插入一条记录时,如果没有提供该列的值,且该列具有其默认值,则自动插入默认值。
1.2.13 用户自定义数据类型
1.2.14 全文目录
1.3 SQL Server 数据类型
数据类型名称 | 类 型 | 长度(以字节为单位) | 数据特点 |
Bit | 整型 | 1 | 这个数据的大小容易让人误解。表中的第一个bit数据类型占一个字节, 其余7个bit数据类型使用同一个字节。如果允许使用null,则会多占用一个字节。 |
bigint | 整型 | 8 |
|
int | 整型 | 4 | |
smallint | 整型 | 2 |
|
tinyint | 整型 | 1 |
|
decimal或Numeric | 小数/数字型 | 可变 |
|
money | 货币型 | 8 |
|
smallmoney | 货币型 | 4 | |
float(也是ANSIReal的同义词) | 近似数字型 | 可变 |
|
DateTime | 日期/时间型 | 8 | |
NULL数据
假设表中有一行的某一列没有任何数据,也就是你不知道改列的值。
1.4 SQL Server 对象标识符
1.4.1 需要命名的对象
- 存储过程(Storeed procedure)
- 视图(View)
- 默认值(Default)
- 触发器(Trigger)
- 用户自定义函数(User-defined Functions)
- 全文目录(Full-text catalog)
- 模式(Schema)
- 约束 (Constraint)
- 服务器(Server)
- 用户自定义类型(User-defined Type)
- 表(Table)
- 规则(Rule)
- 索引(Index)
- 数据库(Database)
- 登录名(Login)
- 文件(File)
- 列(Column)
- 文件组(Filegroup)
- 角色(Role)
1.4.2 命名规则
人生,总是有一些空城旧事,年华未央;总是有些季节,一季花凉,满地忧伤。许多事,看开了,便会峰回路转;许多梦,看淡了,便会云开日出。学会思索,学会珍藏,微笑领悟,默默坚强。