当前位置: 首页 > news >正文

SQL sever中库管理

目录

一、创建数据库

1.1库界面方式

1.2SQL命令方式

二、修改数据库

2.1库界面方式

2.2SQL命令方式

三、删除数据库

3.1库界面方式

3.2SQL命令方式

四、附加和分离数据库

4.1附加和分离数据库概述

4.2作用

4.3附加和分离数据库方法

 4.4示例


一、创建数据库

1.1库界面方式

在库界面选择数据库,然后右键选择【新建数据库】;

输入新建库的名字【test1】,其他都默认即可。

左侧状态栏刷新查看:

1.2SQL命令方式

正常情况下使用SQL命令方式创建数据库的时候,需要注意查看下主库中是否已经存在想要创建的数据库名字,如果发现存在该库时应提前删除后再创建,比如我要创建一个名为【mm】的数据库,简单方法就是查看左侧状态栏是否有【mm】数据库,有则手动删除,删除数据库的方法下面会讲。

查看结果库中有【mm】:

使用SQL命令查询方式如下:

--判断数据库文件是否存在,如果存在就删除 
--其中exits是判断()语句是否返回值,如果有就返回true,否则就是false
IF EXISTS(SELECT 1 FROM sys.databases WHERE name='mm')
BEGIN
ALTER DATABASE [mm] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
DROP DATABASE [mm];
END

执行命令行后刷新状态栏查看【mm】已删除:

使用SQL命令方式创建一个名字为【TEST2】的数据库,同时明确指定TEST2的数据文件和日志文件所存储的路径和大小等信息,如下所示:

CREATE DATABASE TEST2   --创建数据库TEST2
ON          --如果是on primary  则表示是定义在主文件组上的文件
(NAME='TEST2_DATA',  --逻辑名称FILENAME='E:\sqlsevertest\TEST2_DATA.MDF',  --物理名称SIZE=5MB,  --初始大小为5MBMAXSIZE=UNLIMITED,   --最大限制为无限大FILEGROWTH=10%  --主数据文件增长幅度为10%
)
LOG ON
(NAME='TEST2_LOG',  --逻辑名称FILENAME='E:\sqlsevertest\TEST2_LOG.LDF',  --物理名称SIZE=5MB,   --初始大小为5MBMAXSIZE=50MB,  --最大限制是50MBFILEGROWTH=1MB	  --事务日志增长幅度为1MB
)
GO

左侧状态栏刷新查看:

二、修改数据库

2.1库界面方式

在库界面左侧找到建立的数据库,比如【test1】,然后右键找到【属性】;

单击【属性】,在弹出窗口中选择【文件】,打开即可对数据库进行修改;

从此位置可以知道该库文件所在的位置以及所有者是谁,可以更改自动增长的数值。

2.2SQL命令方式

使用ALTER DATABASE命令对数据库可进行以下修改:

  • 改变数据文件的大小和增长方式
  • 改变日志文件的大小和增长方式
  • 增加或删除数据文件
  • 增加或删除日志文件
  • 增加或删除文件组

语法格式如下:

ALTER DATABASE database_name
{	ADD FILE <filespec>[,…n][ TO FILEGROUP filegroup_name ]	/*在文件组中增加数据文件*/| ADD LOG FILE <filespec>[,…n]           				/*增加日志文件*/| REMOVE FILE logical_file_name           				/*删除数据文件*/| ADD FILEGROUP filegroup_name          				/*增加文件组*/| REMOVE FILEGROUP filegroup_name      					/*删除文件组*/| MODIFY FILE <filespec>                 				/*更改文件属性*/| MODIFY NAME = new_dbname           					/*数据库更名*/| MODIFY FILEGROUP filegroup_name {filegroup_property | NAME = new_filegroup_name }| SET <optionspec> [ ,...n ] [ WITH <termination> ]   	/*设置数据库属性*/| COLLATE < collation_name > 							/*指定数据库排序规则*/
}
GO

举例如下:

已经创建了数据库【TEST2】,只有一个主数据文件,其逻辑文件名为TEST2_DATA,大小为5MB,最大为50MB,增长方式为按10%增长。即:

①假如修改数据库TEST2现有数据文件的属性,将主数据文件的最大大小改为100MB,增长方式改为按每次5MB增长,命令如下:

ALTER DATABASE TEST2MODIFY FILE (	NAME = TEST2_DATA,  --这里是逻辑名MAXSIZE = 100MB,	--将主数据文件的最大大小改为100MBFILEGROWTH = 5MB	--将主数据文件的增长方式改为按5MB增长			)
GO

查看更改结果:

