1、 关系数据库
网状数据库和层次数据库已经很好地解决了数据的集中和共享问题,但是在数据独立性和抽象级别上仍有很大欠缺。关系数据模型提供了关系操作的特点和功能要求,无论是实体还是实体间的联系均由单一的结构类型--关系(表)来表示。一个关系数据库就是由若干个表组成。
2、 SQL Server存储
(1) 盘区:区是管理空间的基本单位。一个区是八个物理上连续的页(64K)。这意味着SQL Server数据库没MB有16个区。
(2) 页面:在 SQL Server 中,页的大小为 8 KB。这意味着 SQL Server 数据库中每 MB 有 128 页。每页的开头是 96 字节的标头,用于存储有关页的系统信息。此信息包括页码、页类型、页的可用空间以及拥有该页的对象的分配单元 ID。
(3) 行:在数据页上,数据行紧接着标头按顺序放置。页的末尾是行偏移表,对于页中的每一行,每个行偏移表都包含一个条目。每个条目记录对应行的第一个字节与页首的距离。行偏移表中的条目的顺序与页中行的顺序相反。
3、 数据库类型
master:控制用户数据库和SQL Server操作,存储用户账户、可配置的环境变量、系统错误消息等信息
model:新建用户数据库的模板原型
tempdb:临时表以及其他临时的工作存储需要
msdb:调度信息和作业历史存储区域
4、 SQL表的范式(NF)
(1) 第一范式(1NF):是指数据库表的每一列都是不可分割的基本数据项,同一列中不能也有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。在第一范式中表的每一行只包含一个实例的信息。简而言之,第一范式就是无重复的列。
如图:

(2) 第二范式(2NF):建立在第一范式的基础上,要求数据库表中的每个实例或行可以被唯一的区分,为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识,这个唯一属性列被称为主关键字或主键、主码。第二范式要求实体的属性完全依赖于主关键字。
如图:

(3) 第三范式(3NF):建立在第二范式的基础上,要求一个数据库表不包含在其他表中已包含的非主关键字信息。
如图:
5、 SQL命名规则
对象的名字必段以Unicode2.0规范定义的任意字母开头。包括大部分西文字母A-Z和a-z。
正常对象的名字可多达128个字符,而临时对象的名字可多达116个字符
如果与SQL关键字冲突,或内部有空格的变量,必需使用(””)或方括号([])
6、 数据库用户账户和角色
(1) 登录名:在安全性-登录名,是用户登录SQL Server时所要输入的凭证,可以给登录名设置服务器角色,如果登录名设置成服务器角色,它是对所有数据库有相同权限。登录名是对于整个SQL Server而言的。
(2) 用户名:选择数据相应的数据库,安全性—用户,可以新建用户,新建用户时可以选择登录名。可以通过“安全对象”设置更为细致的用户权限。用户名是对于数据库而言的。
7、 创建数据库
(1) 每个数据库至少有两个文件(一个主文件和一个事务日志文件)和一个文件组。
SQL语句:
create database MyDB
on
(
name=mydb_dat,
filename='f:\data\mydb_dat.mdf',
size=5MB,
maxsize=20mb,
filegrowth=5%
)
log on
(
name=mydb_log,
filename='f:\data\mydb_log.ldf',
size=5MB,
maxsize=20mb,
filegrowth=5%
)
(2) 使用文件组:可以创建同一个文件组,组名默认为primary,数据文件可以存放在不同磁盘上,数据库中的数组是分布在所有的次要文件中。
SQL语句:
create database MyDB
on primary
(
name=mydb_dat,
filename='f:\data\mydb_dat.mdf',
size=6MB,
maxsize=20mb,
filegrowth=5%
),
(
name=dbfg_dat1,
filename='d:\data\mydb_dat1.ndf',
size=5mb,
maxsize=20mb,
filegrowth=5%
),
(
name=dbfg_dat2,
filename='e:\data\mydb_dat2.ndf',
size=5mb,
maxsize=20mb,
filegrowth=1mb
)
log on
(
name=mydb_log,
filename='f:\data\mydb_log.ldf',
size=5MB,
maxsize=20mb,
filegrowth=5%
)
(3) 使用主文件:如果主文件与次要文件,所分的组不同(主文件是primary,次要文件在dbfg中),在创建表时应该在最后跟上组名,否则系统默认创建在主文件组中,不同组中的表的数据增长不影响其他空间的大小。
SQL语句:
create database MyDB
on primary
(
name=mydb_dat,
filename='f:\data\mydb_dat.mdf',
size=6MB,
maxsize=20mb,
filegrowth=5%
),
filegroup dbfg
(
name=dbfg_dat1,
filename='d:\data\mydb_dat1.ndf',
size=5mb,
maxsize=20mb,
filegrowth=5%
),
(
name=dbfg_dat2,
filename='e:\data\mydb_dat2.ndf',
size=5mb,
maxsize=20mb,
filegrowth=1mb
)
log on
(
name=mydb_log,
filename='f:\data\mydb_log.ldf',
size=5MB,
maxsize=20mb,
filegrowth=5%
)
注:当主要文件放不下时,数据放在次要文件中,等所有的次要文件都装满,只要文件的空间增加。
8、 数据库的增查删改
(1) 查看数据库
SQL语句:sp_helpdb mydb
(2) 修改数据库名称:
a、语句修改:alter database mydb modify name=youdb
b、存储过程修改:
exec sp_dboption 'youdb','single',true
exec sp_renamedb 'youdb','mydb'
exec sp_dboption 'mydb','single',false
(3) 修改数据库文件大小
use master
alter database mydb
modify file
(
name=mydb_dat,
size=6MB,
filegrowth=1%
)
(4) 增加数据库文件组
use master
alter database mydb
add file
(
filename='f:\data\mydb_dat1.ndf',
name=mydb_dat1