【计算机三级数据库技术】第7章 数据库及数据库对象--附思维导图

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
日志服务 SLS,月写入数据量 50GB 1个月
简介: 文章概述了数据库的创建、维护、架构、分区表、索引和索引视图的操作要点,并提供了SQL Server环境下的具体T-SQL命令示例。内容涵盖了数据库文件的管理、架构的使用、分区表的创建和优化、索引的创建与删除,以及索引视图的定义和应用场景。

1.png

1 创建及维护数据库

1.1 SQL Server五个数据库

    master:记录所有系统信息,包括实例范围的元数据、端点、连接服务器和系统配置设置。还记录了所有其他数据库的存在、数据库文件的位置以及SQLServer的初始化信息
    model:用作实例上创建的所有数据库的模板。当用户创建一个数据库时,系统将自动将Model数据库中的全部内容复制到新建数据库中
    temodb:临时数据库,用于保存临时对象或中间结果集,并未数据的排序等操作提供一个临时工作空间
    msdb:供SQL Server 代理服务调度博阿金和作业以及记录操作员时使用,保存关于调度报警、作业、操作员等信息。作业是在SQLserver中定义的自动执行的一系列操作的几何,作业的执行不需要人工干预
    Resource:是一个只读数据库,包含了所有系统对象,SQLServer系统对象在物理上保存在Resource数据库中,但在逻辑上却显示在每个数据库的sys架构中

1.2 组成

(1)数据文件

  • 主要数据文件
    拓展名.mdf,要求不能小于3M,大于model数据库的大小
  • 次要数据文件
    拓展名.ndf

(2)日志文件
拓展名.ldf
(3)数据库存储空间的分配
在SQLServer中,数据的存储分配单位是数据页,一页是一块8KB=(8060B+132B,8060是存放数据,132存放系统信息)的连续磁盘空间

1.3 数据库文件组

(1)主文件组
(2)用户定义文件组
通过create DataBase 或 Alter DataBase 语句中使用Filegroup 关键字指定的任何文件组

1.4 数据库文件的属性

    文件名及其位置
        一般情况下,如果有多个数据文件的话,为了获得更好的性能,建议将文件分散存储在多个物理磁盘上
    初始大小
        在指定主要数据文件的初始大小时,其大小不能小于model数据库主要文件的大小
    增长方式
    最大大小
        是指文件增长的最大空间限制

1.5 T-SQL创建数据库

Create Database database_name 
ON Primary%指定主文件组
(Name =主文件名
FileName =操作系统物理文件名
Size = 文件的初始大小
Maxsize = 文件最大值
FileGrowth =指定文件的自动增量
)
LOG %指定日志文件
(Name =
FileName =
Size = 
Maxsize =
FileGrowth =
)
FileGroup
(Name =
FileName =
Size = 
Maxsize =
FileGrowth =
)

(1)单个数据文件,单个日志文件
(2)多个数据文件,多个日志文件
(3)分组下的多个数据文件,多个日志文件

1.6 修改数据库

(1)扩大数据库空间

  • 添加数据文件
Alter DataBase database_name
ADD File(Name =
FileName =
Size = 
Maxsize =
FileGrowth =)
  • 添加日志文件
Alter DataBase database_name
ADD LOG File(Name =
FileName =
Size = 
Maxsize =
FileGrowth =)
  • 指定要修改的文件
Alter DataBase database_name
Modify File(Name =
FileName =
Size = 
Maxsize =
FileGrowth =)

(2) 收缩数据库空间

  • 收缩整个数据库大小
DBCC ShrinkDatabase
(DataBase_name,20)20表示20%
  • 收缩指定文件大小
DBCC ShrinkFIle
(DataFIle_name,4)4表示4M

(3)添加和删除数据库文件

  • 添加文件(和创建数据库相同)
ALter DataBase
  • 删除文件
Alter DataBase database_name
Remove File datafile_name

1.7 分离和附加数据库

(1)分离数据库

Exec sp_detach_db 'Database_name','True'
True表示跳过更新统计信息

(2)附加数据库

Create DataBase database_name
ON(FIlename=''
For Attach)

