zoukankan      html  css  js  c++  java
  • Sql Server系列:数据库操作

    1 创建数据库

    1.1 CREATE DATABASE语法

    CREATE DATABASE database_name 
    [ ON 
          [ PRIMARY ] <filespec> [ ,...n ] 
          [ , <filegroup> [ ,...n ] ] 
          [ LOG ON <filespec> [ ,...n ] ] 
    ] 
    [ COLLATE collation_name ]
    <filespec> ::= 
    {
    (
        NAME = logical_file_name ,
        FILENAME = { 'os_file_name' | 'filestream_path' } 
        [ , SIZE = size [ KB | MB | GB | TB ] ] 
        [ , MAXSIZE = { max_size [ KB | MB | GB | TB ] | UNLIMITED } ] 
        [ , FILEGROWTH = growth_increment [ KB | MB | GB | TB | % ] ]
    )
    }

      ON:用来定义数据库的数据文件。PRIMARY指出其后所定义的文件是主数据文件,如果省略,则第一个定义的文件是主数据文件。

      LOG ON:用来定义数据库的日志文件。如果没有LOG ON,SQL Server将自动创建一个日志文件。

      数据库中的文件类型与推荐扩展名:主要数据文件.mdf ,次要数据文件.ndf ,事务日志.ldf 。

    1.2 创建未指定文件的数据库

    -- Drop the database if it already exists
    IF  EXISTS (
        SELECT name 
            FROM sys.databases 
            WHERE name = N'Portal'
    )
    DROP DATABASE Portal
    GO
    
    CREATE DATABASE Portal
    GO

    1.3 创建指定数据文件和事务日志文件的数据库

    CREATE DATABASE [Portal]
     ON  PRIMARY 
    (
        NAME = N'Portal',
        FILENAME = N'F:DatabasePortal.mdf' ,
        SIZE = 5MB ,
        FILEGROWTH = 1MB
     )
     LOG ON
    (
        NAME = N'Portal_log',
        FILENAME = N'F:DatabasePortal_log.ldf' ,
        SIZE = 2MB ,
        FILEGROWTH = 10%
    )

    1.4 创建数据库指定多个数据及事务日志文件

    CREATE DATABASE [Portal]
     ON  PRIMARY 
    (
        NAME = N'Portal',
        FILENAME = N'F:DatabasePortal.mdf' ,
        SIZE = 5MB ,
        FILEGROWTH = 1MB
     ),
     (
        NAME = N'Portal_Data_2014',
        FILENAME = N'F:DatabasePortal_Data_2014.ndf' ,
        SIZE = 5MB ,
        FILEGROWTH = 1MB
     )
     LOG ON
    (
        NAME = N'Portal_log',
        FILENAME = N'F:DatabasePortal_log.ldf' ,
        SIZE = 2MB ,
        FILEGROWTH = 10%
    ),
    (
        NAME = N'Portal_log_2014',
        FILENAME = N'F:DatabasePortal_log_2014.ldf' ,
        SIZE = 2MB ,
        FILEGROWTH = 10%
    )

    1.5 创建具有文件组的数据库

    CREATE DATABASE [Portal]
     ON  PRIMARY 
    (
        NAME = N'Portal',
        FILENAME = N'F:DatabasePortal.mdf' ,
        SIZE = 10MB ,
        FILEGROWTH = 1MB
     ),
     FILEGROUP [SECTION2014] 
     (
        NAME = N'Portal_Data_2014',
        FILENAME = N'F:DatabasePortal_Data_2014.ndf' ,
        SIZE = 5MB ,
        FILEGROWTH = 1MB
     )
     LOG ON
    (
        NAME = N'Portal_log',
        FILENAME = N'F:DatabasePortal_log.ldf' ,
        SIZE = 2MB ,
        FILEGROWTH = 10%
    )

    2 修改数据库

    2.1 修改数据库语法

    ALTER DATABASE database_name 
    {
        <add_or_modify_files>
      | <add_or_modify_filegroups>
    }
    [;]
    
    <add_or_modify_files>::=
    {
        ADD FILE <filespec> [ ,...n ] 
            [ TO FILEGROUP { filegroup_name } ]
      | ADD LOG FILE <filespec> [ ,...n ] 
      | REMOVE FILE logical_file_name 
      | MODIFY FILE <filespec>
    }
    
    <filespec>::=  
    (
        NAME = logical_file_name  
        [ , NEWNAME = new_logical_name ] 
        [ , FILENAME = {'os_file_name' | 'filestream_path' | 'memory_optimized_data_path' } ] 
        [ , SIZE = size [ KB | MB | GB | TB ] ] 
        [ , MAXSIZE = { max_size [ KB | MB | GB | TB ] | UNLIMITED } ] 
        [ , FILEGROWTH = growth_increment [ KB | MB | GB | TB| % ] ] 
        [ , OFFLINE ]
    )  
    
    <add_or_modify_filegroups>::=
    {
        | ADD FILEGROUP filegroup_name 
            [ CONTAINS FILESTREAM | CONTAINS MEMORY_OPTIMIZED_DATA ]
        | REMOVE FILEGROUP filegroup_name 
        | MODIFY FILEGROUP filegroup_name
            { <filegroup_updatability_option>
            | DEFAULT
            | NAME = new_filegroup_name 
            }
    }
    <filegroup_updatability_option>::=
    {
        { READONLY | READWRITE } 
        | { READ_ONLY | READ_WRITE }
    }

    2.2 新增文件组

    ALTER DATABASE [Portal] ADD FILEGROUP [SECTION2014]

    2.3 新增文件指定文件组

    ALTER DATABASE [Portal] ADD FILE
    (
        NAME = N'Portal_Data_2014',
        FILENAME = N'F:DatabasePortal_Data_2014.ndf' ,
        SIZE = 5MB ,
        FILEGROWTH = 1MB
    )
    TO FILEGROUP [SECTION2014]

    2.4 删除数据库文件

    ALTER DATABASE [Portal] REMOVE FILE Portal_Data_2014

    2.5 修改数据名称

    ALTER DATABASE [Portal] MODIFY NAME = [Portal_2014]
    EXEC sp_renamedb [Portal], [Portal_2014]

    2.6 修改设置默认文件组

    ALTER DATABASE [Portal] MODIFY FILEGROUP [PRIMARY] DEFAULT

    3. 删除数据库

    3.1 删除数据库语法

    DROP DATABASE { database_name | database_snapshot_name } [ ,...n ] [;]

      示例

    DROP DATABASE [Portal]

    4. 分离数据库

    使用系统存储过程sp_detach_db分离数据库

    sp_detach_db [ @dbname= ] 'database_name' 
        [ , [ @skipchecks= ] 'skipchecks' ] 
        [ , [ @keepfulltextindexfile = ] 'KeepFulltextIndexFile' ] 
    EXEC sp_detach_db [Portal]

      直接运行分离数据库的SQL语句,可能会提示有进程(用户)正在使用,分离失败。要解决这个问题,先查看哪些进程(用户)正在使用该数据库。

      查看用户和进程

    USE [master]
    sp_who

      先结束占用数据库的进程,再分离数据库

    USE [master]
    
    KILL 55
    KILL 56
    KILL 57
    
    EXEC sp_detach_db [Portal]

    5 附加数据库

    5.1 使用CREATE DATABASE附加数据库

    CREATE DATABASE [Portal]
    ON
    (
        FILENAME = 'F:DatabasePortal.mdf'
    )
    FOR ATTACH
    CREATE DATABASE [Portal]
    ON
    (
        FILENAME = 'F:DatabasePortal.mdf'
    ),
    (
        FILENAME = 'F:DatabasePortal_log.ldf'
    )
    FOR ATTACH

    5.2 使用系统存储过程附加数据库

    EXEC sp_attach_db [Portal], 'F:DatabasePortal.mdf'
    EXEC sp_attach_db [Portal], 'F:DatabasePortal.mdf', 'F:DatabasePortal_log.ldf'

    6 查看数据库信息

      SQL Server中可以使用多种方式查看数据库信息,例如使用目录视图、函数、存储过程等。

    6.1 使用目录视图

      使用目录视图查看数据库基本信息:

      ◊ sys.databse_files:查看数据库文件信息;

      ◊ sys.filegroups:查看数据库组信息;

      ◊ sys.master_files:查看数据库文件的基本信息和状态信息;

      ◊ sys.database:数据库和文件目录视图查看数据库的基本信息。

    SELECT * FROM sys.databases WHERE name = 'Northwind'

    6.2 sp_helpdb

      语法

    sp_helpdb [ [ @dbname= ] 'name' ]

      示例

    EXEC sp_helpdb [Portal]
  • 相关阅读:
    第一次参赛经历:ecfinal总结
    滑雪(dp或记忆化搜索)
    dp入门题(数塔)
    SQL语句:子查询
    【原创】SQL语句原理解析
    gitignore规则探究
    路径分隔符:正斜线/、反斜线、双反斜线\的区别
    高并发系统设计方法
    js变量作用域,变量提升和函数传参
    数据库设计:三范式
  • 原文地址:https://www.cnblogs.com/libingql/p/4081607.html
Copyright © 2011-2022 走看看