3.1 创建数据库
在SQL Server 2017中,除了系统数据库之外,如果要使用其他数据库,第1步就是要创建数据库。在创建数据库前,首先需要确定的是数据库存放哪些数据,这样就可以根据数据库的用途来给数据库命名了。
3.1.1 了解数据库的结构
在创建数据库之前,还需要了解一下数据库的结构。在SQL Server数据库中,一个数据库通常由数据文件和事务日志组成,一个数据库可以由一个或多个数据文件和事务日志组成。
数据文件是存储数据的地方,事务日志是用来记录存储数据的时间和操作的,可以根据事务日志来恢复数据库中的数据。因此,不能随便将事务日志文件删除。数据文件的扩展名为.mdf,而事务日志文件的扩展名是.ldf。这样我们在看到扩展名后,就可以知道是数据库中哪种类型的文件了。
虽然数据库可以包含多个数据文件与日志文件,但是数据文件是有主次之分的,主要分为主要数据文件与次要数据文件,因此,一个数据库可以使用三类文件来存储信息。
- 主要数据文件:主要数据文件主要存储数据库的启动信息、用户数据和对象,如果有次要数据文件,其引用信息也包含在内。一个数据库只能有一个主要数据文件,默认文件扩展名为.mdf。
- 次要数据文件:如果主要数据文件超过了单个Windows文件的最大限制,可以使用次要数据文件存储用户数据。次要数据文件可以将数据分散到不同磁盘中,默认文件扩展名为.ndf。
- 事务日志文件:事务日志文件主要用来恢复数据库日志信息,每个数据库至少应该包括一个事务日志文件,默认文件扩展名为.ldf。
3.1.2 创建数据库的语法
在SQL Server 2017中,使用CREATE语句可以创建数据库,该语句的语法格式如下:
主要参数介绍如下。
- database_name:数据库名称,不能与SQL Server中现有的数据库实例名称相冲突,最多可以包含128个字符。数据库名称不能以数据开头,一般是以英文单词或缩写或汉语拼音来命名。
- ON:显示定义,用来存储数据库数据部分的数据文件。如果省略了ON语句,系统也会默认创建一个数据库。数据库的数据文件和日志文件都与数据库的名称一样,只是扩展名不同而已。这样文件会存储到数据库安装的默认路径中。
- PRIMARY:主数据文件。所谓主数据文件就是在创建数据库时指定的第一个数据文件。一个数据库中只能有一个主数据文件,其他的数据文件被称为次要数据文件。如果在创建数据库时没有指定PRIMARY,那么CREATE DATABASE语句中列出的第一个文件将成为主数据文件。
- LOG ON:指定用来存储数据库日志的日志文件。如果没有指定LOG ON,系统也会为其自动创建一个日志文件。
图3-1 创建MR_db数据库
3.1.3 一行语句创建数据库
一行语句其实就是创建数据库的语法只保留必要的关键字,其余的参数由系统自动创建,这一行语句就是CREATE DATABASE database_name。
实例1:创建名称为MR_db数据库。
在“查询编辑器”窗口中输入以下语句。
CREATE DATABASE MR_db;
单击“执行”按钮,即可创建MR_db数据库,这时,在“对象资源管理器”窗口中可以看到新创建的数据库,如图3-1所示。
提示:如果刷新SQL Server 2017中的数据库节点后,仍然看不到新建的数据库,可以重新连接对象资源管理器,即可看到新建的数据库。
3.1.4 创建带有自定义参数的数据库
有时,为方便数据库管理员的管理,也便于查找数据库的位置,通常会在创建数据库时为数据库指定一个保存位置,并设置其他的相关参数。为数据库指定位置不仅可以指定数据文件的位置也可以指定日志文件的位置,一般情况下,会将数据文件和日志文件指定保存在同一个文件夹下。
实例2:创建带有自定义参数的MR_db数据库。
创建MR_db数据库,该数据库的主数据文件逻辑名称为sample-db,物理文件名称为sample.mdf,初始文件大小为10MB,最大尺寸为30MB,增长速度为5%;数据库日志文件的逻辑名称为sample_log,保存日志的物理文件名称为sample.ldf,初始文件大小为5MB,最大尺寸为15MB,增长速度为10%。
在“查询编辑器”窗口中输入以下语句。
单击“执行”命令,命令执行成功之后,在“消息”窗格中显示命令已成功完成的信息提示。刷新SQL Server 2017中的数据库节点,可以在子节点中看到新创建的名称为MR_db的数据库,如图3-2所示。
图3-2 创建带有参数的MR_db数据库
图3-3 “数据库属性”窗口
知识扩展:选择新建的MR_db数据库,右击,在弹出的快捷菜单中选择“属性”命令,打开“数据库属性”窗口,选择“文件”选项,即可查看数据库的相关信息。可以看到,这里各个参数值与SQL代码中指定的值完全相同,如图3-3所示。
注意:在创建数据库之前,要先确保D盘下的database文件夹已经存在,否则在执行代码时,会在“消息”提示框中显示如图3-4所示的错误提示。
3.1.5 创建包含多个文件的数据库
一个数据库只能包含一个数据文件与一个日志文件吗?当然不是了。在创建数据库时,我们可以根据需要定义多个数据文件或日志文件。那么,一个数据库中会包含无数个数据文件吗?当然也不是了,它最大包含32 767个文件。
图3-4 错误提示信息
实例3:创建包含有多个文件的数据库。
创建数据库FU_db,该数据库包含两个数据文件和两个日志文件,在“查询编辑器”窗口中输入以下语句。
单击“执行”按钮,命令执行成功之后,在“消息”窗格中显示命令已成功完成的信息提示。刷新SQL Server 2017中的数据库节点,可以在子节点中看到新创建的名称为FU_db的数据库,如图3-5所示。
图3-5 创建FU_db数据库
选择FU_db数据库,右击,在弹出的快捷菜单中选择“属性”命令,打开“数据库属性”窗口,选择“文件”选项,可以在“数据库文件”窗口中查看该数据库包含的文件信息,包括逻辑名称、文件类型、文件组、大小等,如图3-6所示。
另外,打开D盘目录下的database文件夹,可以看到里面有4个与FU_db数据库相关的数据文件,如图3-7所示。
图3-6 “数据库属性”窗口
图3-7 database文件夹
注意:在数据库中,数据文件与日志文件是不能重名的。实际上,一个数据库只有一个主数据文件,扩展名为.mdf,其他数据文件为次要数据文件,其扩展名为.ndf。
3.1.6 创建包含文件组的数据库
创建包含文件组数据库的语法格式与创建包含多个文件数据库的语法类似。数据库中的文件组从字面上理解,就是在文件组中存放多个文件。在每一个数据库中都可以存在多个文件组,而且一定会有一个主文件组,其他的文件组为用户自定义文件组。
实例4:创建包含文件组的EM_db数据库。
创建数据库EM_db,该数据库包含一个自定义文件组,在“查询编辑器”窗口中输入以下语句。
单击“执行”按钮,命令执行成功之后,在“消息”窗格中显示命令已成功完成的信息提示。刷新SQL Server 2017中的数据库节点,可以在子节点中看到新创建的名称为EM_db的数据库,如图3-8所示。
图3-8 创建EM_db数据库
图3-9 选择“文件组”选项
选择EM_db数据库,右击,在弹出的快捷菜单中选择“属性”命令,打开“数据库属性”窗口,选择“文件组”选项,可以在右侧的窗口中查看该数据库包含的文件组信息,包括文件组的名称、包含的文件数量等,如图3-9所示。
知识扩展:在创建数据库时,数据文件或日志文件的大小一定要大于512KB,否则就无法成功创建数据库。另外,文件的单位不仅可以为KB或MB,还可以是GB、TB等单位。在文件增长量部分也可以使用百分比的形式,可使用KB或MB作为其单位。如果不能预测数据库的最大容量,可以将maxsize的值设置成Unlimited(无限制)。
3.1.7 以图形向导方式创建数据库
在SQL Server Management Studio中,我们可以以图形向导方式创建数据库,还可以在创建数据库时更改数据文件的大小、文件的存放位置以及添加文件、使用文件组等操作。
创建my_db数据库的过程可以分为如下几步。
(1)启动SQL Server Management Studio并登录到SQL Server 2017数据库,在“对象资源管理器”中打开“数据库”节点,选择“数据库”节点,右击,在弹出的快捷菜单中选择“新建数据库”命令,如图3-10所示。
(2)打开“新建数据库”窗口,默认选择“常规”选项,在“常规”选项卡中设置创建数据库的参数,这里输入数据库的名称,并设置初始大小等参数,如图3-11所示。
图3-10 选择“新建数据库”命令
图3-11 “新建数据库”窗口
注意:数据库名称中不能包含以下Windows不允许使用的非法字符:“"”“'”“*”“/”“?”“:”“\”“<”“>”“-”。
(3)在“选择页”列表中选择“选项”选项,在打开的界面中可以设置有关选项的相关参数,如图3-12所示。
图3-12 “选项”选项卡
(4)在“文件组”选项卡中,可以设置或添加数据库文件和文件组的属性,例如是否为只读,是否有默认值,如图3-13所示。
(5)单击“确定”按钮,即可创建my_db数据库,在“对象资源管理器”中可以查看新创建的名称为my_db的数据库,如图3-14所示。
图3-13 “文件组”选项卡
图3-14 创建的数据库
注意:SQL Server 2017在创建数据库的过程中,将对数据库进行检验,如果存在一个相同名称的数据库,则创建操作失败,并提示错误信息,如图3-15所示。
图3-15 错误信息提示
微视频