2 架构

2.1 概念

是数据库下的一个逻辑命名空间,可以存放表、视图等数据库对象,是一个数据库对象的容器

2.2 定义架构

Create Schema schema_name Authorization user_name

2.3 删除架构

Drop Schema schema_name Cascade|Restrict

Cascade:删除架构的同时将架构中的所有架构对象一起全部删除
Restrict:如果被删除的架构中包含架构对象,则拒绝删除

3 分区表

3.1 概念

是将表中的数据按水平方式划分成不同的子集,这些数据子集存储在数据库的一个或多个文件组中。使用分区可以快速且有效地管理和访问数据子集,从而使大型表或索引更易于管理

3.2 创建分区表

(1)条件

  • 如果表中有大量的数据都是经常使用的数据,而且她们的操作方式基本一样的,则最好不要使用分区表
  • 如果数据量大,而且数据是分段的,并且对不同段的数据使用的操作不同,则适用于使用分区表
    (2)步骤
  • 创建分区函数
Create Partition Function partition_function_name(input_type)
AS Range [ Left |Right] For Values(1,100,1000)

最后的数值表示分区指定边界值,表示四个分区

  • 创建分区方案
Create Partition Schema partition_schema_name As Partition partition_function_name [All] To (test1fg,test2fg,test3fg,test4fg)
  • 使用分区方案创建表
Create Partition Function myRangePF1(int)
AS Range Left For Values(1,100,1000)
Go
Create Partition Schema myRangePS1 As Partition myRangePF1 To (test1fg,test2fg,test3fg,test4fg)
GO 
Create Table PartitionTable(
coll int,
col2 char(10))
ON myRangePS1(col1);

4 索引

4.1 创建索引

Create [Unique][Clustered |NonClustered ] INDEX index_name 
ON 
[Include ]指定要添加到非聚集索引叶级别的非键列
[Where]
[ON {partition_shema_name}指定分区方案{filegroup_name}]为指定文件组创建索引

举例
(1)创建非聚集索引,要求索引键值Cname升序,CardID降序排序

Create Index Comp_index ON Table_customer(Cname ASC,CardID DESC)

(2)创建分区索引,在TransHistory表和ReferOrderID列上为现有分区方案TransactionsPS1创建非聚集分区索引

Create NonClustered INDEX index_name
ON TransHistory(RefreOrderID)
ON TransactionsPS1(TransactionDate);

4.2 删除索引

Drop INDEX Index_name

5 索引视图

5.1 基本概念

标准视图也成虚拟表,因为这种视图所返回的结果集的格式与基本表基本相同,都是由列和行组成,而且在SQL语句中索引视图的方式也与索引基本表的方式相同。标准视图的结果集并不永久地存储在数据库中,每次通过标准视图查询数据时,数据库管理系统都会在内部将视图的定义替换为对基本表的查询语句,然后再对基本表进行查询

5.2 适合建立索引视图的场合

    如果很少更新基础数据,则索引视图的效果最佳
    如果经常更新基础数据,则维护索引视图的成本可能超过使用索引视图带来的性能收益
    如果基础数据以批处理的形式定期更新,但是在更新之间主要作为只读数据进行处理,可考虑在更新前删除所有索引视图,然后再重建索引视图,这样做可以提高更新的性能
    处理大量行的连接和聚合操作
    许多查询经常执行的链接和聚合操作

5.3 定义索引视图

    基本要求
        定义索引视图时,视图不能引用任何其他视图,只能引用索引表
        视图引用的所有基本表必须与视图位于位于同一个数据库中,并且所有者也与视图相同
        必须使用SchemaBinding选项创建视图
        视图中的表达式引用的所有函数必须是确定的
        对视图创建的第一个索引必须是唯一聚集索引,之后再创建其他的非聚集索引
    %定义视图

举例
首先创建一个视图,并未该视图创建一个唯一聚聚索引,然后是一个使用该索引视图查询语句

