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,
size=6MB,
filegrowth=1%
)
(5)
a
、从
SQL Server
中删除数据库,但仍然保存数据和日志文件
exec sp_detach_db mydb
要求:数据库未被使用,数据库中没有未完成的事务,内存中没有该数据库的脏页
b、
附加数据库
exec sp_attach_db MyDB,'f:\data\mydb_dat.mdf'
要求:须指定主数据文件的名称和物理位置,可指定当前的文件名
(6)
数据库的备份
backup database mydb to disk='f:\data\database_bak.dat' with name='backup'
还原数据库:
restore database mydb from disk ='f:\data\database_bak.dat' with replace
9、
数据库快照:是指数据库某一时刻的照片,数据库快照是只读静态的,保存的磁盘必须是
NTFS
格式
创建数据快照:
create database mydb1
on
(
name='mydb_dat',
filename='f:\data\mydb1.mdf'
)
as snapshot of mydb
恢复数据快照:
restore database mydb from database_snapshot='mydb1'
10、
导出数据库:右键数据库
--
任务
—
生成脚本