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

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
日志服务 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日志并进行多维度分析。
目录
相关文章
|
1月前
|
存储 NoSQL 关系型数据库
非关系型数据库-MongoDB技术(二)
非关系型数据库-MongoDB技术(二)
|
1月前
|
NoSQL 关系型数据库 MongoDB
非关系型数据库-MongoDB技术(一)
非关系型数据库-MongoDB技术(一)
|
2天前
|
存储 缓存 监控
数据库优化技术:提升性能与效率的关键策略
【10月更文挑战第15天】数据库优化技术:提升性能与效率的关键策略
18 8
|
14天前
|
关系型数据库 分布式数据库 数据库
PolarDB 开源:推动数据库技术新变革
在数字化时代,数据成为核心资产,数据库的性能和可靠性至关重要。阿里云的PolarDB作为新一代云原生数据库,凭借卓越性能和创新技术脱颖而出。其开源不仅让开发者深入了解内部架构,还促进了数据库生态共建,提升了稳定性与可靠性。PolarDB采用云原生架构,支持快速弹性扩展和高并发访问,具备强大的事务处理能力及数据一致性保证,并且与多种应用无缝兼容。开源PolarDB为国内数据库产业注入新活力,打破国外垄断,推动国产数据库崛起,降低企业成本与风险。未来,PolarDB将在生态建设中持续壮大,助力企业数字化转型。
56 2
|
19天前
|
SQL 存储 人工智能
OceanBase CTO杨传辉谈AI时代下数据库技术的创新演进路径!
在「DATA+AI」见解论坛上,OceanBase CTO杨传辉先生分享了AI与数据库技术融合的最新进展。他探讨了AI如何助力数据库技术演进,并介绍了OceanBase一体化数据库的创新。OceanBase通过单机分布式一体化架构,实现了从小规模到大规模的无缝扩展,具备高可用性和高效的数据处理能力。此外,OceanBase还实现了交易处理、分析和AI的一体化,大幅提升了系统的灵活性和性能。杨传辉强调,OceanBase的目标是成为一套能满足80%工作负载需求的系统,推动AI技术在各行各业的广泛应用。关注我们,深入了解AI与大数据的未来!
|
29天前
|
SQL 关系型数据库 数据库连接
php连接数据库之PDO,PDO的简单使用和预定义占位符的使用以及PDOStatement对象的使用,占位符的不同形式,bindValue和bindParam绑定预定义占位符参数的区别
本文介绍了PHP中PDO(PHP Data Objects)扩展的基本概念和使用方法。内容包括PDO类和PDOStatement类的介绍,PDO的简单使用,预定义占位符的使用方法,以及PDOStatement对象的使用。文章还讨论了绑定预定义占位符参数的不同形式,即bindValue和bindParam的区别。通过具体示例,展示了如何使用PDO进行数据库连接、数据查询、数据插入等操作。
php连接数据库之PDO,PDO的简单使用和预定义占位符的使用以及PDOStatement对象的使用,占位符的不同形式,bindValue和bindParam绑定预定义占位符参数的区别
|
1月前
|
存储 负载均衡 数据库
探索后端技术:从服务器架构到数据库优化的实践之旅
在当今数字化时代,后端技术作为支撑网站和应用运行的核心,扮演着至关重要的角色。本文将带领读者深入后端技术的两大关键领域——服务器架构和数据库优化,通过实践案例揭示其背后的原理与技巧。无论是对于初学者还是经验丰富的开发者,这篇文章都将提供宝贵的见解和实用的知识,帮助读者在后端开发的道路上更进一步。
|
1月前
|
SQL 关系型数据库 MySQL
MySQL技术安装配置、数据库与表的设计、数据操作解析
MySQL,作为最流行的关系型数据库管理系统之一,在WEB应用领域中占据着举足轻重的地位。本文将从MySQL的基本概念、安装配置、数据库与表的设计、数据操作解析,并通过具体的代码示例展示如何在实际项目中应用MySQL。
77 0
|
1月前
|
关系型数据库 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应用提供了一个坚实的基础。
46 0