第六章、数据库及数据库对象

第六章、数据库及数据库对象

内容提要:

1、了解数据库的组成及特点

2、掌握SQL Server2008的安装与配置

3、掌握数据库的创建及维护方法

4、掌握架构的定义与维护方法

5、掌握分区表、索引及视图的创建及维护方法

第一节、创建及维护数据库

1.1、SQL Server数据库概述

  • SQL Server的发展史

    SQL Server 7.0(1999年,正式跻身企业数据库行列)

    SQL Server 2000(2000年,代表产品)

    SQL Server 2005(2005年,代号“Yukon”)

    SQL Server 2008(2008年,重大的产品版本)

    SQL Server 2012

    SQL Server 2014

  • SQL Server的特色

  保护数据库查询

  在服务器的管理操作上花费更少的时间

  增加应用程序稳定性

  系统执行效能优化与预测功能

  • SQL Server的版本

  企业版(Enterprise Edition):为企业级应用提供综合数据平台。

  标准版(Standard Edition):为部门级应用提供支持。

  开发版(Developer Edition):拥有企业版特性,使用限制。

  工作组版(Workgroup Edition):为各分支应用提供支持。

  网络版(Web Edition):提供低成本的WEB应用解决方案。

  移动版(Compact) 支持移动设备。

  免费版(Express):适用于学习及构建小型应用。

  • 安装SQL Server 2008对资源的需求

最低硬件需求

要求 32位 64位
处理器 Pcntium Ⅲ或更高 Itanium、Opteron、Athclon或具有EM64T支持的Xcon/Pcntium
处理器速度 1.0GHz或更高 1.6GHz或更高
内存 512MB 512MB
  • SQL Server中数据库的分类

系统数据库(自动创建)

  1. master:所有系统级信息,元数据、端点、连接服务器和系统配置。
  2. msdb:代理服务调度报警和作业、记录操作员时使用保存此类信息。
  3. tempdb:用于保存临时对象和中间结果,每次启动会重新创建。
  4. model: 所有数据库的模板,存放用户数据库公共信息。
  5. resource:只读数据库。在对象资源管理器中看不到。

用户数据库(保存与用户业务有关的数据)

1.2、SQL Server数据库的组成

  • SQL Server将数据库映射为一组操作系统文件:

  数据文件

  .mdf:主要数据文件。只有一个,大小不得小于3MB。

  .ndf :次要数据文件。有0个或多个,可在一个磁盘或多个磁盘存放。

  日志文件

  .ldf:事务日志文件。至少有一个日志文件。

1.2.1、数据库存储空间的分配

  创建用户数据库时,model数据库被自动复制到新建库。

  数据存储的最小单位:数据页(Page,简称页)。

  1页是一块8KB的连续磁盘空间。(连续的存储空间)

  页的大小决定了数据库表中一行数据的最大大小。

  行不能垮页存储。

1.2.2、练习

例:一个数据表10000行数据,每行3000字节,计算表需要的存储空间。

答案:10000/2*8KB=40MB

空间利用率6000/8000=75%

1.3、数据库文件组

两种类型的文件组:

  主文件组(PRIMARY)

  系统定义,包含主要数据文件和任何没有明确分配的其他文件组的其他数据文件,系统表所有页均分配在主文件组中。

  用户定义文件组

  在定义或修改数据库时用FILEGROUP关键字指定。

注意:

  1. 日志文件不在文件组中,日志空间与数据空间分开管理。
  2. 一个文件不可以是多个文件组成员。
  3. 若文件组包含多个文件,则在所有文件被填满后才会自动循环增长。
  4. 文件加入数据库中后,不能移动到其他文件组。
  5. 只能指定一个文件组为默认文件组。

1.4、数据库文件的属性

定义数据库的数据文件和日志文件所需信息:

文件名及其位置

  逻辑文件名,物理文件名

初始大小

  不能小于model数据库主要数据文件的大小

增长方式

  可指定文件是否自增长(默认)

最大大小

  文件增长的最大限制。默认无限制

增长方式

  可指定文件是否自增长(默认)

最大大小

  文件增长的最大限制。默认无限制

1.5、用T-SQL创建数据库

创建数据库一般有两种方式:

  通过SQL Server Management Studio创建数据库(可视化创建)

  通过T-SQL语句创建数据库(控制台创建)

T-SQL

CREATE DATABASE database_name
//指定创建的数据库逻辑名 如Studentdb
[ ON
   [<filespec> [, … n] ]
   [, <filegroup> [,…n] ]
//指定创建的数据库主文件(mdf)存放的路径比如 e:\Studentdb.mdf
]
[
    LOG ON {<filespec> [,…n]}
    //指定创建的数据库日志文件(ldf)存放的路径比如e:\Studentdb_log.ldf
]
[COLLATE collation_name]
[FOR LOAD| FOR ATTACH]

