zoukankan      html  css  js  c++  java
  • SQL SERVER基本知识

    微软官方文档:https://docs.microsoft.com/zh-cn/sql/sql-server/?view=sql-server-ver15

    SQL Server 中的数据库由表的集合组成,这些表用于存储一组特定的结构化数据。 表中包含行(也称为记录或元组)和列(也称为属性)的集合。 表中的每一列都用于存储某种类型的信息,例如,日期、名称、金额和数字。

    实例是数据库模式的一个具体对象。一台计算机可以安装一个或多个 SQL Server 实例。 每个 SQL Server 实例可以包含一个或多个数据库。 在数据库中,有一个或多个对象所有权组(称为架构)。 在每个架构中,都存在数据库对象,如表、视图和存储过程。 某些对象(如证书和非对称密钥)包含在数据库中,但不包含在架构中。

    SQL Server 数据库存储在文件的文件系统中。 可将文件分为若干文件组。

    如果某人获得对 SQL Server 实例的访问权限,则将其标识为一个登录名。 当某些人获取对数据库的访问权限时,他们将被标识为数据库用户。 数据库用户可以基于登录名。 如果启用包含的数据库,则可以创建不基于登录名的数据库用户。

    可以授予对数据库具有访问权限的用户访问数据库中对象的权限。 尽管可以将权限授予各个用户,但建议创建数据库角色,将数据库用户添加到角色中,然后对角色授予访问权限。 对角色(而不是用户)授予权限更容易保持权限一致,随着用户数目的增长和持续更改也更易于了解。

    大多数使用数据库的人员都使用 SQL Server Management Studio 工具。 Management Studio 工具有一个图形用户界面,用于创建数据库和数据库中的对象。 Management Studio 还具有一个查询编辑器,用于通过编写 Transact-SQL 语句与数据库进行交互。

    系统数据库:

    master:记录 SQL Server实例的所有系统级信息。

    msdb数据库:用于 SQL Server 代理计划警报和作业。

    model数据库:用作 SQL Server实例上创建的所有数据库的模板。 model 数据库进行的修改(如数据库大小、排序规则、恢复模式和其他数据库选项)将应用于以后创建的所有数据库。

    resource数据库:一个只读数据库,包含 SQL Server包括的系统对象。 系统对象在物理上保留在 Resource 数据库中,但在逻辑上显示在每个数据库的 sys 架构中。

    tempdp数据库:一个工作空间,用于保存临时对象或中间结果集。

    包含的数据库:独立于实例之外的数据库

    数据库分离和附加:分离数据库是指将数据库从 SQL Server 实例中删除,但使数据库在其数据文件和事务日志文件中保持不变。 之后,就可以使用这些文件将数据库附加到任何 SQL Server实例,包括分离该数据库的服务器。可以分离数据库的数据和事务日志文件,然后将它们重新附加到同一或其他 SQL Server实例。 如果要将数据库更改到同一计算机的不同 SQL Server 实例或要移动数据库,分离和附加数据库会很有用。

    更改数据库大小:数据库-右键-属性-文件

    显示数据库的数据和日志空间信息:数据库-右键-报表-磁盘使用情况

    SQL Server可用的索引类型:哈希、内存优化非聚集索引、聚集、非聚集、唯一、XML等。

    视图:是一个虚拟表,其内容由查询定义。 同表一样,视图包含一系列带有名称的列和行数据。 视图在数据库中并不是以数据值存储集形式存在,除非是索引视图。 行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。对其中所引用的基础表来说,视图的作用类似于筛选。 定义视图的筛选可以来自当前或其他数据库的一个或多个表,或者其他视图。视图通常用来集中、简化和自定义每个用户对数据库的不同认识。 视图可用作安全机制,方法是允许用户通过视图访问数据,而不授予用户直接访问视图基础表的权限。 视图可用于提供向后兼容接口来模拟曾经存在但其架构已更改的表。 还可以在向 SQL Server 复制数据和从其中复制数据时使用视图,以便提高性能并对数据进行分区。

    SQL Server 中的存储过程是由一个或多个 Transact-SQL 语句或对 Microsoft .NET Framework 公共语言运行时 (CLR) 方法的引用所构成的一个组。可以接受输入参数并以输出参数的格式向调用程序返回多个值、包含用于在数据库中执行操作的编程语句,这包括调用其他过程、向调用程序返回状态值,以指明成功或失败(以及失败的原因)。

    存储过程的好处:

    • 减少了服务器/客户端网络流量。过程中的命令作为代码的单个批处理执行。 这可以显著减少服务器和客户端之间的网络流量,因为只有对执行过程的调用才会跨网络发送。 如果没有过程提供的代码封装,每个单独的代码行都不得不跨网络发送。
    • 更强的安全性。多个用户和客户端程序可以通过过程对基础数据库对象执行操作,即使用户和程序对这些基础对象没有直接权限。 过程控制执行哪些进程和活动,并且保护基础数据库对象。 这消除在了单独的对象级别授予权限的要求,并且简化了安全层。
    • 可在 CREATE PROCEDURE 语句中指定 EXECUTE AS 子句以便实现对其他用户的模拟,或者使用户或应用程序无需针对基础对象和命令的直接权限,即可执行某些数据库活动。 例如,某些操作(如 TRUNCATE TABLE)没有可授予的权限。 若要执行 TRUNCATE TABLE,用户必须对指定表具有 ALTER 权限。 授予用户对表的 ALTER 权限可能不是最佳方法,因为用户将拥有超出截断表的能力的权限。 通过将 TRUNCATE TABLE 语句纳入模块中并指定该模块作为一个有权修改表的用户执行,您可以将截断表的权限扩展至授予其对模块的 EXECUTE 权限的用户。
    • 在通过网络调用过程时,只有对执行过程的调用是可见的。 因此,恶意用户无法看到表和数据库对象名称、嵌入自己的 Transact-SQL 语句或搜索关键数据。
    • 使用过程参数有助于避免 SQL 注入攻击。 因为参数输入被视作文字值而非可执行代码,所以,攻击者将命令插入过程内的 Transact-SQL 语句并损害安全性将更为困难。
    • 可以对过程进行加密,这有助于对源代码进行模糊处理。
    • 代码的重复使用。任何重复的数据库操作的代码都非常适合于在过程中进行封装。 这消除了不必要地重复编写相同的代码、降低了代码不一致性,并且允许拥有所需权限的任何用户或应用程序访问和执行代码。
    • 更容易维护。在客户端应用程序调用过程并且将数据库操作保持在数据层中时,对于基础数据库中的任何更改,只有过程是必须更新的。 应用程序层保持独立,并且不必知道对数据库布局、关系或进程的任何更改的情况。
    • 提高了性能。默认情况下,在首次执行过程时将编译过程,并且创建一个执行计划,供以后的执行重复使用。 因为查询处理器不必创建新计划,所以,它通常用更少的时间来处理过程。
    • 如果过程引用的表或数据有显著变化,则预编译的计划可能实际上会导致过程的执行速度减慢。 在此情况下,重新编译过程和强制新的执行计划可提高性能。

    SQL Server Management Studio (SSMS) 是用于管理任何 SQL 基础结构的集成环境。 使用 SSMS,可以访问、配置、管理和开发 SQL Server、Azure SQL 数据库和 SQL 数据仓库的所有组件。 SSMS 在一个综合实用工具中汇集了大量图形工具和丰富的脚本编辑器,为各种技能水平的开发者和数据库管理员提供对 SQL Server 的访问权限。

    SQL Server 代理是一种 Microsoft Windows 服务SQL Server 代理使用 SQL Server 来存储作业信息。 作业包含一个或多个作业步骤。 每个步骤都有自己的任务。例如,备份数据库。

  • 相关阅读:
    JLable设置复制粘贴
    JLable设置背景颜色
    JFrame 居中显示
    String、StringBuffer、StringBuiler区别
    java读取本地文件
    mybatis 添加后获得该新增数据自动生成的 id
    验证身份证号规则(验证身份证号是否正确)
    MyBatis like (模糊查询)
    MyBatis if test 传入一个数字进行比较报错 There is no getter for property named 'userState' in 'class java.lang.Integer'
    Redis 中 byte格式 写入、取出
  • 原文地址:https://www.cnblogs.com/jade0702/p/12603496.html
Copyright © 2011-2022 走看看