SQL Server 2008系统数据库
在SQL Server 2008中,默认会有4个系统数据库:master、model、msdb和tempdb

1.master数据库
    master数据库是SQL Server中最重要的数据库,它位于SQL Server的核心,如果该数据库被损坏,SQL Server将无法正常工作
    master数据库中包含如下重要信息:
  • 所有登陆名或用户ID所属的角色
  • 所有系统配置设置(例如,数据排序信息、安全实现、默认语言)
  • 服务器中数据库的名称及相关信息
  • 数据库的位置
  • SQL Server如何初始化
    
2.model数据库
    创建数据库时,总是以一套预定义的标准为模型。例如,若希望所有的数据库都有确定的初始大小,或者都有特定的信息集,那么可以把这些信息放在model数据库中,以model数据库作为其他数据库的模板数据库。如果想要使所有的数据库都有一个特定的表,可以把该表放在model数据库里
    
    model数据库是tempdb数据库的基础,对model数据库的任何改动都将反映在tempdb数据库中。所以,在决定对model数据库有所改变时,必须预先考虑好并多加小心

3.msdb数据库
    msdb给SQL Server代理提供必要的信息来运行作业,因而是SQL Server中另一个十分重要的数据库
    
    SQL Server代理是SQL Server中一个Windows服务,用以运行任何已创建的计划作业(例如包含备份处理的作业)。作业是SQL Server中定义的自动运行的一系列操作,不需要任何手工干预来启动

    既然有了tempdb及model数据库,就不应该直接调整msdb数据库,也的确无此必要。许多进程使用msdb,例如,当创建备份或执行还原时,将用msdb来存储有关这些任务的信息。不能在msdb数据库中执行下列操作:
  • 更改排序规则。默认排序规则为服务器排序规则
  • 删除数据库
  • 从数据库中删除guest用户
  • 删除主文件组、主数据文件或日志文件
  • 重命名数据库或主文件组
  • 将数据库设置为OFFLINE
  • 将主文件组设置为READ_ONLY

4.tempdb数据库
    tempdb数据库,正如名字所暗示的那样,是一个临时性的数据库,存在于SQL Server会话期间,一旦SQL Server关闭,tempdb数据库将丢失。当SQL Server重新启动时,将重建全新的、空的tempdb数据库以供使用

    重建tempdb的一个原因是:不仅开发者要使用该数据库,SQL Server自己也要使用tempdb。实际上,SQL Server始终在使用tempdb,当重新初始化SQL Server时,需要确认原先正在处理的任何临时性工作都已经清除掉。很可能会由于临时性工作的问题导致服务的重启。像其他数据库一样,tempdb也有大小的限制,必须确保该数据库的大小对于当前的应用以及所有要存储于其中的临时信息是足够的,应该确保该数据库大小可以扩展,这样当需要时就可以增加其大小

注意:因为tempdb的大小是有限的,所以在使用时必须当心,不要让tempdb被来自不好的存储过程(对于创建有太多记录的表没有明确限制)的表中记录所填满。如果发生了这种情况,不仅当前处理不能继续,整个服务器都可能无法工作,从而将影响在该服务器上的所有用户



T-SQL运算符

1.算术运算符
    +    -    *    /    %

2.比较运算符
    >    <    =    >=    <=    !>(不大于)    !<(不小于)    !=、<>(不等于)

3.逻辑运算符

4.字符串通配符
    %    指定位置有零个或多个字符
    _     指定位置有1个字符
    [0-9][a-z][A-Z]    指定位置出现字符序列中的任意1个字符





文件和文件组

    在SQL Server 2008系统中,一个数据库至少有一个数据文件和一个事务日志文件。数据文件用于存放数据库的数据和各种对象,事务日志文件用于存放事务日志

    数据文件可以分成主数据文件和辅助数据文件两种形式。主数据文件是数据库的起点,每一个数据库都有且仅有一个主数据文件。主数据文件名称的默认后缀是 .mdf。辅助数据文件是可选的,用来存放不在主数据文件中的其他数据和对象。数据库可以没有辅助数据文件,也可以有多个辅助数据文件,默认后缀是 .ndf

    事务是一个单元的工作,该单元的工作要么全部完成,要么全部不完成。SQL Server 2008系统具有事务功能,可以保证数据库操作的一致性和完整性。SQL Server 2008系统使用数据库的事务日志来实现事务的功能。通常情况下,事务日志记录了对数据库的所有修改操作。事务日志记录了每一个事务的开始、对数据的改变和取消修改等信息。随着对数据库持续不断的操作,日志是连续增加的。事务日志还记录了数据页的分配和释放,以及每一个事务的提交和回滚等信息。事务日志以操作系统文件的形式存在,在数据库中被称为日志文件。每一个数据库都至少有一个日志文件,默认后缀是 .ldf

创建数据库
     CREATE DATABASE dbname     --其他与数据库有关的选项都采用系统默认值
create database mydb
on primary(
name='mydb',--逻辑名
filename='g:\mydb.mdf',
size=3mb,
filegrowth=10%
),
(
name='mydb_n',--逻辑名
filename='g:\mydb.ndf',
size=3mb,
filegrowth=10%
)
log on(
name='mydb_log',
filename='g:\mydb_log.ldf'
)

查看建库信息
sp_helpdb  dbname

切换数据库
  USE database_name