说明:

PRIMARY :指定为主要数据库文件,没有指定默认第一个文件是主要数据文件。

LOG ON :自动创建日志文件,大小为数据文件总和25%或512KB中大的。

NAME :逻辑文件名,唯一。

FILENAME :物理文件名。

SIZE:初始大小,.mdf大小不小于model,.ndf默认为1MB。

MAXSIZE:最大大小,未指定则文件自动增长到磁盘满。

UNLIMITED :增长无限制,一般指定为日志文件2TB,数据文件16TB.

FILEGROWTH:指定文件自动增量,不超过MAXSIZE.默认数据文件1MB,日志文件为当前文件的10%。

FILEGROUP :文件组逻辑名,唯一,不能是系统名。

DEFAULE :指定该文件组为默认文件组。

案例:

CREATE DATABASE Studentdb
//数据库名
ON
(    NAME = 'Studentdb_Data',
  //主数据文件逻辑名
     FILENAME = 'E:\Studentdb.mdf',
 //主数据文件存放位置
     SIZE = 3MB,
 //主数据文件初始大小
     MAXSIZE = 50MB,
 //主数据文件最大大小
     FILEGROWTH = 10%
 //超过初始大小后文件增长率
)
LOG ON
(    NAME = 'Studentdb_Log',
 //日志文件逻辑名
     FILENAME = 'E:\ Studentdb.ldf',
 //日志文件存放位置
     SIZE = 2MB,
 //日志文件初始大小
     MAXSIZE = 5MB,
 //日志文件最大大小
     FILEGROWTH = 1MB
 //超过初始大小后文件增长率
)
GO
//执行建数据库的命令

1.6、修改数据库

扩大数据库空间

  扩大数据库中已有文件的大小

  为数据库添加新的文件

收缩数据库空间

  即释放数据库中未使用的空间,文件的收缩从末尾开始。

  自动收缩:AUTO_SHRINK,默认false。

  手工收缩:收缩数据库中某个文件大小;

? 按比例收缩整个数据库大小。

添加和删除数据库文件

ALTER DATABASE DATABASE
{ ADD FILE < filespec > [ ,...n ] [ TO FILEGROUP filegroup_name ]
| ADD LOG FILE < filespec > [ ,...n ]
| REMOVE FILE logical_file_name
| ADD FILEGROUP filegroup_name
| REMOVE FILEGROUP filegroup_name
| MODIFY FILE < filespec >
| MODIFY NAME = new_dbname
| MODIFY FILEGROUP filegroup_name {filegroup_property
| NAME = new_filegroup_name }
| SET < optionspec > [ ,...n ] [ WITH < termination > ]
| COLLATE < collation_name >
}

扩大指定文件的大小:

ALTER DATABASE STU_DB
MODIFY FILE(NAME=student_data, SIZE=8MB)

添加新的数据文件:

ALTER DATABASE STU_DB
ADD FILE(NAME=student_data2,
FILENAME=‘E:\Data\student_data2.ndf’,
SIZE=6MB,FILEGROWTH=0)

收缩整个数据库的大小:

DBCC SHRINKDATABASE

收缩指定文件的大小:

DBCC SHRINKFILE

例1:

DBCC SHRINKDATABASE(students,20)

收缩数据库,该数据库所用文件都有20%可用空间

例2:

DBCC SHRINKFILE(students_data1,4)

收缩数据库到4MB大小

删除数据库文件:

ALTER DATABASE STU_DB

REMOVE FILE student_log1

注意:

添加文件时,每个文件组中的数据文件按比例填充,日志文件是依次增加的。

文件为空才能删除。

1.7、分离和附加数据库

分离数据库

作用:实现将数据库从一台数据库服务器移到另一台,不需要重建。

从实例中删除,不删除数据文件和日志文件,保持了数据文件和日志文件完整一致。

使用sp_detach_db系统存储过程实现

如:EXEC sp_detach_db‘student’,‘true’

附加数据库

  将分离的数据库重新附加到数据库管理系统中。

  必须指定主要数据文件的物理存储位置和文件名。

  CREATE DATABASE ……

  FOR ATTACH|ATTACH_REBUILD_LOG

例:

CREATE DATABASE students
On(FILENAME=‘F:\Data\Students_data1.mdf’)
FOR ATTACH

第二节、架构

