首页 > 数据库 >第二单元 数据库操作

第二单元 数据库操作

时间:2023-11-23 20:23:36浏览次数:50  
标签:文件 数据文件 database -- 数据库 单元测试 第二 单元

1. 数据库文件组成

主数据文件

  • 主要数据文件的建议文件扩展名是 .mdf

  • 主要数据文件包含数据库的启动信息,并指向数据库中的其他文件,存储部分或全部的数据。用户数据和对象可存储在此文件中,也可以存储在次要数据文件中。

  • 每个数据库有一个主要数据文件。

  • mdf文件并非普通文件,因此不借助相应软件是无法打开 mdf文件的。打开mdf文件的常用虚拟光驱软件主要有:Daemon Tools 、东方光驱魔术师等。

次要数据文件 (*.ndf

  • 次要数据文件的建议文件扩展名是 .ndf

  • 次要数据文件是可选的,由用户定义并存储用户数据,用于存储主数据文件未能存储的剩余数据和一些数据库对象。

  • 通过将每个文件放在不同的磁盘驱动器上,次要文件可用于将数据分散到多个磁盘上。

  • 如果数据库超过了单个 Windows 文件的最大大小,可以使用次要数据文件,这样数据库就能继续增长。

事务日志 (*.ldf

  • 事务日志的建议文件扩展名是 .ldf

  • 事务日志文件保存用于恢复数据库的事务日志信息。数据库的插入、删除、更新等操作都会记录在日志文件中,而查询不会记录在日志文件中。整个的数据库有且仅有一个日志文件。

  • 每个数据库必须至少有一个日志文件。

2. 文件组

不同的文件可以存分布到不同的物理硬盘上,这样便于分散硬盘IO,提高数据的读取速度。

数据文件的组合,称作文件组(File Group),数据库不能直接设置存储数据的数据文件,而是通过文件组来指定。

文件和文件组的关系

SQL Server 的数据存储在文件中,文件是实际存储数据的物理实体,文件组是逻辑对象,SQL Server 通过文件组来管理文件。

一个数据库有一个或多个文件组,其中主文件组(Primary File Group)是系统自动创建的,用户可以根据需要添加文件组。 每一个文件组管理一个或多个文件,其中主文件组中包含主要数据文件(*.mdf),主文件组中也可以包含次要数据文件 。(主要数据文件是系统默认生成的,并且在数据库中是唯一的;次要数据文件是用户根据需要添加的。) 除了主文件组之外,其他文件组只能包含辅助文件。 如下示例数据库,系统已自动创建主文件组 PRIMARY,勾选 Default 表示将主文件组设置为默认文件组,即如果在 create table 和 create index 时没有指定 FileGroup 选项,那么 SQL Server 将使用默认的 PRIMARY 文件组来存储数据。

在这里插入图片描述

文件组是一个逻辑实体,实际上,数据存储在文件中(.mdf和.ndf)中,每一个文件组中都包含文件,如下图:

在这里插入图片描述

由上图可以看到,数据库文件的元数据:

Logical Name – 文件的逻辑名称,用于数据压缩 DBCC ShrinkFile 等; File Type – 文件类型,有两种:Rows Data(存储数据)和 Log(存储日志); Initial Size – 文件初始大小; Autogrowth/Maxsize – Autogrowth 表示文件自动增加的步长,

Maxsize 表示文件大小的最大值限制; Path – 文件存放路径; File Name – 文件的物理名称,逻辑名称和物理名可以不同 。

使用文件组的优势

在实际开发数据库的过程中,通常情况下,用户需要关注文件组,而不用关心文件的物理存储,即使DBA改变文件的物理存储,用户也不会察觉到,也不会影响数据库去执行查询。除了逻辑文件和物理文件的分离之外,SQL Server使用文件组还有一个优势,那就是分散IO负载,其实现的原理是:

对于单分区表,数据只能存到一个文件组中。如果把文件组内的数据文件分布在不同的物理硬盘上,那么SQL Server能同时从不同的物理硬盘上读写数据,把IO负载分散到不同的硬盘上。 对于多分区表,每个分区使用一个文件组,把不同的数据子集存储在不同的磁盘上,SQL Server在读写某一个分组的数据时,能够调用不同的硬盘IO。

 

3. 数据库操作

1. 使用SSMS方式

SSMS : Microsoft SqlServer Management Studio, 也就是数据库管理软件。

  1. 在对象资源管理器中,右键单击数据库文件夹/图标,然后选择 New database...

img

  1. 进行数据库命名,此处叫 “TaskTracker”,然后点击 “OK”

    img

  2. 数据库展示

    img

2. T-SQL 方式

1. 创建数据库

-- 创建数据库
create database 第二单元测试
-- 指定数据文件存储的文件组  on:在。。。。这上,primary:主文件组
on primary  
(
    -- 数据库的逻辑名称:相当于是某人的外号
    Name = '第二单元测试', -- 逻辑名称需要是唯一
    filename = 'D:\test\第二单元测试_物理名称.mdf', -- 物理名称
    size=5mb, -- 文件初始大小,初始化必须>=5 ,因为创建数据库的model 模板信息 必须是5mb以上
    filegrowth = 4mb,  -- 每次增长多少
    maxsize =200mb  -- 文件的最大值
);

 

2. 创建次文件

alter database 第二单元测试
add file
(
    -- 数据库的逻辑名称:相当于是某人的外号
    Name = '第二单元测试_次文件',
    filename = 'E:\test\第二单元测试_次文件.ndf', -- 物理名称
    size=5mb, -- 文件初始大小,初始化必须>=5 ,因为创建数据库的model 模板信息 必须是5mb以上
    filegrowth = 4mb,  -- 每次增长多少
    maxsize =200mb  -- 文件的最大值
)

 

3. 简化创建数据库(初学者推荐)

-- create database <数据库名称>;
create database 任我行教学管理系统;

 

4. 删除数据库

-- 切换数据库
use master;
-- drop database <数据库名称>;
drop database 任我行教学管理系统;

 

5. 查看数据库信息

-- exec sp_helpdb '<数据库名称>'
exec sp_helpdb 'Soa模拟考试'

 

6. 修改数据库名称

-- exec sp_renamedb '<需要修改的数据库的名称>','<新的数据库名称>' ;

exec sp_renamedb 
'第二单元测试', -- 需要修改的数据库的名称
'第二单元'  -- 新的数据库名称

 

7. 切换数据库

-- use <数据库名称>
use 任我行教学管理系统;

 

 

4. 备份与还原

可能有一天,数据库遭黑客攻击,数据库遭破坏,这个时候就需要时常的做文件的备份。也有可能公司来了一个马大哈,把数据库给删除(删库跑路),这个时候也需要备份。

备份

-- backup database <数据库名称> to disk = '磁盘路径';
backup database 第二单元测试 to disk ='D:\test\第二单元测试.bak';

 

还原

  • 数据库不存在的情况下

-- restore database <数据库名称>  from disk = '磁盘路径'
restore database 第二单元测试 from disk = 'D:\test\第二单元测试.bak'

 

  • 数据库存在的情况下

-- with replace:替换
-- restore database <数据库名称>  from disk = '磁盘路径' with replace;
restore database 第二单元测试 from disk = 'E:\test\第二单元测试.bak' with replace;

 

 

5. 附加与分离

假设我有一个比较好的数据库,大家都想要,我可以发给你们,但是直接发送不了,因为会提示“这个文件在数据库SqlServer中打开”, 这个时候就需要使用分离,将这个数据库文件中SqlServer中 T 出去。

现在数据库已经分离并且数据库也发给你们了,我自己也想要用这个数据库,这个时候就要重新的附加到SQLSERVER中来

分离

-- execute:执行
-- sp_detach_db:分离的存储过程(理解为一个函数)
-- execute sp_detach_db '<数据库名称>'
execute sp_detach_db 'Soa模拟考试'

 

附加

-- 附加
-- sp_attach_db:附加的存储过程
-- exec sp_attach_db '<数据库名称>','<数据库文件所在路径>' ;
​
exec sp_attach_db 'Soa模拟考试','C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\Soa模拟考试.mdf'

 

配套视频链接:【阶段二】 - SQLServer 基础(超级详细,口碑爆盆)_哔哩哔哩_bilibili

标签:文件,数据文件,database,--,数据库,单元测试,第二,单元
From: https://www.cnblogs.com/xuyubing/p/17852411.html

相关文章

  • openGauss学习笔记-131 openGauss 数据库运维-启停openGauss
    openGauss学习笔记-131openGauss数据库运维-启停openGauss131.1启动openGauss以操作系统用户omm登录数据库主节点。使用以下命令启动openGauss。gs_om-tstart说明:双机启动必须以双机模式启动,若中间过程以单机模式启动,则必须修复才能恢复双机关系,用gs_ctlbuild进......
  • react开发 jest写单元测试 如何借助mock模拟实现接口返回文件流的下载测试
    要借助mock模拟实现接口返回文件流的下载测试,可以使用以下步骤:1.创建一个用于接收文件流的虚拟DOM元素,例如通过`document.createElement('a')`创建一个`<a>`元素。2.使用`URL.createObjectURL()`方法将文件流转换为URL。3.设置创建的虚拟DOM元素的`href`属性为URL,同时设置`dow......
  • 2023-2024-1 20232315 《网络空间安全导论》第二周学习
      一、 我最近初步了解了密码学基础,了解了其起源、初步发展与应用、包含的主要内容以及在当下的情况,下面是大概的思维导图: 二、下面是我学习后的问题:1、信息加密与信息隐藏有何本质区别?解决方法:问AI答案: 问题2:当今密码学面临哪些挑战,该如何迎接这些挑战?答案:......
  • vba find 单元格换行的情况
    如果文本是使用Alt+Enter方法在单元格中输入的,则可以在VBA中使用以下代码:"&Chr(10)&"下面为样例的.Find方法。PrivateSubCommandButton1_Click()SetRngClosedDate=Range("A1:Z10").Find(What:="Closed"&Chr(10)&"(Date)",LookAt:=xlWh......
  • MAUI Sqlite数据库的使用
    1、安装1)Nuget中搜索sqlite-net-pcl安装2)搜索安装sqlitepclraw.bundle_green2、使用FileSystem.AppDataDirectory:获取可存储应用数据的位置1)建一个常量类,方便使用,文件名constants.cs2)再在services文件夹建一个DatabaseService.cs,使用sqlite数据库的类3、自增列创建类属性......
  • 关系(SQL)与非关系(NoSQL)型数据库
    关系型数据库行列式表存储结构化数据需要预定义数据类型数据量和查询量都不大,如果数据量大要做分表对数据一致性、完整性约束、事务性、可靠性要求比较高支持多表Join操作支持多表间的完整性,要删除A表的某条数据,可能需要先删除B表的某些数据SQL的增删改查功能强较......
  • windows版本--人大金仓数据库连接报错----启动----及替换过期的授权文件
       启动服务命令:1、找到安装目录下server的bin进行cmd C:\ProgramFiles\Kingbase\ES\V8\KESRealPro\V008R006C007B0012\Server\bin2、执行命令:sys_ctl.exe-D"data的存放目录"startsys_ctl.exe-D"C:\ProgramFiles\Kingbase\ES\V8\data"start 3、去官网根......
  • 您可以尝试添加 --skip-broken 选项来解决该问题 ** 发现 2 个已存在的 RPM 数据库问
    ##提示如下**Found2pre-existingrpmdbproblem(s),‘yumcheck’outputfollows:2:postfix-2.10.1-7.el7.x86_64hasmissingrequiresoflibmysqlclient.so.18()(64bit)2:postfix-2.10.1-7.el7.x86_64hasmissingrequiresoflibmysqlclient.so.18(libmysqlclient_18)......
  • 数据库备份与恢复
    生产环境中,数据的安全性是至关重要的,任何数据的丢失都可能产生严重的后果造成数据丢失的原因:程序错误、误操作(占比最大)、计算机失败、磁盘失败、物理灾难选择备份的依据是:丢失数据的代价与确保数据不丢失的代价之比数据库备份分类物理与逻辑区分物理备份:指对数据库操作系......
  • Python 使用SQLAlchemy数据库模块
    SQLAlchemy是用Python编程语言开发的一个开源项目,它提供了SQL工具包和ORM对象关系映射工具,使用MIT许可证发行,SQLAlchemy提供高效和高性能的数据库访问,实现了完整的企业级持久模型。ORM(对象关系映射)是一种编程模式,用于将对象与关系型数据库中的表和记录进行映射,从而实现通过面向......