此命令将当前操作的数据库更改为指定数据库

数据库备份
backup database mydb
to disk='f:\mydb.bak'
with name='mydb备份'

BACKUP DATABASE database_name
TO DISK=‘path_database_backup’
WITH
    NAME=‘name’
–此命令可把数据库备份在对应的path下
–NAME:为此次备份命名

数据库还原
restore database mydb1
from disk='f:\mydb.bak'
with file=1

Restore database database_name
from disk=‘path_database_backup’
With file=number
–number为数值型   代表还原第几次备份
  下标从1开始

删除数据库
DROP DATABASE ‘database_name
–use master
–此命令将删除指定的数据库,并且删除该数据库的物理文件
–数据库删除之后不可恢复

分离数据库
SP_DETACH_DB ‘database_name
–use master,如果选择的是当前数据库侧则能不分离
–此命令可将数据库从服务器上分离
–不可分离当前数据库,需切换至master数据库再执行
–在SQL中,字符串以‘’表示

附加数据库
SP_ATTACH_DB ‘database_name ,D:\Data\test_Data.MDF
–此命令可以将分离后的数据库重新附加到服务器中
此命令需要包含该数据库的主物理文件的路径

删除数据库
drop database dbname



数据类型

W3School

SQL Server 数据类型

Character 字符串:

数据类型
描述
存储
char(n)
固定长度的字符串。最多 8,000 个字符。
n
varchar(n)
可变长度的字符串。最多 8,000 个字符。
 
varchar(max)
可变长度的字符串。最多 1,073,741,824 个字符。
 
text
可变长度的字符串。最多 2GB 字符数据。
 

Unicode 字符串:

数据类型
描述
存储
nchar(n)
固定长度的 Unicode 数据。最多 4,000 个字符。
 
nvarchar(n)
可变长度的 Unicode 数据。最多 4,000 个字符。
 
nvarchar(max)
可变长度的 Unicode 数据。最多 536,870,912 个字符。
 
ntext
可变长度的 Unicode 数据。最多 2GB 字符数据。
 

Binary 类型:

数据类型
描述
存储
bit
允许 0、1 或 NULL
 
binary(n)
固定长度的二进制数据。最多 8,000 字节。
 
varbinary(n)
可变长度的二进制数据。最多 8,000 字节。
 
varbinary(max)
可变长度的二进制数据。最多 2GB 字节。
 
image
可变长度的二进制数据。最多 2GB。
 

Number 类型:

数据类型
描述
存储
tinyint
允许从 0 到 255 的所有数字。
1 字节
smallint
允许从 -32,768 到 32,767 的所有数字。
2 字节
int
允许从 -2,147,483,648 到 2,147,483,647 的所有数字。
4 字节
bigint
允许介于 -9,223,372,036,854,775,808 和 9,223,372,036,854,775,807 之间的所有数字。
8 字节
decimal(p,s)
固定精度和比例的数字。允许从 -10^38 +1 到 10^38 -1 之间的数字。
p 参数指示可以存储的最大位数(小数点左侧和右侧)。p 必须是 1 到 38 之间的值。默认是 18。
s 参数指示小数点右侧存储的最大位数。s 必须是 0 到 p 之间的值。默认是 0。
5-17 字节
numeric(p,s)
固定精度和比例的数字。允许从 -10^38 +1 到 10^38 -1 之间的数字。
p 参数指示可以存储的最大位数(小数点左侧和右侧)。p 必须是 1 到 38 之间的值。默认是 18。
s 参数指示小数点右侧存储的最大位数。s 必须是 0 到 p 之间的值。默认是 0。
5-17 字节
smallmoney
介于 -214,748.3648 和 214,748.3647 之间的货币数据。
4 字节
money
介于 -922,337,203,685,477.5808 和 922,337,203,685,477.5807 之间的货币数据。
8 字节
float(n)
从 -1.79E + 308 到 1.79E + 308 的浮动精度数字数据。 参数 n 指示该字段保存 4 字节还是 8 字节。float(24) 保存 4 字节,而 float(53) 保存 8 字节。n 的默认值是 53。
4 或 8 字节
real
从 -3.40E + 38 到 3.40E + 38 的浮动精度数字数据。
4 字节

Date 类型:

数据类型
描述
存储
datetime
从 1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度为 3.33 毫秒。
8 bytes
datetime2
从 1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度为 100 纳秒。
6-8 bytes
smalldatetime
从 1900 年 1 月 1 日 到 2079 年 6 月 6 日,精度为 1 分钟。
4 bytes
date
仅存储日期。从 0001 年 1 月 1 日 到 9999 年 12 月 31 日。
3 bytes
time
仅存储时间。精度为 100 纳秒。
3-5 bytes
datetimeoffset
与 datetime2 相同,外加时区偏移。
8-10 bytes
timestamp
存储唯一的数字,每当创建或修改某行时,该数字会更新。timestamp 基于内部时钟,不对应真实时间。每个表只能有一个 timestamp 变量。
 

其他数据类型:

数据类型
描述
sql_variant
存储最多 8,000 字节不同数据类型的数据,除了 text、ntext 以及 timestamp。
uniqueidentifier
存储全局标识符 (GUID)。
xml
存储 XML 格式化数据。最多 2GB。
cursor
存储对用于数据库操作的指针的引用。
table
存储结果集,供稍后处理。