架构(Schema,也称模式),是数据库下的一个逻辑命名空间,是数据库对象的容器,一个数据库包含一个或多个构架,同一个数据库内架构名唯一。

定义构架

CREATE SCHEMA [<构架名>]
AUTHORIZATION<用户名>

删除构架

DROP SCHEMA [<构架名>]

第三节、分区表

3.1、基本概念

  分区表是将表中的数据按水平分割成不同子集,并将数据子集存储在数据库一个或多个文件组中。物理上将大表分成几个小表,逻辑上还是一个大表。

  合理使用分区能提高数据库性能。

  是否创建分区取决于表当前数据量大小,以及将来数据量,还取决于表中数据的操作特点。

  表包含(或将包含)以多种不同方式使用的大量数据

  数据是分段的,比如以年份分隔。

3.2、创建分区表

三个步骤:

(1)创建分区函数:告诉DBMS(数据库管理系统)以什么方式进行分区

  CREATE PARTITION FUNCTION

(2)创建分区方案:作用是将分区函数生成的分区映射到文件组中

  CREATE PARTITION SCHEME

(3)使用分区创建表

列题:

实例1:

在分区列coll(int)上创建左侧分区函数:

CREATE PARTITION FUCNTION myPF1(int)
AS RANGE LEFT FOR VALUES(1,100,1000);
分区 1 2 3 4
col1<=1 col1>1 AND col1<=100 col1>100 AND col1<=1000 col1>1000

如果使用的是右侧分区

CREATE PARTITION FUCNTION myPF1(int)
AS RANGE RIGHT FOR VALUES(1,100,1000);
分区 1 2 3 4
col1<1 col1>=1 AND col1<100 col1>=100 AND col1<1000 col1>=1000

实例2:

先创建分区函数,再创建分区方案,并创建使用分区的表。

//创建分区函数
CREATE PARTITION FUCNTION myPF1(int) AS RANGE LEFT FOR VALUES(1,100,1000);
GO
//创建分区方案
CREATE PARTITION SCHEME myPS1 AS PARTITION myPF1 TO (
test1fg, test2fg, test3fg, test4fg)
GO
CREATE TABLE PartitionTable(
Coll int,
Col2 char(10)
ON myPS1(coll))

解释:

CREATE PARTITION SCHEME myPS1 AS PARTITION myPF1//分区函数 TO (
test1fg, test2fg, test3fg, test4fg//四个文件组)

