第二单元 数据库操作

这篇具有很好参考价值的文章主要介绍了第二单元 数据库操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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...

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

  2. 数据库展示

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 入门基础 - 网易云课堂 (163.com)文章来源地址https://www.toymoban.com/news/detail-746902.html

到了这里,关于第二单元 数据库操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • QT-sql操作(sqlite数据库文件)

        #include SqlDriver 如名称,数据库驱动。 hasFeature : 检查驱动是否支持特定功能,如事务、批处理等。 isQuerySize : 驱动是否支持  QSqlQuery::size  函数。 open 、 close : 打开和关闭数据库连接。 isOpen : 判断数据库连接是否处于打开状态。 commitTransaction 、 rollbackTransaction :

    2024年02月04日
    浏览(39)
  • navicat导入sql数据库文件的简单操作步骤

    目录 前言必读 一、概念 二、操作步骤 (一)新建连接  (二)新建数据库 (三)数据库导入sql文件 读者手册(必读)_云边的快乐猫的博客-CSDN博客 在很多项目当中都有sql文件导入到MySQL数据库的需要,因为有sql数据库文件,这个项目才能正常运行起来,那么现在就来学习

    2024年02月03日
    浏览(44)
  • 商城管理系统的数据表从属关系+navicat建表操作+数据库文件转储并入代码操作

    1,商城管理系统的数据表从属关系 在商城管理系统中,我们会面临属性分组的问题,商品表与分类表需要建立链接; 在控制类中我们将分类表中属性类传过来,与商品值params建立链接 在service类中,我们写入判断key的语句; 由此我们可以建立商品表与属性表之间的链接 2,

    2024年02月01日
    浏览(49)
  • 【Spring Boot】使用XML配置文件实现数据库操作(一)

    SQL映射文件就是我们通常说的mapper.xml配置文件,主要实现SQL语句的配置和映射,同时实现Java的POJO对象与数据库中的表和字段进行映射关联的功能。 1.1 mapper.xml的结构 下面就来详细介绍mapper.xml文件的结构。首先看一个完整的mapper.xml示例:

    2024年02月10日
    浏览(45)
  • 分布式数据库HBase,它到底是怎么组成的?

    原文链接:http://www.ibearzmblog.com/#/technology/info?id=8ac4902f82f525e1456624d5d7a545dc 大数据的核心问题无非就是存储和计算这两个。Hadoop中的HDFS解决了数据存储的问题,而HBase就是在HDFS上构建,因此Hbase既能解决大数据存储的问题,又能解决数据实时查询的问题。 HBase是一个高可靠、高

    2024年02月16日
    浏览(31)
  • 【数据库概论】第二章 关系型数据库

    关系模型的数据结构十分简单,只包含单一的数据结构——关系。在用户看来,关系模型中数据的逻辑结构是一张扁平的二维表。关系模型的数据结构虽然简单却能表达丰富的语义。在关系模型中,现实世界的实体以及实体之间的联机都是用单一的关系结构类型来表示。 域(

    2024年02月05日
    浏览(47)
  • 【Mysql】数据库第二讲(数据库中数据类型的介绍)

    数值越界测试: 说明: 在MySQL中,整型可以指定是有符号的和无符号的,默认是有符号的。 可以通过UNSIGNED来说明某个字段是无符号的 无符号案例: 注意 注意:尽量不使用unsigned,对于int类型可能存放不下的数据,int unsigned同样可能存放不下,与其如此,还不如设计时,将

    2024年02月09日
    浏览(40)
  • 数据库基础面试第二弹

    乐观锁和悲观锁是在并发编程中使用的两种并发控制机制,用于解决多线程或多进程环境下的数据一致性问题。 1. 悲观锁 (Pessimistic Locking): 悲观锁的思想是假设并发访问会导致冲突,因此在访问共享资源之前,悲观锁会将资源锁定,确保其他线程无法修改资源。悲观锁的

    2024年02月10日
    浏览(26)
  • 数据库第二次作业

    目录 一、要求 二、操作 建表 插入数据  1、显示所有职工的基本信息 2、查询所有职工所属部门的部门号,不显示重复的部门号  ​编辑 3、求出所有职工的人数​编辑 4、列出最高工和最低工资 ​5、列出职工的平均工资和总工资 6、创建一个只有职工号、姓名和参加工作的

    2024年02月13日
    浏览(32)
  • 单元测试与数据库

    1.单元测试应该是全自动执行的,而非交互式的,应使用assert语句来验证结果而不是sout后进行人眼验证 2.为了保证单元测试可靠且便于维护,单元测试用例之间不能互相调用 3.单元测试是可重复执行的,不能受到外界环境的影响 4.单元测试代买必须写在src/test/java的工程目录下,这样

    2024年02月08日
    浏览(24)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包