zoukankan      html  css  js  c++  java
  • sqlserver数据库使用

    特点:真正的客户机/服务器体系结构

          图形化用户界面

          丰富的编程接口工具

          与Windows NT完全集成

          具有很好的伸缩性

    应用场景:

    主机为Windows系统,主要应用于web网站的建设,承载中小型web后台数据。

    一、启动方式:

    三种

    1.后台启动

    2.sqlserver配置管理器启动

     

    3.在运行窗口使用命令启动

    net start mssqlserver

    net stop mssqlserver

    二、登录验证

     1.windows验证

    2.账号密码验证

    需要先使用windows验证登录后在安全性栏对应角色属性中创建密码,然后就可以使用密码登录了

     

     启动账户

    用户映射

    允许远程访问 

        1 右击自己数据库的连接名

          选择 “方面”
        2 在右上侧 方面框中, 选择“服务器配置”
        3 在下面的方面属性列表中,向下滚动找到以下两项,均设置为  true 
         RemoteAccessEnabled    True
         RemoteDacEnabled      True

    三、数据库管理

    数据库文件在磁盘上的存储形式

    主数据文件:*.mdf (一个库只能有一个)

    辅数据文件:*.ndf

    日志文件:*.ldf

    创建数据库

    1.视图创建数据库(默认工具创建)--略

    2.sql语句创建

    USE master --指向当前使用的数据库
    GO --批处理的标志
    
    IF EXISTS(SELECT * FROM sysdatabases WHERE name='E_Market')
    DROP DATABASE E_Market
    
    CREATE DATABASE E_Market --创建E_Market数据库
    ON PRIMARY --主文件组
    (       
        NAME='E_Market_data', --主文件逻辑文件名
        --主文件物理文件名
        FILENAME='D:\project\E_Market_data.mdf',
        SIZE=5MB, --主文件初始大小
        MAXSIZE=100MB, --主文件增长的最大值
        FILEGROWTH=15% --主文件的增长率
    )
    LOG ON --日志文件
    (
        NAME='E_Market_log', --日志文件逻辑文件名
        FILENAME='D:\project\E_Market_log.ldf', --日志物理文件名
        SIZE=5MB, --日志文件初始大小
        FILEGROWTH=0 --未启用自动增长
    )
    GO

    创建多个数据文件和多个日志文件

    USE master
    GO
    CREATE DATABASE E_Market
    ON PRIMARY --主文件组
    (
        NAME='E_Market_data',
        FILENAME='D:\project\E_Market_data.mdf',
        SIZE=10MB,
        FILEGROWTH=10%,
        MAXSIZE=500MB
    ), --第一个文件组结束
    FILEGROUP FG --第二个文件组,组名:FG
    (
        NAME='FG_E_Market_data',
        FILENAME='D:\project\FG_E_Market_data.ndf',
        SIZE=10MB,
        FILEGROWTH=0
    )
    
    --日志文件不属于任何文件组
    LOG ON
    (
        NAME='E_Market_log',
        FILENAME='D:\project\E_Market_log.ldf',
        SIZE=5MB,
        FILEGROWTH=0
    ),
    --日志2的具体描述
    (
        NAME='E_Market_log1',
        FILENAME='D:\project\E_Market_log1.ldf',
        SIZE=5MB,
        FILEGROWTH=0
    )
    GO

    向现有数据库中添加文件组和数据文件

    方法一:

    在视图下添加文件组和数据文件

    数据库-->属性-->文件组-->添加

    数据库-->属性-->文件-->添加

    方法二:

    使用SQL语句添加文件组和数据文件

    USE E_Market
    --添加文件组FG1
    ALTER DATABASE E_Market ADD FILEGROUP FG1
    GO
    --为新建的文件组FG1添加数据文件
    ALTER DATABASE E_Market ADD FILE
    (
        NAME='FG1_E_Market_data',
        FILENAME='D:\project\FG1_E_Market_data.ndf',
        SIZE=5MB,
        FILEGROWTH=10%
    )TO FILEGROUP FG1
    GO
    --将文件组FG1设为默认文件组
    ALTER DATABASE E_Market
    MODIFY FILEGROUP FG1 DEFAULT
    GO

    删除数据库(谨慎)

    方法一:

    在视图下删除数据库

    数据库-->删除-->勾选删除数据库备份和还原历史记录信息和关闭现有连接

    方法二:

    SQL语句删除数据库

    USE master --指向当前所操作的数据库
    --删除数据库
    DROP DATABASE E_Market
    GO
    
    IF EXISTS(SELECT * FROM sysdatabases WHERE name='E_Market')
    DROP DATABASE E_Market
    GO

    四、数据库用户管理

    1、视图方式

    创建数据库登录名

    安全性-->右键新建登录名

    创建数据库用户

    每一个用来登录sqlserver的登录名都是一个用户

    数据库-->安全性-->新建用户

    用户名再与登录名关联

    步骤:

    先建登录名

    再创建数据库用户

    也可以在创建登录名的时候关联到数据库用户(使用用户映射)

    为数据库用户赋权

    要操作的数据库-->安全性-->用户-->右键属性-->安全对象-->搜索--添加对象、赋权

    2、SQL方式创建登录名及为用户赋予权限

    #创建登录名
    CREATE LOGIN <登录名> WITH PASSWORD=<'密码'>
    
    #创建数据库用户
    CREATE USER 数据库用户 FOR LOGIN 登录名
    
    #为数据库用户赋予权限
    GRANT 操作权限 ON 表名 TO 用户名

    示例:

    --创建登录名
    USE master
    GO
    CREATE LOGIN PbMaster WITH PASSWORD='123456'
    GO
    
    
    --创建数据库用户
    USE E_Market
    GO
    CREATE USER MasterDBUser FOR LOGIN PbMaster
    GO
    
    
    --为数据库用户赋权(查看、新增、修改)
    USE E_Market
    GO
    GRANT SELECT,INSERT,UPDATE ON UserInfo_table TO MasterDBUser
    GO
    
    
    --回收UPDATE权限
    USE E_Market
    GO
    REVOKE UPDATE ON UserInfo_table TO MasterDBUser
    GO

    角色

    服务器角色

    使用自定义登录名登录后,默认只有Pubic服务器角色,初始状态时没有权限,所有数据库用户都是其成员。

    给数据库用户赋予创建和修改数据库的角色

    安全性-->登录名-->右键属性-->服务器角色-->勾选dbcreator角色

    数据库用户角色

    还有个默认的Pubic数据库角色,特殊的固定的数据库用户,每个数据库用户都数据pubic数据库角色

    给自定义数据库用户赋予db_owner数据库角色

    要操作的数据库-->安全性-->用户-->右键属性-->常规-->数据库角色成员身份

    也可以自定义数据库角色--略

    五、数据库的维护

     1.数据库状态

      1)使用sql语句查看数据库状态

    select state_desc from sys.databases where name='E_Market'

      2)使用DATABASEPROPERTYEX(database,property)函数

    select DATABASEPROPERTYEX('E_Market','status')

      3)将数据库设为"脱机"状态(然后就可以复制该数据库文件了)

      要操作的数据库-->右键任务-->脱机

     2.分离与附加数据库

      1)分离数据库

        在视图下:

         要操作的数据库-->右键任务-->分离

        

         使用存储过程(SQL方式):      

    EXEC sp_detach_db @dbname=E_Market
    GO

      

    2)附加数据库

        在视图下:

        数据库-->右键附加-->添加-->指定主数据文件的名称

       

          使用存储过程(SQL方式): 

    EXEC  sp_attach_db  @dbname=E_Market,
    @filename1='H:\project\E_Market_data.mdf',
    @filename2='H:\project\E_Market2_data.ndf',
    @filename3='H:\project\E_Market_log.ldf',
    @filename4='H:\project\E_Market2_log.ldf'
    GO

    脱机与分离数据库的异同点

      相同点:

        都可以对数据库文件进行复制

      不同点:

        脱机:与数据库服务断开连接,但在数据库节点上还存在脱机的数据库名称。

        分离:将数据库从服务器上分离出去,数据库不存在,只存在对应的数据文件和日志文件。

    3.收缩数据库

      删除数据库的每个文件中已经分配但还没有使用的页,收缩后数据库空间自动减少

    收缩方式

      自动收缩数据库

      要操作的数据库-->属性-->选项

      手动收缩数据库

    要操作的数据库-->右键任务-->收缩数据库

    要操作的数据库-->右键任务-->收缩文件

    4.数据库的备份与还原

    sqlserver提供四种数据库备份方式

      1)完整备份:备份整个数据库的所有内容包括事务日志

      2)差异备份:只备份上次完整备份后更改的数据部分

      3)事务日志备份:只备份事务日志里的内容

      4)文件或文件组备份:只备份文件或文件组中的某些文件

    备份操作

    完整备份

    要操作的数据库-->右键任务-->备份

    差异备份

    先完整备份,再差异备份

    还原操作

    完整备份还原

    数据库-->右键还原数据库

    差异备份还原

    先还原完整备份(需要做设置,先不回滚)

    再还原差异

    暂时就到这儿

    好记性不如烂笔头,最难不过坚持
  • 相关阅读:
    Code Forces 650 C Table Compression(并查集)
    Code Forces 645B Mischievous Mess Makers
    POJ 3735 Training little cats(矩阵快速幂)
    POJ 3233 Matrix Power Series(矩阵快速幂)
    PAT 1026 Table Tennis (30)
    ZOJ 3609 Modular Inverse
    Java实现 LeetCode 746 使用最小花费爬楼梯(递推)
    Java实现 LeetCode 745 前缀和后缀搜索(使用Hash代替字典树)
    Java实现 LeetCode 745 前缀和后缀搜索(使用Hash代替字典树)
    Java实现 LeetCode 745 前缀和后缀搜索(使用Hash代替字典树)
  • 原文地址:https://www.cnblogs.com/dannylinux/p/15724705.html
Copyright © 2011-2022 走看看