②为数据库TEST2添加文件组FGROUP,并为此文件组添加两个大小均为10MB的数据文件,命令如下:

ALTER DATABASE TEST2ADD FILEGROUP FGROUP  --新增文件组的名字
GOALTER DATABASE TEST2ADD FILE(NAME = 'TEST2_DATA2',FILENAME = 'E:\sqlsevertest\TEST2_DATA2.ndf',SIZE = 10MB,MAXSIZE = 30MB,FILEGROWTH = 5MB),(	NAME = 'TEST2_DATA3',FILENAME = 'E:\sqlsevertest\TEST2_DATA3.ndf',SIZE = 10MB,MAXSIZE = 30MB,FILEGROWTH = 5MB)TO FILEGROUP FGROUP  --添加到指定文件组
GO

查看文件路径如图所示即创建成功:

③从数据库中删除文件组,将②中添加到TEST2数据库中的文件组FGROUP删除,命令如下:

--先删除文件组中的文件
ALTER DATABASE TEST2REMOVE FILE TEST2_DATA2
GO
ALTER DATABASE TEST2REMOVE FILE TEST2_DATA3
GO--再删除文件组
ALTER DATABASE TEST2REMOVE FILEGROUP FGROUP
GO

查看文件路径如下图所示,即删除成功:

④为数据库TEST2添加一个日志文件,命令如下:

ALTER DATABASE TEST2ADD LOG FILE(	NAME = 'TEST2_LOG2',FILENAME = 'E:\sqlsevertest\TEST2_LOG2.ldf',SIZE = 5MB,MAXSIZE = 10MB,FILEGROWTH = 1MB)
GO

查看文件途径如下所示即添加成功:

⑤从数据库TEST2中删除一个日志文件,将日志文件TEST2_LOG2删除,命令如下:

ALTER DATABASE TEST2REMOVE FILE TEST2_LOG2
GO

查看文件路径如下所示即删除成功:

⑥将数据库TEST2的名改为JUST_TEST2,命令如下:

注意

进行此操作时必须保证该数据库不被其他任何用户使用。

ALTER DATABASE TEST2MODIFY NAME = JUST_TEST2
GO

执行命令后,刷新左侧状态栏查看,如下所示即修改成功:

三、删除数据库

3.1库界面方式

选择需要删除的数据库,然后在其上右键选择【删除】,

在弹出窗口中选择确定即可删除当前数据库;

3.2SQL命令方式

删除数据库使用DROP DATABASE 。。。命令,语法如下:

DROP DATABASE database_name[,…n][;]
GO

比如删除数据库test1,

DROP DATABASE test1
GO

刷线状态栏查看结果已删除成功:

四、附加和分离数据库

4.1附加和分离数据库概述

在SQL Server中,附加和分离数据库是用于管理数据库的两种操作。

  1. 附加数据库的目的:
    附加数据库用于将已经存在的数据库文件(数据文件和日志文件)连接到SQL Server实例,并使其可用于查询和操作。附加数据库的主要作用是将现有的数据库文件加入到SQL Server的数据库列表中。通过附加数据库,可以将数据库从一个环境迁移到另一个环境,或者在不同的SQL Server实例之间共享数据库。

  2. 分离数据库的目的:
    分离数据库用于从SQL Server实例中移除数据库,但保留数据库文件本身。通过分离数据库,可以将数据库从SQL Server实例中分离,而不会删除数据库文件。分离数据库的主要作用是在需要进行一些数据库维护操作或将数据库移动到其他服务器时,暂时从服务器中移除数据库,而不删除它。这可以使数据库在分离期间保持无法访问和修改的状态。

4.2作用

附加和分离数据库提供了方便的方式来管理数据库,并支持数据库的迁移、备份和恢复,以及将数据库从一个环境或服务器移动到另一个环境或服务器。

4.3附加和分离数据库方法

在SQL Server中,附加和分离数据库有以下方法:

4.3.1通过 SQL Server Management Studio (SSMS) 进行附加和分离。

  • 附加数据库:在SSMS中,右键点击"数据库",选择"附加",浏览并选择要附加的数据库文件,点击"确定"。
  • 分离数据库:在SSMS中,右键点击要分离的数据库,选择"任务",然后选择"分离"。

4.3.2使用 T-SQL 命令进行附加和分离。

  • 附加数据库:
CREATE DATABASE [数据库名称] ON 
(FILENAME = '数据库文件路径\DataFileName.mdf'),
(FILENAME = '数据库日志文件路径\LogFileName.ldf')
FOR ATTACH;
  • 分离数据库:
EXEC sp_detach_db N'数据库名称', N'false';

