SQL sever中库管理

news2024/11/27 13:34:41

目录

一、创建数据库

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,  --初始大小为5MB
	MAXSIZE=UNLIMITED,   --最大限制为无限大
	FILEGROWTH=10%  --主数据文件增长幅度为10%
)
LOG ON
(
	NAME='TEST2_LOG',  --逻辑名称
	FILENAME='E:\sqlsevertest\TEST2_LOG.LDF',  --物理名称
	SIZE=5MB,   --初始大小为5MB
	MAXSIZE=50MB,  --最大限制是50MB
	FILEGROWTH=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 TEST2
	MODIFY FILE 
	(	
		NAME = TEST2_DATA,  --这里是逻辑名
		MAXSIZE = 100MB,	--将主数据文件的最大大小改为100MB
		FILEGROWTH = 5MB	--将主数据文件的增长方式改为按5MB增长			
	)
GO

查看更改结果:

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

ALTER DATABASE TEST2
	ADD FILEGROUP FGROUP  --新增文件组的名字
GO

ALTER DATABASE TEST2
	ADD 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 TEST2
	REMOVE FILE TEST2_DATA2
GO
ALTER DATABASE TEST2
	REMOVE FILE TEST2_DATA3
GO

--再删除文件组
ALTER DATABASE TEST2
	REMOVE FILEGROUP FGROUP
GO

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

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

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

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

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

ALTER DATABASE TEST2
	REMOVE FILE TEST2_LOG2
GO

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

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

注意

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

ALTER DATABASE TEST2
	MODIFY 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'表示不保存分离状态的元数据信息。

注意:

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

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

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

相关文章

Spring——Spring读取文件

文章目录 1.通过 value 读取比较简单的配置信息2.通过ConfigurationProperties读取并与 bean 绑定3.通过ConfigurationProperties读取并校验4. PropertySource 读取指定 properties 文件5.题外话:Spring加载配置文件的优先级 很多时候我们需要将一些常用的配置信息比如阿里云os…

protobuf生成golang和grpc代码踩坑记

错误提示&#xff1a;seems to be defined in "*.proto", which is not imported by "*proto". To use it here, please add the necessary import. 这个地方主要是因为包名的问题&#xff0c;假设user.proto文件被product.proto import了&#xff0c;则u…

《Python趣味工具》——文字RPG游戏的开发(附人生选择模拟器的详细讲解及其他多种RPG游戏的源码)

今天我们来学习如何制作一个文字RPG游戏 。 内容主要分为3个部分&#xff1a; part1. 文字游戏&#xff08;MUD&#xff09;的趣味历史 part2. 文字游戏的设计方法 part3. 文字游戏功能实现 文章目录 一、文字游戏&#xff08;MUD&#xff09;的趣味历史:1. 什么是MUD游戏:2. …

未找到System.Runtime.InteropServices.Marshal.GetTypeFromCLSID(System.Guid) 方法错误

记录此问题实际上是由于.netFrame框架配置太高引起的&#xff0c;一般常见于二次开发中&#xff0c;因为二次开发一般都是引用的com组件&#xff0c;在引用过程中后台代码调用了 Method not found: System.Type System.Runtime.InteropServices.Marshal.GetTypeFromCLSID(Syste…

研发规范第十三讲:阿里 - 如何进行项目稳定性建设

研发规范第十三讲&#xff1a;阿里 - 如何进行项目稳定性建设 本文是研发规范第13讲&#xff0c;阿里巴巴高级技术专家云狄将结合自己多年的经验&#xff0c;从开发规范、开发流程、技术规划与管理三个角度出发&#xff0c;分享对技术TL这一角色的理解与思考&#xff0c;欢迎一…

2、QT的信号与槽

一、什么是信号与槽 一个对象发送一个信号出去&#xff0c;另外一个对象接收到该信号后&#xff0c;会触发相应的槽函数 二、信号与槽的语法 connect(信号的发送者&#xff0c;SIGNAL(信号名称),信号的接收者,SLOT(槽函数)); 1、写法&#xff1a; QT 4 的写法 connect(sende…

Python爬虫:一个爬取豆瓣电影人像的小案例

从谷歌浏览器的开发工具进入 选择图片右键点击检查 ![在这里插入图片描述](https://img-blog.csdnimg.cn/1b38c2a942c441fb8cb545a28bb35015.png 翻页之后发现网址变化的只有start数值&#xff0c;每次变化值为30 Python代码 import requests from bs4 import BeautifulSou…

零基础安装pycuda

零基础安装pycuda 前言安装Visual Studio安装C/C环境添加环境变量 安装pycuda查看系统位数查看python版本下载whl文件 前言 最近开始学习基于python的cuda编程&#xff0c;记录一下pycuda的安装。 在安装pycuda之前&#xff0c;首先需要有NVIDIA的独立显卡并且要安装CUDA和CUD…

程序与进程

一、程序是怎么被执行的 1.在程序中&#xff0c;由引导代码去调用程序中得main函数&#xff0c;而这个过程由链接器完成&#xff0c;链接器将引导代码链接到我们的应用程序构成可执行文件。 2.程序运行需要通过操作系统的加载器来实现&#xff0c;加载器是操作系统中的程序&a…

【javascript实操记录】

功能描述&#xff1a; 1. 利用split()方法对测试数据进行解析&#xff1a;学科&#xff0c;日期 2. 将测试数据封装成对象数组的格式 3. 使用数组的sort()方法和Date对象&#xff0c;将测试数据按照日期从早到晚进行排序 4. 表格数据的静态填充 5. 距离最近考试的倒计时天…

使用 NestJS 和 Prisma 构建 REST API

NestJS是Node.js框架之一&#xff0c;它最近获得了很多开发人员的喜爱和牵引力。本文将教你如何使用NestJS&#xff0c;Prisma&#xff0c;PostgreSQL和Swagger构建后端REST API。 文章目录 介绍您将使用的技术 先决条件假定的知识开发环境 生成 NestJS 项目创建 PostgreSQL 实…

链路聚合原理

文章目录 一、定义二、功能三、负载分担四、分类五、常用命令 首先可以看下思维导图&#xff0c;以便更好的理解接下来的内容。 一、定义 在网络中&#xff0c;端口聚合是一种将连接到同一台交换机的多个物理端口捆绑在一起&#xff0c;形成一个逻辑端口的技术。通过端口聚合&…

数据结构--5.0.1图的存储结构

目录 一、邻接矩阵&#xff08;无向图&#xff09; 二、邻接矩阵&#xff08;有向图&#xff09; 三、邻接矩阵&#xff08;网&#xff09; 四、邻接表&#xff08;无向图&#xff09; 五、邻接表&#xff08;有向图&#xff09; ——图的存储结构相比较线性表与树来说就复…

AIGC全流程赋能:从剧本到宣发,影视内容全新呈现

“猕猴桃”视频平台在今日发布了2023年第二季度财报&#xff0c;首次公布引入AIGC辅助剧本评估。内部数据显示&#xff0c;AIGC帮助提升剧本评估、预算规划等效率超过90%。“猕猴桃”视频平台还通过AIGC技术实现对影视剧的剧情理解&#xff0c;从而改进搜索结果、推荐和用户互动…

kubernetes deploy standalone mysql demo

kubernetes 集群内部署 单节点 mysql ansible all -m shell -a "mkdir -p /mnt/mysql/data"cat mysql-pv-pvc.yaml apiVersion: v1 kind: PersistentVolume metadata:name: mysql-pv-volumelabels:type: local spec:storageClassName: manualcapacity:storage: 5Gi…

IAR 编译优化 #pragma optimize

在IAR工具菜单栏中 点击 【help】-> 【Serach】 搜索optimize #pragma optimize[goal][level][vectorize][disable] 如果想设置优化速度到最高等级,则如下设置即可 #pragma optimizespeed high int SmallAndUsedOften() { /* Do something here. */ }

分布式事务学习笔记

MySQL事务 1、 MySQL事务隔离级别 读未提交 &#xff08;READ UNCOMMITTED&#xff09; &#xff08;存在脏读的问题&#xff09;读已提交&#xff08;READ COMMITTED&#xff09;可重复读&#xff08;REPEATABLE READ&#xff09;串行化&#xff08;SERIALIZABLE&#xff09;…

LCD驱动

一、Linux 下 LCD 驱动简析 1.与裸机的异同 在 Linux 中应用程序最终也是通过操作 RGB LCD 的显存来实现在 LCD 上显示字符、图片等信息&#xff0c;但是Linux系统的内存管理严格&#xff0c;使用显存需要申请&#xff0c;因为虚拟内存的存在&#xff0c;驱动程序设置的显存和应…

python 栈、用栈实现综合计算器

栈的基本介绍 出栈&#xff08;pop&#xff09;示意图 入栈&#xff08;push&#xff09;示意图 栈的应用场景 数组模拟栈 思路分析 代码实现 # 用数组模拟栈 class ArrayStack:def __init__(self, size):self.max_size size # 栈的最大容量self.top -1 # top 表示栈顶…

Python项目实战之《飞机大战游戏》

目录 一、Pygame库包简介 二、Pygame安装 三、项目开发思路 3.1前言 3.2飞机大战开发步骤 一、Pygame库包简介 Pygame是一个基于python的游戏开发库&#xff0c;它提供一系列的工具和接口&#xff0c;使开发人员能够轻松的创建各种类型的游戏&#xff0c;包括2D游戏和简单…