【SQL server速成之路】数据库和表(一)

mjjackey

关注

阅读 33

2022-04-20


数据库和表


在这里插入图片描述

一、基本概念

1.数据库

1.逻辑数据库
从逻辑上看,SQL Server 2012数据库由存放数据的表以及支持这些数据的存储、检索、安全性和完整性的对象所组成。组成数据库的逻辑成分称为数据库对象。
SQL Server 2012的数据库对象主要包括表(table)视图(view)索引( index )存储过程 ( stored procedure )触发器 ( trigger ) 和==约束(constraint)==等,各对象的简要说明列于表中。
在这里插入图片描述
在这里插入图片描述

2.物理数据库
(1)页和区
  SQL Server 2012中有两个主要的数据存储单位:。页是SQL Server 2012中用于数据存储的最基本单位。每个页的大小是8KB,也就是说,SQL Server 2012每 1MB的数据文件可以容纳128页。每页的开头是96字节的标头,用于存储有关页的系统信息。紧接着标头存放的是数据行,数据行按顺序排列。数据库表中的每一行数据都不能跨页存储,即表中的每一行数据字节数不能超过8192个。页的末尾是行偏移表,对于页中的每一行在偏移表中都有一个对应的条目。每个条目记录着对应行的第一个字节与页首部的距离。

(2)数据库文件
  SQL Server 2012所使用的文件包括三类文件:
  ① 主数据文件。主数据文件简称主文件,该文件是数据库的关键文件,包含了数据库的启动信息,并且存储数据。每个数据库必须有且仅能有一个主文件,其默认扩展名为.mdf。
   ② 辅助数据文件。辅助数据文件简称辅(助)文件,用于存储未包括在主文件内的其他数据,默认扩展名为.ndf。一般当数据库很大时,有可能需要创建一个或多个辅助文件。而数据库较小时,则只要创建主文件而不需要辅助文件。
  ③ 日志文件。日志文件用于保存恢复数据库所需的事务日志信息。每个数据库至少有一个日志文件。日志文件的扩展名为.ldf。

(3)文件组
  使用文件组可以提高表中数据的查询性能。在SQL Server 2012中有两类文件组:
  ① 主文件组。主文件组包含主要数据文件和任何没有明确指派给其它文件组的其它文件。管理数据库的系统表的所有页均分配在主文件组中。
   ② 用户定义文件组。每个数据库中都有一个文件组作为默认文件组运行。若 在SQL Server 2012中创建表或索引时没有为其指定文件组,那么将从默认文件组中进行存储页分配、查询等操作。用户可以指定默认文件组,如果没有指定默认文件组,则主文件组是默认文件组。

2.表

1.表(Table)
  表是在日常工作和生活中经常使用的一种表示数据及其关系的形式,例如下表就是一个图书管理系统中的学生情况表。
在这里插入图片描述

  2.表示实体的表和表示联系的表数据库不仅要反映数据本身的内容,而且要反映数据之间的联系。关系数据库用统一的表示形式——表来表示这两方面内容,所以在关系数据库中,包含了反映实体信息的表和反映实体之间联系的表。
例如,在图书管理数据库中,学生表表示了学生这一实体的信息;图书表表
示了图书馆拥有的可借阅图书这一实体的信息,如表所示。
在这里插入图片描述

二、操作数据库

1.界面方式操作数据库

1.创建数据库
  下面以创建名为xsbook的图书管理数据库为例,说明界面方式创建数据库的过程。
  【例】 创建数据库xsbook,初始大小为5MB,最大大小200MB,数据库自动增长,增长方式是按10%比例增长;日志文件初始为2MB,最大可增长到10MB,按1MB增长。假设SQL Server服务已启动,并以Administrator身份登录计算机。
  (1)以系统管理员身份登录计算机,在桌面上单击“开始”à“所有程序”à“Microsoft SQL Server 2012”à选择并启动“SQL Server Management Studio”。如图所示,使用默认的系统配置连接到数据库服务器。
在这里插入图片描述
  (2)进入SQL Server Management Studio主界面,选择“对象资源管理器”中的服务器目录下的“数据库”目录,右击鼠标,在弹出的快捷菜单中选择“新建数据库”菜单项,打开“新建数据库”窗口。
  (3)“新建数据库”窗口的左上方共有三个选项卡:“常规”、“选项” 和“文件组”。这里只配置“常规”选项卡,其他选项卡使用系统默认设置。 在“新建数据库”窗口的左上方选择“常规”选项卡,在“数据库名称”文 本框中填写要创建的数据库名称“xsbook”,并设置其他选项的值,如图所示。
在这里插入图片描述
  通过单击自动增长标签栏下面的“ ”按钮,出现图3.3所示的对话框,在该对话框中可以设置数据库是否自动增长、增长方式、数据库文件最大文件大小。日志文件的自动增长设置对话框与数据文件类似。