CREATE TABLE PartitionTable(
Coll int,
Col2 char(10)
ON myPS1(coll)//对那一列进行分区)

第四节、索引

4.1、创建索引

CREATE [UNIQUE] [CLUSTERED|NONCLUSTERED]
 INDEX   index_name
 ON table_name(column_name…)
 //填充因子(系数):指定一个0~100之间的值,表示索引页填充的百分比
 [WITH FILLFACTOR=x]

INDEX :索引关键词

UNIQUE表示唯一索引,可选

CLUSTERED、NONCLUSTERED表示聚集索引还是非聚集索引,

可选FILLFACTOR表示填充因子,指定一个0到100之间的值,该值指示索引页填满的空间所占的百分比

4.2、删除索引

DROP INDEX

//索引列所在的表或索引视图,和要删除的索引名

‘tablename.indexname|viewtable.indexname‘

//表示可以指定多个要删除的索引

[,...n]

第五章、索引视图

5.1、基本概念

  标准视图也称虚拟表,返回结果集与基本表一致。标准视图的结果集不永久存放;

  建立唯一聚集索引的视图,称为索引视图,也称为物化视图。建立索引后,视图的结果集存放在数据库中

  对基本表的修改会反映到索引视图存储的数据中。

5.2、适合建立索引视图的场合

  很少更新基础数据,索引视图效果更好

  若基础数据以批处理形式定期更新,且主要是作为只读数据进行处理,可考虑在更新前删除所有索引视图,然后重建,提高更新性能。

  • 索引视图可以提高这些查询类型性能

处理大量行的连接和聚合

许多查询经常执行的连接和聚合操作

  • 索引视图通常不会提高这些查询类型性能

具有大量写操作的OLTP系统

具有大量更新操作的数据库

不涉及聚合或连接的查询

GROUP BY具有高基数度的数据聚合。

5.3、定义索引视图

  • 创建聚簇索引前视图必须符合的条件:

定义索引视图时,视图只能引用基本表,不能是其他视图。

引用的所以基本表和视图同一数据库,所有者相同。

必须用SCHEMABINDING选项建视图。

视图中表达式引用的所有函数必须确定。

对视图建立的第一个索引是唯一聚簇索引,之后在创建其他。

CREATE VIEW;WITH SCHEMABINDING; CREATE
UNIQUE CLUSTERED INDEX …

例题:

1、

1、在SQL Server 2008中,主要数据文件必须建立在(  )文件组中。
答案:主

2、

2、不同的数据库管理系统采用的日志文件格式不完全一样,概括起来主要有以记录为单位的日志文件和以(  )为单位的日志文件两种。
答案:数据块

3、

3、在SQL Server 2008中,每个数据页可存储8060字节的数据。设表T有10000行数据,每行占用4031字节,则存储该表数据大约需要(  )MB存储空间,其空间利用率大约是(  )%。(存储空间和空间利用率均保留到整数,小数点后按四舍五入处理)
解:行数据不能跨页存储
4031<8060<4031*2,所以每个页只能存储1行数据
10000*1*8(每页的大小8KB)=80000KB=80MB
[4031/8060]=0.5=50%
答案:80、50

4、

4、在SQL Server 2008中,如果数据库tempdb的空间不足,可能会造成一些操作无法进行,此时需要扩大tempdb的空间。下列关于扩大tempdb空间的方法,错误的是(  )
A.手工扩大tempdb中某数据文件的大小
B.设置tempdb中的数据文件为自动增长方式,每当空间不够时让其自动增长
C.手工为tempdb增加一个数据文件
D.删除tempdb中的日志内容,以获得更多的数据空间
答案:D[删除文件,必须是文件内容为空的时候]

5、

5、设有职工表(职工号,姓名,地址1,地址2),其中,职工号为主码。现要求地址1和地址2组合起来不能有重复值。在SQL Server 2008环境中有下列创建该表的语句:
Ⅰ.CREATE TABLE 职工表(
职工号 int PRIMARY KEY,
姓名 nchar(10),
地址1 nvarchar(20),
地址2 nvarchar(20),
UNIQUE(地址1,地址2)
)
Ⅱ.CREATE TABLE 职工表(
职工号 int PRIMARY KEY,
姓名 nchar(10),
地址1 nvarchar(20),
地址2 nvarchar(20)UNIQUE(地址1,地址2)
)
Ⅲ.CREATE TABLE 职工表(
职工号 int PRIMARY KEY,
姓名 nchar(10),
地址1 nvarchar(20)UNIQUE,
地址2 nvarchar(20)UNIQUE
)
Ⅳ.CREATE TABLE 职工表(
职工号 int PRIMARY KEY,
姓名 nchar(10),
地址1 nvarchar(20) UNIQUE(地址1,地址2),
地址2 nvarchar(20)
)
上述语句能正确实现此约束的是(  )
A.仅Ⅰ和Ⅲ
B.仅Ⅱ和Ⅳ
C.都正确
D.仅Ⅰ、Ⅱ和Ⅳ
答案:D
两个地址不能相同的约束语句是:
UNIQUE(地址1,地址2)

6、

6、在进行数据库物理设计时,为提高查询效率,需要在基本表的一些列上建立索引。有下列情况:
Ⅰ.查询语句的WHERE子句中引用率比较高的列
Ⅱ.经常参与连接操作的列
Ⅲ.经常在order by子句中出现的列
Ⅳ.经常使用LIKE操作符且字符串前后均带有%的列
上述情况中一般情况下适合建立索引的是(  )
A.以上全部
B.仅Ⅰ和Ⅲ
C.仅Ⅱ、Ⅲ和Ⅳ
D.仅Ⅰ、Ⅱ和Ⅲ
答案:D

原文地址:https://www.cnblogs.com/shaoyayu/p/12355330.html

时间: 2024-10-10 14:56:14

第六章、数据库及数据库对象的相关文章

第六章、MySQL数据库入门

1.数据库的概念 数据库是保存数据的仓库,可以方便的把数据放进去,并且把数据根据各种需求取出来. 数据库管理系统(Database Management System,DBMS)是对数据库进行管理(增删改查)的软件,常用的有DBMS有MYSQL.Oracle.DB2.MSSQLServer等.MYSQL是免费.开源的,因此应用最广泛. 不同的DBMS的用法大同小异,掌握一个也就基本等于掌握了其它的DBMS. 2.数据库.表.列 Table(表):书都放到书架上,碗放到橱柜中,不同类型的资料放到不

第六章 Realm及相关对象——《跟我学Shiro》

6.1 Realm [2.5 Realm]及[3.5 Authorizer]部分都已经详细介绍过Realm了,接下来再来看一下一般真实环境下的Realm如何实现. 1.定义实体及关系   即用户-角色之间是多对多关系,角色-权限之间是多对多关系:且用户和权限之间通过角色建立关系:在系统中验证时通过权限验证,角色只是权限集合,即所谓的显示角色:其实权限应该对应到资源(如菜单.URL.页面按钮.Java方法等)中,即应该将权限字符串存储到资源实体中,但是目前为了简单化,直接提取一个权限表,[综合示例

软件工程—第六章

第六章—面向对象基础 面向对象=对象+类+继承+通信.面向对象的软件工程方法有:面向对象分析(OOA),面向对象设计(OOD),面向对象编程(OOP),面向对象测试(OOT),面向对象维护(OOSM). 面向对象的基本概念:对象.类.封装.继承.消息.关联.聚合.多态性. 由于描述系统的复杂性,所以必须为软件的开发建立模型,同时也便利了交流,最后模型还为以后的软件维护和升级提供了文档. UML是一种可视化的建模语言.常用的有:用例图,类图,顺序图,状态图. 用例图描述的是参与者与用例之间的关系,

第六章数据库

第六章 数据库(Mysql) 1. 基本概念 很多功能如果只是通过文件操作来改变数据是非常繁琐的,对于多台机器或者多个进程操作一份数据会存在安全和并发的问题 数据库是一种C/S架构的操作数据文件的一个管理软件能够解决并发问题,更加简单快速的完成数据的增删改查,拥有容错和高可用机制 数据库管理系统(DBMS)专门用来管理数据文件,帮助用户更简洁的操作数据的软件 2. 数据库的类型 关系型数据库:关联性强,一个部分信息可以获取相关全部信息 如:mysql.sql server(收费但是严谨安全性高)

《Android面试宝典》学习笔记(第六章:数据库)

如何将table1的内容复制到table2上? create table table2 as select * from table1; 创建视图的SQL语句? create view if not exists view1 as select * from table1; abs(X)的返回值有几种情况?X为正值和0:返回X: X为负值:返回-X: X为NULL,返回NULL: 不是数值:返回0: 超出范围:溢出错误. 如何获取最近一次SQL语句执行影响的记录行数? select change

翻译brent ozar的sqlserver dba训练课程——第一章:建立数据库服务器清单

在公司里,走进销售副总裁的办公室,询问他手下有多少销售人员.不,我的意思是你并不要那么做,他们会问你销售工具为什么那么慢. 其实我的意思是,如果你能走进他的办公室问他这个问题.我敢打赌,他会马上回答,不会有片刻犹豫.或者你走进ceo的办公室问他有多少员工,或者问cfo年度预算是多少,他们肯定会迅速回答. 因此,我的观点是,当你负责某个事物时,你需要清楚的知道你所负责的是那些. 制作一个表格清单 让我们开始制作一个表格清单.在表格的顶部,我们列出以下列: sqlserver版本(2005.2008

无法为数据库中的对象分配空间,因为&#39;PRIMARY&#39;文件组已满

用SQL Server2012,做数据保存时出错,错误信息:无法为数据库'***'中的对象'***'分配空间,因为'PRIMARY'文件组已满.请删除不需要的文件.删除文件组中的对象.将其他文件添加到文件组或为文件组中的现有文件启用自动增长,以便增加可用磁盘空间. 解决办法:打开SQL Server Management Studio,右键报错的数据库,选择"属性",弹出对话框,选择"文件"页签,查看是否限制了数据库文件增长,若没有做限制,再查看磁盘剩余空间是否足够

未能为数据库 &#39;*&#39;中得对象&#39;*&#39;分配空间,因文件组&#39;PRIMARY&#39;已满

服务器使用mssqlserver2005,最近经常出现无法新增信息错误,查看日志,发现严重错误提示,内容大致为: 无法为数据库 'weixin_main' 中的对象 'dbo.wx_logs'.'PK_wx_logs_id' 分配空间,因为 'PRIMARY' 文件组已满.请删除不需要的文件.删除文件组中的对象.将其他文件添加到文件组或为文件组中的现有文件启用自动增长,以便增加可用磁盘空间. 打开企业管理器,右键报错的数据库,选择“属性”,弹出对话框,发现常规标签页的可用空间显示只有1.03M,

第20章 数据库操作----数据库种类

常见主流数据库分类: DB2, Oracle, Informix, Sybase, SQL Server, PostgreSQL, mySQL, Access数据库, FoxPro数据库, Teradata  1.IBM 的DB2 DB2是IBM著名的关系型数据库产品,DB2系统在企业级的应用中十分广泛.截止2003年,全球财富500强(Fortune 500)中有415家使用DB2,全球财富100强(Fortune100)中有96家使用DB2,用户遍布各个行业.2004年IBM的DB2就获得相