【SQL Server】华中农业大学空间数据库实验报告 实验一 数据库

news2024/11/4 17:34:14

实验目的

  1. 熟悉了解掌握SQL Server软件的基本操作与使用方法,认识界面,了解其两个基本操作系统文件,并能熟练区分与应用交互式与T-SQL式两种方法在SQL Server中如何进行操作;
  2. 学习有关数据库的基本操作,包括:创建、分离、文件备份、附加、删除数据库等等的方法,并掌握查看调整数据库相关参数与属性的方法,作为一切实验的基础与开始,实验要求重点掌握如何根据特定的要求创建数据库,并在后续过程中得以修改其基本属性;
  3. 通过实验课操作,进一步深入理解T-SQL方法建立数据库的编写代码的原理,主文件、文件组、日志间的关系,并可以在后续学习过程中自行编写代码创建数据库。

实验内容

  1. 创建数据库:交互式创建数据库、T-SQL创建数据库;
  2. 分离数据库:交互式分离数据库、利用系统存储过程分离数据库;
  3. 数据库文件备份:分离数据库、停止服务复制其物理文件;
  4. 附加数据库:交互式附加数据库、利用系统存储过程附加数据库;
  5. 删除数据库:交互式删除数据库、T-SQL删除数据库。

实验步骤

1.创建数据库

在首先第一步打开SQL SEVER软件时,我们需要首先选择服务器,若是在实验课机房电脑中显示的服务器为虚拟服务器,目录的数据库引擎处将不会有绿色图标,由此在新建查询前,我们需要首先确认服务器状况。

(1)交互式创建数据库

在SQL Sever软件中,交互式方法对于较为熟悉软件的使用者来说是一种较为简单实用的方法,但对于我们第一次接触SQL Server的新手来说这种方法同样有着等等的弊端,因此在本次实验中,我对交互式方法仅做简单的了解,重点掌握T-SQL方法。

1)右键数据库,点击新建数据库打开参数表,即可根据要求设置数据库名称、路径、初始大小等等参数;

2)如果在后续想修改数据库的相关属性,可以右键我们新创建的数据,点击属性,即可再次打开上述参数表。

(2)利用T-SQL创建数据库

1)在工具栏处点击【新建查询】,即可打开编写代码的界面;

2)根据SQL语言的相关规定,输入代码,尝试创建一个命名为FJQ,包含一个主文件一个文件组的数据库,代码如下,点击执行,可得“命令已成功完成”:

3)成功执行完成后,右键服务器的数据库,再点击刷新,即可发现我们创建的新的名为FJQ的数据库已经被成功添加至服务器中,至此可说明数据库创建成功。

2.分离数据库

(1)交互式分离数据库

1)右键想要分离的数据库,选择 任务—> 分离,即可达到分离数据库的效果。

(2)系统存储过程分离数据库

1)在工具栏处点击【新建查询】;

2)根据相关要求输入以下代码并执行,成功后刷新数据库,即可发现数据库已被分离了。

3.数据库文件备份

(1)分离数据库

根据上述实验的步骤首先分离数据库,即可在文件的存储路径的位置复制以下两个文件至其它处进行备份(主要为后缀为.idf与.mdf的文件):

 

(2)停止服务再复制其物理文件

但在利用以上方法分离数据库时,有时会提示我们数据库正在使用中,因此无法分离数据库,因此需要我们首先停止数据库服务,在程序中打开SQL Server的配置管理器;

在SQL Server服务中停止服务,即可复制转移数据库的物理文件。

4.附加数据库

附加数据库是基于分离数据库操作提出的用以将已有数据库添加至指定服务器上的操作,同样分为交互式与利用代码的两种方法:

(1)交互式附加数据库

右击数据库点击附加,在打开的参数框中选择添加我们想要附加的数据库,再次刷新即可显示数据库已被附加。

(2)利用系统存储过程附加数据库