4.3.3使用 PowerShell 进行附加和分离

  • 附加数据库
$server = New-Object Microsoft.SqlServer.Management.Smo.Server "服务器名称"
$db = New-Object Microsoft.SqlServer.Management.Smo.Database $server, "数据库名称"
$db.Attach("$数据库文件路径\DataFileName.mdf",$数据库日志文件路径\LogFileName.ldf")
  • 分离数据库:
$server = New-Object Microsoft.SqlServer.Management.Smo.Server "服务器名称"
$db = $server.Databases["数据库名称"]
$db.DatabaseOptions.UserAccess = [Microsoft.SqlServer.Management.Smo.DatabaseUserAccess]::Single
$db.Alter(TSqlModel.DatabaseOptionsModification.Detach)

注意:

这些方法可能有些差异,需要根据使用的SQL Server版本和工具选择合适的方法。 

 4.4示例

以下是使用T-SQL语句进行SQL Server附加和分离数据库的示例:

  • 附加数据库:
    USE [master];  --使用主数据库-- 创建一个数据库
    CREATE DATABASE [TestDB]
    ON (FILENAME = 'C:\TestDB\TestDB.mdf'),(FILENAME = 'C:\TestDB\TestDB_Log.ldf')
    FOR ATTACH;
  • 请确保提供正确的数据库文件路径和文件名。

  • CREATE DATABASE [TestDB]:创建一个名为TestDB的数据库。
  • ON:指定要将数据库文件和日志文件放置的位置。
    • FILENAME = 'C:\TestDB\TestDB.mdf':指定数据库的主要数据文件(TestDB.mdf)的路径和文件名。
    • FILENAME = 'C:\TestDB\TestDB_Log.ldf':指定数据库的事务日志文件(TestDB_Log.ldf)的路径和文件名。
  • FOR ATTACH:将创建的数据库附加到SQL Server实例中。这意味着数据库可以被查询和操作。

需要注意的是,在运行该语句之前,确保数据库文件(TestDB.mdf和TestDB_Log.ldf)已经存在,并且指定的文件路径是正确的。

  • 分离数据库:
USE [master];-- 分离数据库
EXEC sp_detach_db 'TestDB', 'true';

这将分离名为"TestDB"的数据库。第二个参数设置为'true'表示不保存分离状态的元数据信息。

注意:

这些示例假设数据库文件和日志文件已经存在,并且通过提供正确的路径和文件名进行附加和分离操作。确保在执行任何重要数据操作之前创建数据库备份或做好必要的预防措施。

相关文章:

SQL sever中库管理

目录 一、创建数据库 1.1库界面方式 1.2SQL命令方式 二、修改数据库 2.1库界面方式 2.2SQL命令方式 三、删除数据库 3.1库界面方式 3.2SQL命令方式 四、附加和分离数据库 4.1附加和分离数据库概述 4.2作用 4.3附加和分离数据库方法 4.4示例 一、创建数据库 1.1库…...

模板方法模式简介

概念&#xff1a; 模板方法模式是一种行为型设计模式&#xff0c;它定义了一个算法的骨架&#xff0c;将一些步骤延迟到子类中实现。该模式通过在抽象类中定义一个模板方法来控制算法的流程&#xff0c;并使用具体方法来实现其中的某些步骤。 特点&#xff1a; 定义了一个算…...

自动化运维工具-------Ansible(超详细)

一、Ansible相关 1、简介 Ansible是自动化运维工具&#xff0c;基于Python开发&#xff0c;分布式,无需客户端,轻量级&#xff0c;实现了批量系统配置、批量程序部署、批量运行命令等功能&#xff0c;ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是a…...

计算机毕设 基于生成对抗网络的照片上色动态算法设计与实现 - 深度学习 opencv python

文章目录 1 前言1 课题背景2 GAN(生成对抗网络)2.1 简介2.2 基本原理 3 DeOldify 框架4 First Order Motion Model5 最后 1 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕业答辩的要…...

Citespace、vosviewer、R语言的文献计量学 、SCI

文献计量学是指用数学和统计学的方法&#xff0c;定量地分析一切知识载体的交叉科学。它是集数学、统计学、文献学为一体&#xff0c;注重量化的综合性知识体系。特别是&#xff0c;信息可视化技术手段和方法的运用&#xff0c;可直观的展示主题的研究发展历程、研究现状、研究…...

linux操作系统的权限的深入学习

1.Linux权限的概念 Linux下有两种用户&#xff1a;超级用户&#xff08;root&#xff09;、普通用户。 超级用户&#xff1a;可以再linux系统下做任何事情&#xff0c;不受限制 普通用户&#xff1a;在linux下做有限的事情。 超级用户的命令提示符是“#”&#xff0c;普通用户…...

LeetCode——三数之和(中等)

题目 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的三元组。 …...

SpringMVC使用

文章目录 一.MVC基础概念1.MVC定义2.SpringMVC和MVC的关系 二.SpringMVC的使用1.RequestMapping2.获取参数1.获取单个参数2.传递对象3.后端参数重命名&#xff08;后端参数映射&#xff09;4.获取URL中参数PathVariable5.上传文件RequestPart6.获取Cookie/Session/header 3.返回…...

【css】css奇数、偶数、指定数选择器:

文章目录 一、简单数字序号写法:nth-child(number)二、倍数写法:nth-child(an)三、倍数分组匹配:nth-child(anb) 与 :nth-child(an-b)四、反向倍数分组匹配:nth-child(-anb)五、奇偶匹配:nth-child(odd) 与 :nth-child(even) :nth-child(n) 选择器匹配属于其父元素的第 N 个子元…...

三维数据Ply格式介绍与读取

三维数据Ply格式介绍与读取 PLY文件格式是在1990年代中期由斯坦福大学的一组研究人员开发的。它已经发展成为最广泛使用的3D数据文件格式之一。该文件格式有ASCII版本和二进制版本。在需要文件大小和处理效率的情况下,首选二进制版本。ASCII版本使得调试变得非常容易。在这里…...

内存管理方式

内存管理 一、C/C内存分布1、内存空间的介绍2、示例题目3、示例题目图解 二、C语言动态内存管理方式1、代码2、介绍 三、C内存管理方式1、概念2、代码3、代码所代表的意义 四、new和delete操作自定义类型1、代码2、运行结果3、特点 五、operator new与operator delete函数1、概…...

文心一言接入Promptulate,开发复杂LLM应用程序

简介 最近在尝试将文心一言的LLM能力接入Promptulate&#xff0c;故写了一篇博客记录一下&#xff0c;Promptulate 是 Promptulate AI 旗下的大语言模型自动化与应用开发框架&#xff0c;旨在帮助开发者通过更小的成本构建行业级的大模型应用&#xff0c;其包含了LLM领域应用层…...

TDengine函数大全-聚合函数

以下内容来自 TDengine 官方文档 及 GitHub 内容 。 以下所有示例基于 TDengine 3.1.0.3 TDengine函数大全 1.数学函数 2.字符串函数 3.转换函数 4.时间和日期函数 5.聚合函数 6.选择函数 7.时序数据库特有函数 8.系统函数 聚合函数 TDengine函数大全APERCENTILEAVGCOUNTELAPS…...

DRM全解析 —— ADD_FB(2)

接前一篇文章&#xff1a;DRM全解析 —— ADD_FB&#xff08;1&#xff09; 本文参考以下博文&#xff1a; DRM驱动&#xff08;四&#xff09;之ADD_FB 特此致谢&#xff01; 上一回围绕libdrm与DRM在Linux内核中的接口&#xff1a; DRM_IOCTL_DEF(DRM_IOCTL_MODE_ADDFB, d…...

windows下docker compose方式挂载数据卷volume遇到的问题

例子一&#xff0c;windows 下docker desk top部署TDengine td-compose.yml version: 3 services:tdengine1:image: tdengine/tdengine:latestcontainer_name: tdengine1hostname: tdengine1ports:- 6030:6030- 6041:6041- 6043-6049:6043-6049- 6043-6049:6043-6049/udpresta…...

TCP三次握手四次挥手总结

目录 一、两种传输模式&#xff1a; 二、数据方向&#xff1a; 三、端口的作用&#xff1a; 四、端口类型&#xff1a; 五、三次握手&#xff1a; 六、四次断开 常见面试题 TCP&#xff08;Transfer control protocol&#xff09;传输控制协议 一、两种传输模式&#x…...

【0901作业】QTday3 对话框、发布软件、事件处理机制,使用文件相关操作完成记事本的保存功能、处理键盘事件完成圆形的移动

目录 一、思维导图 二、作业 2.1 使用文件相关操作完成记事本的保存功能 2.2 处理键盘事件完成圆形的移动 一、思维导图 二、作业 2.1 使用文件相关操作完成记事本的保存功能 void Widget::on_saveBtn_clicked() {QString filename QFileDialog::getSaveFileName(this,&…...

mysql数据库运行sql:datetime(0) NULL DEFAULT NULL报错【杭州多测师_王sir】

一、错误信息 CREATE TABLE file (id varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 文件md5,name varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,create_time datetime(0) NULL DEFAULT NULL,update_time date…...

手撕二叉平衡树

今天给大家带来的是平衡树的代码实现&#xff0c;如下&#xff1a; #pragma once #include <iostream> #include <map> #include <set> #include <assert.h> #include <math.h> using namespace std; namespace cc {template<class K, clas…...

超图嵌入论文阅读1:对偶机制非均匀超网络嵌入

超图嵌入论文阅读1&#xff1a;对偶机制非均匀超网络嵌入 原文&#xff1a;Nonuniform Hyper-Network Embedding with Dual Mechanism ——TOIS&#xff08;一区 CCF-A&#xff09; 背景 超边&#xff1a;每条边可以连接不确定数量的顶点 我们关注超网络的两个属性&#xff1…...

Qt xml解析之QXmlStreamReader

文章目录 背景QXmlStreamReader简单介绍使用QXmlStreamReader添加头文件<QXmlStreamReader>toString()toInt()完整代码 背景 项目中遇到需要解析某个方法返回的xml字符串&#xff0c;奈何C/C中没有原生的方法可供调用&#xff0c;只能使用第三方库&#xff0c;搜了一圈资…...

Selenium基础 — CSS选择器定位大全

1、css属性定位 css选择器策略示例说明#id#telA选择id"telA"的所有元素。.class.telA选择 class"telA”的所有元素。[属性名属性值][nametelA]除了id和class属性&#xff0c;其他属性的定位格式[attribute][target]选择带有target 属性所有元素。**选择所有元素…...

vue3中keep-alive的使用及结合transition使用

正确用法 在组件中使用&#xff08;这里结合了 transition 内置动画组件 &#xff09; <template><div class"layout clearfix"><router-view v-slot"{ Component, route }"><transition name"fade-transform" mode"…...

【提示工程】询问GPT返回Json结构数据

theme: orange 众所周知&#xff0c;我们可以通过构建的Prompt获取期望的内容&#xff0c;但是通常都是以自然语言返回的&#xff0c;假如我们想得到结构化的数据&#xff0c;比如Json&#xff0c;XML那么怎么办&#xff0c;这篇文章给你一个思路。 理所当然的想法 要实现询问大…...

CSS水平垂直居中方案

1 前言 水平居中、垂直居中是前端面试百问不厌的问题。其实现方案也是多种多样&#xff0c;常叫人头昏眼花。 水平方向可以认为是内联方向&#xff0c;垂直方向认为是块级方向。 2 内联元素的水平垂直居中 首先&#xff0c;常见内联元素有&#xff1a;a、span、em、b、stro…...

SpringBoot入门篇3 - 整合junit、整合mybatis、基于SpringBoot实现ssm整合

目录 1.整合JUnit Spring整合JUnit SpringBoot整合JUnit 测试类注解&#xff1a;SpringBootTest 作用&#xff1a;设置JUnit加载的SpringBoot启动类 2.整合mybatis ①使用spring initializr初始化项目的时候&#xff0c;添加依赖。 ②设置数据源application.yml spring:d…...

C#,《小白学程序》第七课:列表(List)应用之一“编制高铁车次信息表”

1 文本格式 /// <summary> /// 车站信息类 class /// </summary> public class Station { /// <summary> /// 编号 /// </summary> public int Id { get; set; } 0; /// <summary> /// 车站名 /// </summary>…...

周报/月报 Prompt

前言 用 AI 写好一份周报或月报。 文章目录 前言一、目的二、Prompt 设计原则三、模板 一、目的 简单的日程&#xff0c;扩写成一篇高质量的周报&#xff1b; 二、Prompt 设计原则 角色 目标 背景 要求 三、模板 内容生成模板 你是我的周报助手&#xff0c;根据我的工作…...

c++ 学习 之 构造函数的分类和调用类型 深入学习

正文 构造函数是在C中用于创建和初始化对象的特殊函数。构造函数可以根据不同的特性和参数进行分类&#xff0c;以下是一些常见的构造函数分类和详细讲解它们的调用方式&#xff1a; 默认构造函数&#xff1a; 默认构造函数是一个特殊的构造函数&#xff0c;它没有参数&#x…...

Royal TSX 6 Mac多协议远程软件

Royal TSX是一款功能强大的远程桌面管理软件&#xff0c;适用于Mac操作系统。它允许用户通过一个集成的界面来管理和访问多个远程计算机和服务器。 Royal TSX支持多种远程协议&#xff0c;包括RDP、VNC、SSH、Telnet和FTP等&#xff0c;可以方便地连接到Windows、Linux、Mac和其…...