在这里插入图片描述

到这里数据库xsbook已经创建完成了,此时,可以在“对象资源管理器”窗 口的“数据库”目录下找到该数据库所对应的图标,如图所示。
在这里插入图片描述
2.修改数据库
  在数据库创建后,数据文件和日志文件名就不能改变了。对已存在的数据库可以进行如下的修改: l 增加或删除数据文件; l 改变数据文件的大小和增长方式; l 改变日志文件的大小和增长方式; l 增加或删除日志文件;
  (1)改变数据文件的大小和增长方式。选择“文件”à在窗口右边的“初始
大小”列中输入要修改的数据库的初始大小。
  (2)添加数据文件。当原有数据库的存储空间不够时,除了可以采用扩大原有数据文件的存储量的方法之外,还可以增加新的数据文件。或者,从系统管理的需求出发,采用多个数据文件来存储数据,以避免数据文件过大。此时,会用到向数据库中增加数据文件的操作。
  (3)删除数据文件。当数据库中的某些数据文件不再需要时,应及时将其删 除。在SQL Server 2012中,只能删除辅助数据文件,而不能删除主数据文件。其理由是很显然的,因为在主数据文件中存放着数据库的启动信息,若将其删除,数据库将无法启动。
  (4)增加或删除文件组。数据库管理员(DBA)从系统管理策略角度出发,
有时可能需要增加或删除文件组。

3.删除数据库
  数据库系统在长时间使用之后,系统的资源消耗加剧,导致运行效率下降,因 此数据库管理员需要适时的对数据库系统进行一定的调整。
通常的做法是把一些不需要的数据库删除,以释放被其占用的系统空间和消耗。用户可以利用图形向导方式很轻松的完成数据库系统的删除工作。

2.命令方式操作数据库

1.使用CREATE DATABASE创建数据库

  【例】 使用T-SQL语句,创建xsbook2数据库,数据库配置与xsbook数据相同。在“SQL Server Management Studio”窗口中单击“新建查询”按钮新建一个查询编辑窗口,如图所示。
在这里插入图片描述
  在查询窗口中输入如下T-SQL语句:

CREATE DATABASE xsbook2
ON
(
     NAME= 'xsbook2’,
     FILENAME='D:\SQL 
   Server\2022\data\MSSQL11.SQLSERVER\MSSQL\DATA\xsbook2.mdf',
     SIZE=5MB,
     MAXSIZE=200MB,
     FILEGROWTH=10%
)
LOG ON
(
     NAME='xsbook2_log',
      FILENAME='D:\SQL 
     Server\2022\data\MSSQL11.SQLSERVER\MSSQL\DATA\xsbook2.ldf',
     SIZE=2MB,
     MAXSIZE=5MB,
     FILEGROWTH=1MB
);

  输入完毕后,单击“!执行”按钮。如图3.10所示。从图中可以看到,CREATE DATABASE命令执行时,在结果窗口中将显示命令执行的进展情况。
在这里插入图片描述
  从上面实例已经了解到使用T-SQL语句创建数据库的过程,其核心是

CREATE DATABASE database_name /*指定数据库名*/
[ON子句]      /*指定数据库文件和文件组属性*/
[LOG ON子句]        /*指定日志文件属性*/

T-SQL语法格式
在这里插入图片描述
  2.使用ALTER DATABASE修改数据库
  这部分将讨论使用T-SQL的ALTER DATABASE命令对数据库进行以下修改: l 增加或删除数据文件; l 改变数据文件的大小和增长方式; l 改变日志文件的大小和增长方式; l 增加或删除日志文件; l 增加或删除文件组。

ALTER DATABASE语句的基本语法格式为:
在这里插入图片描述

3. 使用DROP DATABASE删除数据库
在这里插入图片描述

  其中database_name是要删除的数据库名。例如,使用以下命令将删除数据库TEST2:
在这里插入图片描述

3.数据库快照

  数据库快照提供了源数据库在指定时刻的只读、静态视图。数据库在不断变化,但快照一旦创建就不会改变。快照可用于报表。另外,如果源数据库出现用户错误, 还可将源数据库恢复到创建快照时的状态。丢失的数据仅限于创建快照后数据库更 新的数据。
在SQL Server 2012中,创建数据库快照也使用CREATE DATABASE命令。
语法格式:

CREATE DATABASE <数据库快照名>
ON 
(
     NAME = '<逻辑文件名>',
     FILENAME = '<操作系统文件名>' 
) [ ,...n ] 
   AS SNAPSHOT OF <源数据库名>
[;]

在这里插入图片描述

精彩评论(0)

0 0 举报