新建查询,根据相关要求输入以下代码并执行,第一行为数据库名称,第二行为数据库.mdf文件的路径,成功后刷新数据库即可:

5.删除数据库

由于删除数据库的操作指令过于简单粗暴,一旦删除数据库后无法进行还原,且现阶段对删除数据库的应用较少,因此本次实验中仅简单了解此步骤的方法。

(1)交互式删除数据库

(2)T-SQL删除数据库

新建查询并输入以下代码,执行后刷新数据库即可完成删除操作:

课后习题

1.创建数据库mybase,要求:(1)数据文件存储的文件夹是:D:\mytestbase;(2)数据存放在两个文件组中:group1,group2:

2.修改数据库mybase属性,要求:(1)文件最大大小:100MB(2)文件增长比例:20%:

右击数据库选择属性—>文件,打开更改自动增长设置,即可选择修改数据库的属性。

 3.将数据库mybase复制到移动硬盘:

首先根据规定语句分离数据库,即可移动数据库的两个物理文件与文件组文件至移动硬盘处。

 4.删除数据库mybase:

右击数据库点击删除,即可完成删除数据库操作。

总结

1.实验中的常见错误:

1.无法分离数据库

数据库无法分离的根本原因是有用户进行连接操作,如果是交互式分离数据库的方法,分离时需要我们勾选【删除连接】;

如果是在命令行模式,我们可以利用kill语句直接中止进程,也可以采用保存关闭SQL Server软件,再次打开再执行kill语句的方法,同样可以达到分离数据库的目的。

2.交互式方法建立数据库出错

在主菜单界面选择【工具】—> 【选项】—> 【设计器】打开参数表,取消勾选阻止保存,交互式的建立才能成功。

3.附加数据库操作时的代码错误

提示错误为必须声明标量变量“@”,其根本原因是在附加数据库时,符号“@”后面不能存在空格,这也体现了SQL Server软件与python等其它编码软件的不同,空格是具有符号意义的。

2.交互式的优点与弊端

  1. 优点:交互式方法总的来说是为了简便操作提出的方法,在具体实验中我们可以很清楚的感受到,无论是分离、修改还是删除数据库,比起还需要再命令行中编写代码,交互式方法只需要找到对应的选项与按钮就可以很迅速的完成相关的操作
  2. 弊端:对于初学者来说,交互式方法就并没有想象中的那么简便,因为命令行式方法会直截了当的告诉我们报错的原因与位置,方便初学者进行错误的排查,而交互式方法就很难做到这一点;除此之外,因为每一次操作得到的结果都会被保存在文件夹中,交互式方法的误操作会导致我们的文件夹中出现大量的重复数据,而命令行式的方法会提示我们数据库中已存在重复的对象。

3.对数据库结构的深入认识:

(1)SQL Server 数据库中主要分为三种类型的数据文件:

主要数据文件(扩展名.mdf):包含数据库的启动信息,用户数据和对象可存储在此文件中,也可以存储在次要数据文件中,每个数据库仅有一个主要数据文件;

次要数据文件(扩展名.ndf):次要数据文件是可选的,由用户定义并存储用户数据。通过将每个文件放在不同的磁盘驱动器上,次要文件可用于将数据分散到多个磁盘上;

事务日志(扩展名.ldf):事务日志文件保存用于恢复数据库的日志信息。每个数据库必须至少有一个日志文件。

(2)数据库的数据文件的关系:一个数据库只能有一个主要数据文件与一个事务日志,可以有多个次要数据文件,SQL Server的每个数据库都是以这两个文件存放的,一个后缀名为mdf,是数据文件,另一个后缀名为ldf,为日志文件。因此只需要定期复制这两个文件,就可以达到备份的效果。

