• SqlServer:数据库的创建与修改


    数据库文件

    数据库包括逻辑结构和物理结构两个部分,对应的文件也有逻辑文件和物理文件之分。一个数据库对应的物理文件主要有以下 4 种类型:

    1. 主数据库文件:也叫行数据文件,类型名是 .mdf,存储数据库的启动信息和全部数据内容,一个数据库至少要有一个 mdf 文件;
    2. 辅助数据库文件:也称次要数据库文件,类型名是 .ndf,用于存储除了主数据库文件之外的其他文件信息,一个数据库可以有 0 个或者一个以上的 .ndf 文件;
    3. 事务日志文件:类型名是 .ldf,记录对数据库的操作情况,系统会自动将用户名、登录日期、机器名、操作内容等信息按照时间的先后顺序记录在日志文件中;
    4. 文件流文件:SQL Server 允许以文件流文件的形式存放大对象数据,而不必将所有数据都保存到数据文件中。

    一个数据库至少应该包含一个主数据库文件和一个事务日志文件,当一个数据库数据内容非常多时,数据文件也会有多个。为方便管理可以将文件分成若干组,称为文件组,每一个数据文件必须属于且只能属于一个组,系统默认的文件组是 PRIMARY,即主文件组。

    创建数据库

    创建数据库就是确定数据库名,并设置对应的参数,包括所有者、磁盘文件名及存储位置、初始大小、最大容量、增长速度。创建数据库有两种方法:一种是用 SSMS 管理器的菜单方式,另一种是用命令方式,其中命令方式的用途更广泛。

    CREATE DATABASE 命令

    CREATE DATABASE 命令创建一个新数据库及存储该数据库的文件,或从先前创建的数据库的文件中附加数据库。CREATE DATABASE 命令的主要语法为:

    CREATE DATABASE database_name 
    

    其中 CREATE DATABASE 命令的参数较多,具体可以查看说明文档,本文将展示一些常用的用法。

    使用样例

    样例一

    创建数据库 DBA,不指定任何文件。

    CREATE DATABASE DBA
    GO
    

    样例二

    创建数据库 DBB,仅指定一个数据文件 DBB_dat。

    CREATE DATABASE DBB  
    ON   
    ( 
        NAME = DBB_dat,  
        FILENAME = '(文件路径省略)DBBdat.mdf',  
        SIZE = 10,  
        MAXSIZE = 50,  
        FILEGROWTH = 5 
    ) 
    GO
    

    样例三

    创建数据库 DBC,指定一个大小 5MB,最大 10,增长 10% 的数据文件 DBC_dat,和一个大小 3,最大 10MB,增长 2 的日志文件 DBC_log。

    CREATE DATABASE DBC 
    ON   
    ( 
        NAME = DBC_dat,  
        FILENAME = '(文件路径省略)DBCdat.mdf',  
        SIZE = 5,  
        MAXSIZE = 10,
        FILEGROWTH = 10% 
    )
    LOG ON  
    (
        NAME = DBC_log,  
        FILENAME = '(文件路径省略)DBClog.ldf',
        SIZE = 3MB,  
        MAXSIZE = 10MB,  
        FILEGROWTH = 2MB 
    )  
    GO 
    

    样例四

    创建数据库 DBD,主文组中 1 个数据文件。并增加一个文件组,并其中增加 1 个数据文件和 2 个日志文件。

    CREATE DATABASE DBD
    ON
    PRIMARY ( 
        NAME = DBD_dat1,
        FILENAME = '(文件路径省略)DBDdat1.mdf',
        SIZE = 10MB,
        MAXSIZE = 20,
        FILEGROWTH = 2
    ),
    FILEGROUP SalesGroup1
    ( 
        NAME = SC1DBD_dat2,
        FILENAME = '(文件路径省略)DBDdat2.mdf',
        SIZE = 5,
        MAXSIZE = 10,
        FILEGROWTH = 5 
    )
    LOG ON 
    ( 
        NAME = DBD_log1,
        FILENAME = '(文件路径省略)DBDlog1.ldf',
        SIZE = 10MB,
        MAXSIZE = 20,
        FILEGROWTH = 2
    ),
    ( 
        NAME = DBD_log2,
        FILENAME = '(文件路径省略)DBDlog2.ldf',
        SIZE = 10MB,
        MAXSIZE = 20,
        FILEGROWTH = 2
    )
    GO 
    

    分离、附加数据库

    分离数据库

    SQL Server 允许分离数据库的数据和事务日志文件,然后将其重新附加到另一台服务器。分离数据库将从 SQL Server 删除数据库,但是保持组成该数据库的数据和事务日志文件中的数据库完好无损。语法为如下,其中 dbname 参数为要分离的数据库名称。

    sp_detach_db [ @dbname = ] 'dbname' [ , [ @skipchecks = ] 'skipchecks' ]
    

    附加数据库

    将需要将被分离的数据库重新附加时,必须指定主数据文件的名称和物理位置。语法为如下,其中 dbname 参数为要附加的数据库名称,filename_n 参数为数据库文件的路径和名称。

    sp_attach_db [ @dbname = ] 'dbname' , [ @filename1 = ] 'filename_n' [ ,...16 ]
    

    样例

    分离数据库 DBA,把数据库所有文件直接拷贝到其他文件夹后附加该数据库。首先使用 sp_detach_db 分离数据库:

    EXEC sp_detach_db DBA
    

    此时数据库 DBA 已经分离,在 MSSMS 已经看不到了,但是在文件系统中还是存在。直接将这个文件拷贝到其他的文件夹(例如 d:DB_text),使用 sp_attach_db 附加数据库。

    EXEC sp_attach_db @dbname = DBA, 
    @filename1 = N'd:DB_textDBA.mdf',
    @filename2 = N'd:DB_textDBA_log.ldf'
    

    修改数据库

    ALTER DATABASE

    在数据库中添加或删除文件和文件组,也可用于更改文件和文件组的属性,例如更改文件的名称和大小。ALTER DATABASE 提供了更改数据库名称、文件组名称以及数据文件和日志文件的逻辑名称的能力。

    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 命令的参数较多,具体可以查看说明文档,本文将展示一些常用的用法。

    样例一

    向数据库 DBA 增加一个数据文件和一个日志文件。

    ALTER DATABASE DBA
    ADD FILE 
    (
        NAME = DBA_dat2,
        FILENAME = '(文件路径省略)DBA_dat2.ndf',
        SIZE = 5MB,
        MAXSIZE = 100MB,
        FILEGROWTH = 5MB
    )
    GO
    
    ALTER DATABASE DB010A 
    ADD LOG FILE 
    ( 
        NAME = DBA_log2,
        FILENAME = '(文件路径省略)DBA_log2.ldf',
        SIZE = 10MB,
        MAXSIZE = 20,
        FILEGROWTH = 2
    )
    GO
    


    接着删除数据文件 DBA_dat2 和第二个日志文件 DBA_log2。注意数据文件 DBA.mdf 是主数据文件不能被删除,否则数据库中一个数据文件都没有,就没有了存在的意义了。同理数据文件 DBA_log.ldf 是主日志文件也不能被删除,否则数据库无法记录任何日志信息。

    ALTER DATABASE DBA
    REMOVE FILE DBA_dat2
    GO
    
    ALTER DATABASE DBA
    REMOVE FILE DBA_log2
    GO
    

    样例二

    向数据库 DBB 增加一个文件组 FG,并在其中增加 1 个大小 10Mb 的文件。

    ALTER DATABASE DBB
    ADD FILEGROUP FG
    GO
    
    ALTER DATABASE DBB
    ADD FILE 
    ( 
        NAME = dbb_dat2,
        FILENAME = '(文件路径省略)dbb_dat2.mdf',
        SIZE = 10MB,
        MAXSIZE = 20MB,
        FILEGROWTH = 5MB
    )
    TO FILEGROUP FG
    GO
    
    ALTER DATABASE DBB
    MODIFY FILEGROUP FG DEFAULT
    GO
    


    接着把数据库 DB dbb_dat 文件改为改为 15MB,注意命令 ALTER DATABASE 修改数据文件时,修改后的文件大小必须大于原来的大小,否则报错。

    ALTER DATABASE DBB
    MODIFY FILE
    (
        NAME = dbb_dat2,
        SIZE = 15MB
    )
    GO
    

    删除数据库

    DROP DATABASE

    DROP DATABASE 命令删除一个或多个数据库,同时将删除数据库所使用的数据库文件和磁盘文件。命令的语法如下,其中 database_name 参数为要删除的数据库名称。

    DROP DATABASE database_name [ ,...n ]
    

    样例

    删除数据库 DBC。

    DROP DATABASE DBC
    

    参考资料

    《SqlServer 2014 数据库技术实用教程》,胡伏湘、肖玉朝 主编,清华大学出版社

  • 相关阅读:
    22、输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
    21、我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
    20、一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
    19、一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
    【待补充】算法导论 笔记
    18、大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。 n<=39
    17、把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。
    二分查找算法
    16、用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
    15、输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。
  • 原文地址:https://www.cnblogs.com/linfangnan/p/14564453.html
Copyright © 2020-2023  润新知