Create VIew Slaes,vOrders
With SchemaBinding
As
....
%定义索引视图
Go
Create Unique Clustered INDEX Idx_V1
ON Sales.vOrders (OrderDate,ProductID);
Go
...查询语句,不用From 索引视图
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
19天前
|
SQL Java 关系型数据库
探索Java数据库连接的奥秘:JDBC技术全攻略
探索Java数据库连接的奥秘:JDBC技术全攻略
40 8
|
5天前
|
存储 负载均衡 数据库
探索后端技术:从服务器架构到数据库优化的实践之旅
在当今数字化时代,后端技术作为支撑网站和应用运行的核心,扮演着至关重要的角色。本文将带领读者深入后端技术的两大关键领域——服务器架构和数据库优化,通过实践案例揭示其背后的原理与技巧。无论是对于初学者还是经验丰富的开发者,这篇文章都将提供宝贵的见解和实用的知识,帮助读者在后端开发的道路上更进一步。
|
6天前
|
SQL 关系型数据库 MySQL
MySQL技术安装配置、数据库与表的设计、数据操作解析
MySQL,作为最流行的关系型数据库管理系统之一,在WEB应用领域中占据着举足轻重的地位。本文将从MySQL的基本概念、安装配置、数据库与表的设计、数据操作解析,并通过具体的代码示例展示如何在实际项目中应用MySQL。
25 0
|
13天前
|
关系型数据库 Java MySQL
"解锁Java Web传奇之旅:从JDK1.8到Tomcat,再到MariaDB,一场跨越数据库的冒险安装盛宴,挑战你的技术极限!"
【9月更文挑战第6天】在Linux环境下安装JDK 1.8、Tomcat和MariaDB是搭建Java Web应用的关键步骤。本文详细介绍了使用apt-get安装OpenJDK 1.8、下载并配置Tomcat,以及安装和安全设置MariaDB(MySQL的开源分支)的方法。通过这些步骤,您可以快速构建一个稳定、高效的开发和部署环境,并验证各组件是否正确安装和运行。这为您的Java Web应用提供了一个坚实的基础。
28 0
|
15天前
|
SQL 安全 数据库
基于SQL Server事务日志的数据库恢复技术及实战代码详解
基于事务日志的数据库恢复技术是SQL Server中一个非常强大的功能,它能够帮助数据库管理员在数据丢失或损坏的情况下,有效地恢复数据。通过定期备份数据库和事务日志,并在需要时按照正确的步骤恢复,可以最大限度地减少数据丢失的风险。需要注意的是,恢复数据是一个需要谨慎操作的过程,建议在执行恢复操作之前,详细了解相关的操作步骤和注意事项,以确保数据的安全和完整。
30 0
|
18天前
|
C# UED 定位技术
WPF控件大全:初学者必读,掌握控件使用技巧,让你的应用程序更上一层楼!
【8月更文挑战第31天】在WPF应用程序开发中,控件是实现用户界面交互的关键元素。WPF提供了丰富的控件库,包括基础控件(如`Button`、`TextBox`)、布局控件(如`StackPanel`、`Grid`)、数据绑定控件(如`ListBox`、`DataGrid`)等。本文将介绍这些控件的基本分类及使用技巧,并通过示例代码展示如何在项目中应用。合理选择控件并利用布局控件和数据绑定功能,可以提升用户体验和程序性能。
34 0
|
18天前
|
存储 SQL 数据库
|
18天前
|
存储 SQL 数据库
自连接:数据库查询中的镜像技术
【8月更文挑战第31天】
9 0
|
24天前
|
存储 前端开发 关系型数据库
Linux 技术架构:前端、后端与数据库的完美融合
【8月更文挑战第25天】本文深入剖析了Linux操作系统的技术架构,重点介绍了前端、后端及数据库三大核心组成部分。Linux前端技术不仅涵盖了图形用户界面(GUI),包括GNOME、KDE等桌面环境,还涉及HTML、CSS、JavaScript等Web前端技术及其相关框架。后端技术则聚焦于Python、Java等多种编程语言、Apache和Nginx等Web服务器以及MySQL、PostgreSQL等数据库管理系统。Linux数据库技术覆盖了关系型和非关系型数据库,如MySQL、MongoDB等,并提供了多种数据库管理工具。
44 0