(3)文件组的相关定义与功能:文件组是数据库各类文件的组合,其同样分为主要文件组与次要文件组,主要文件组只能有一个,包含主数据文件和未放入其他文件组的任何辅助文件。如果在数据库中创建对象时没有指定对象所属的文件组,对象将被分配给默认文件组(即PRIMARY 文件组),我们必须使用 ALTER DATABASE 语句进行文件组的更改。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2231967.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LeetCode:83. 删除排序链表中的重复元素 II(java) 保留一个重复的

目录 题目描述: 代码: 第一种: 第二种: 题目描述: 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 示例 1: 输入:head [1,1,2] 输出:[1,2]示例 2&#xff1a…

【快速上手】pyspark 集群环境下的搭建(Standalone模式)

目录 前言 : 一、spark运行的五种模式 二、 安装步骤 安装前准备 1.第一步:安装python 2.第二步:在bigdata01上安装spark 3.第三步:同步bigdata01中的spark到bigdata02和03上 三、集群启动/关闭 四、打开监控界面验证 前…

SpringSecurity6+OAuth2.0 从入门到熟练使用

文章目录 简介1、快速入门1.1 准备工作我们先要搭建一个SpringBoot工程① 创建工程 添加依赖② 创建启动类③ 创建Controller1.2 引入SpringSecurity2、 认证2.1 登录校验流程2.2 原理分析2.2.1 SpringSecurity完整流程2.2.2 认证流程详解概念速查:2.3 解决问题2.3.1 思路分析2…

Qt报错QOCI driver not loaded且QOCI available的解决方法

参考 Linux Qt 6安装Oracle QOCI SQL Driver插件(适用WSL) 安装 QOCI 插件完成后运行 Qt 项目报错: qt.sql.qsqldatabase: QSqlDatabase: QOCI driver not loaded qt.sql.qsqldatabase: QSqlDatabase: available drivers: QMIMER QPSQL QODBC…

【AI工作流】FastGPT - 深入解析FastGPT工作流编排:从基础到高级应用的全面指南

文章目录 一、工作流编排概述二、FastGPT的节点类型1. 基础功能插件(1) 文本输出(2) 功能调用(3) 工具(4) 外部调用(5) 其他 2. 系统插件3. 团队插件 三、工作流中的流向结语 在当今快速发展的人工智能领域,工作流编排的能力已成为提升用户体验和应用效率的关键因素…

SQL 常用语句

目录 我的测试环境 学习文档 进入数据库 基础通关测验 语句-- 查 展示数据库; 进入某个数据库; 展示表: 展示某个表 desc 查询整个表: 查询特定列: 范围查询 等于特定值 不等于 介于 特定字符查询 Li…

python在word的页脚插入页码

1、插入简易页码 import win32com.client as win32 from win32com.client import constants import osdoc_app win32.gencache.EnsureDispatch(Word.Application)#打开word应用程序 doc_app.Visible Truedoc doc_app.Documents.Add() footer doc.Sections(1).Footers(cons…

Centos环境下安装docker

本文演示离线版安装用于没有网络环境的系统 在线版安装可参考以下链接 https://www.runoob.com/docker/centos-docker-install.html 一、docker离线安装 1、下载docker离线安装包 docker下载地址: Docker版本下载 选择版本 下载后上传至服务器 百度网盘下载…

Java 中的 Map 集合及其子类详解:HashMap 和 TreeMap

Java 中的 Map 集合及其子类详解:HashMap 和 TreeMap 在 Java 编程中,Map 是一种用于存储键值对的集合结构。Java 提供了多种 Map 实现类,其中最常用的是 HashMap 和 TreeMap。 双列集合 在Java中,双列集合(也称为映…

CoCode助力志晟信息成功通过CMMI五级复评!

热烈祝贺河北志晟信息技术股份有限公司在近期CMMI(能力成熟度模型集成)评估中,再次以卓越表现顺利通过CMMI成熟度五级的复评。 CoCode助力志晟信息通过CMMI五级 2024年9月1日至10日,CMMI评估组对志晟信息管理体系及其应用运行情况…

AD 授予委派full control权限后,部分用户无法unlock

文章目录 问题描叙根因解決方法: 问题描叙 通過委派方式授予被委派用戶full control 权限后,部分用户unlock是灰色显示: 根因 对比能正常unlock与无法unlock的用户,发现繼承無法unlock的用戶沒有"enable inheritance&quo…

css实现边框双色凹凸半圆

整体效果如下图&#xff1a; 结构代码&#xff1a; <div classline-outside-wrap><div classwrap><img src../img/avatar2x.png/><div classcontent-wrap></div></div></div> 内凹框实现&#xff1a; .content-wrap{width:100%;he…

算法深度剖析:前缀和

文章目录 前言一、一维前缀和模板二、二维前缀和模板三、寻找数组的中心下标四、除自身以外数组的乘积五、和为 K 的子数组六、和可被 K 整除的子数组七、连续数组八、矩阵区域和 前言 本章将深度剖析前缀和&#xff0c;以及总结前缀和模板。 前缀和是一种在算法和数据处理中…

关于我、重生到500年前凭借C语言改变世界科技vlog.14——常见C语言算法

文章目录 1.冒泡排序2.二分查找3.转移表希望读者们多多三连支持小编会继续更新你们的鼓励就是我前进的动力&#xff01; 根据当前所学C语言知识&#xff0c;对前面知识进行及时的总结巩固&#xff0c;出了这么一篇 vlog 介绍当前所学知识能遇到的常见算法&#xff0c;这些算法是…

特定领域的Embeddings模型微调全面指南

假设你正在为医学领域构建一个问答系统。你希望确保当用户提出问题时&#xff0c;系统能够准确地检索相关的医学文章。但是通用的嵌入模型可能在处理医学术语的高度专业化词汇和细微差别时会遇到困难。 这时候&#xff0c;微调就能派上用场了&#xff01;&#xff01;&#xf…

视频推荐的算法(字节青训)

题目&#xff1a; 西瓜视频 正在开发一个新功能&#xff0c;旨在将访问量达到80百分位数以上的视频展示在首页的推荐列表中。实现一个程序&#xff0c;计算给定数据中的80百分位数。 例如&#xff1a;假设有一个包含从1到100的整数数组&#xff0c;80百分位数的值为80&#…

安卓13默认连接wifi热点 android13默认连接wifi

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析4.代码修改5.编译6.彩蛋1.前言 有时候我们需要让固件里面内置好,相关的wifi的ssid和密码,让固件起来就可以连接wifi,不用在手动操作。 2.问题分析 这个功能,使用普通的安卓代码就可以实现了。 3.代…

详解RabbitMQ三种队列类型

RabbitMQ 是一个强大的消息队列系统&#xff0c;它提供了多种队列类型以满足不同的使用需求。本文将探讨三种主要队列类型&#xff1a;经典队列、仲裁队列和流式队列&#xff0c;并讨论它们的区别和选型建议。 经典队列&#xff08;Classic Queues&#xff09; 简介&#xff…

CytoSPACE·空转和单细胞数据的高分辨率比对

1. 准备输入文件&#xff0c;需要四个文件&#xff0c;所有文件都应以制表符分隔的表格输入格式 (.txt) 提供。 a. scRNA-seq 基因表达文件 矩阵必须是基因&#xff08;行&#xff09;乘以细胞&#xff08;列&#xff09;。 第一行必须包含单个细胞 ID&#xff0c;第一列必须…

react使用Fullcalendar

前言&#xff1a; 最近在做项目时&#xff0c;遇到了需要用日历的项目。一开始考虑使用antd的日历组件。后来 调研技术库&#xff0c;发现了fullcalendar 库。经过对比 fullcalendar 更强大&#xff0c;更灵活。 其实 antd的日历组件 也不错&#xff0c;简单的需求用他也行。…