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

SQL server学习02-使用T-SQL创建数据库

目录

一, 使用T-SQL创建数据库

1,数据库的存储结构 

2,创建数据库的语法结构 

1)使用T-SQL创建学生成绩管理数据库

二,使用T-SQL修改数据库

 1,修改数据库的语法结构

1)修改学生成绩管理数据库

①增加文件组及次要数据文件 

​编辑 ②增加日志文件

 ③修改主数据文件最大容量

2)使用T-SQL备份数据库

 3)使用T-SQL删除数据库

①无法删除数据库 "xxx",因为该数据库当前正在使用

 4)重新加载数据库


我一开始接触的是MySQL,之所以要学SQL server,还是因为SQL server有MySQL所没有的优点:

  1. 功能和特性上: 

    SQL server的管理工具( SQL Server Management Studio)功能强大,适合企业级应用。支持更多的数据类型,如 XML、JSON、地理空间数据等。
     
  2. 数据类型上:

    虽然MySQL 更加轻量,适合中小型应用,也支持 JSON,但在某些数据类型的实现上可能不如 SQL Server 灵活。

SQL server还有很多其它的优点,等之后做项目的时候就可以更加直观且清晰的感觉到,因此这里先不赘述。

一, 使用T-SQL创建数据库

 T-SQL全称为transact structured query language,事务化的结构查询语言。是对标准SQL语言功能的扩充。可以声明变量,有流程控制语句,支持对流程的控制等。其中,事务的概念如下:

  •  事务transaction是需要一次性完成的操作集合。要么全部执行,要么全部不执行。

1,数据库的存储结构 

 通常SQL server数据库包含以下三类物理文件:

  1. 主要数据文件(也称主数据文件)。扩展名为.mdf (main data  file)。

    在创建数据库时生成,用来存储数据库的启动信息,部分或全部数据及数据库对象,是所有数据文件的起点,包含指向其它数据文件的指针。每个数据库只能有一个主要数据文件。
     
  2. 次要数据文件。扩展名为.ndf(个人ps:next data file)。

    辅助主数据文件存储数据及数据库对象,可以在创建数据库时创建,也可以在创建数据库后添加。当数据库存储的数据量巨大,超过了单个Windows文件的最大值或需要将重要数据与次要数据分开存储以提高数据访问速度和安全时,用户可以自行创建一个或多个次要数据文件。一个数据库可以没有次要数据文件,也可以同时拥有多个次要数据文件。
     
  3. 日志文件。扩展名为.ldf (log data  file)。

    在创建数据库时生成,用于记录系统操作事件的记录文件或文件集合,这些记录可以作为恢复数据库的依据。当数据库损坏时,可以使用事务日志恢复数据库。每个数据库至少拥有一个日志文件,而且允许拥有多个日志文件。

2,创建数据库的语法结构 

一开始脑海里面得有下面这4句👇: 

--1,创数据库
CREATE DATABASE 数据库名 
--2,创数据文件(主文件)
ON PRIMARY(),
FILEGROUP 文件组名()
--3,创日志文件
LOG ON()
--4,批处理分隔符,用来提交T-SQL语句(默认提交次数为1,1可省略)
GO				 	

可以看到,在主数据文件部分包含一句:FILEGROUP 文件组名(),用来创建文件组。而文件组中存放的文件都是次要数据文件,以.ndf为文件名后缀。

批处理分隔符的设置如下👇,没有什么特别的要求,一般默认设置成“GO” 。

之后再往里面填充。这里从上至下,先填充主数据文件的部分。

ON PRIMARY(
NAME=主数据文件名,  -- 逻辑名
FILENAME='盘符\存储路径\主数据文件名.mdf',  -- 物理名
SIZE=主数据文件的初始大小,
MAXSIZE=主数据文件的最大容量,
FILEGROWTH=主数据文件自动增长的方式(可以是百分比也可以是具体的内存大小)
)

如果要求创建文件组的话,就需要在创建好主数据文件的结束括号后面加上逗号,再写上创文件组的语句:创建文件组和创建主数据文件类似,如下👇

,FILEGROUP 文件组名(
NAME=次要数据文件名,
FILENAME='盘符\存储路径\次要数据文件名.ndf',
SIZE=次要数据文件的初始大小,
MAXSIZE=次要数据文件的最大容量,
FILEGROWTH=次要数据文件自动增长的方式(可以是百分比也可以是具体的内存大小)
)

日志文件的创建也一样:

LOG ON(
NAME=日志文件名,
FILENAME='盘符\存储路径\日志文件名.ldf',
SIZE=日志文件的初始大小,
MAXSIZE=日志文件的最大容量,
FILEGROWTH=日志文件自动增长的方式(可以是百分比也可以是具体的内存大小)
)

知道该怎么创建数据库及数据库的3类物理文件之后,上题目:

1)使用T-SQL创建学生成绩管理数据库

  1.  数据库名:StuScore
  2. 主数据文件:StuScore_data,存储位置'盘符\...\STUSCOREDATA',初始大小10MB,按照10%自动增长,最大容量200MB
  3. 日志文件:StuScore_log,存储位置'盘符\...\STUSCORELOG',初始大小3MB,自动增长方式为每次增长1MB,最大容量60MB

首先电脑上得事先创建好文件夹 STUSCOREDATA和STUSCORELOG。

之后按照题目要求编写语句: 

--1,创数据库
CREATE DATABASE StuScore 
--2,创数据文件(主文件)
ON PRIMARY(
NAME=StuScore_data,
FILENAME='D:\mySqlserver\STUSCOREDATA\StuScore_data.mdf',
SIZE=10MB,
MAXSIZE=200MB,
FILEGROWTH=5%)
--3,创日志文件
LOG ON(
NAME=StuScore_log,
FILENAME='D:\mySqlserver\STUSCORELOG\StuScore_log.ldf',
SIZE=3MB,
MAXSIZE=60MB,
FILEGROWTH=1MB)
--4,批处理分隔符,用来提交T-SQL语句(默认提交次数为1,1可省略)
GO				 	

创建的主数据文件和日志文件如下:

 

 

二,使用T-SQL修改数据库

 1,修改数据库的语法结构

通过ALTER DATABASE语句,可以进行如下操作:

  1. 更改数据库名称,不能更改数据库的存储位置。
  2. 添加,删除数据库文件及文件组,
  3. 更改文件或文件组的属性,如名称,容量等。

 基本语法如下:

ALTER DATABASE 数据库名
-- 重命名数据库
MODIFY NAME<新的数据库名>
-- 添加/修改数据文件
ADD/MODIFY FILE<filespec>   
-- 删除指定文件
REMOVE FILE<文件逻辑名>
-- 添加/修改/删除文件组
ADD/MODIFY/REMOVE FILEGROUP<文件组名>
-- 添加日志文件
ADD LOG FILE<filespec>

其中,filespec指代如下:

<filespec> ::=
NAME=文件逻辑名,
FILENAME='盘符\存储路径\文件逻辑名.mdf/ndf/ldf',  -- 文件的物理名
SIZE=文件的初始大小,
MAXSIZE=文件的最大容量,
FILEGROWTH=文件自动增长的方式(可以是百分比也可以是具体的内存大小)

1)修改学生成绩管理数据库

①增加文件组及次要数据文件 

 要求:

  1. 修改数据库StuScore
  2. 增加次要文件StuScore_data2,存储位置'盘符\...\STUSCOREDATA',初始大小20MB,最大容量2GB,按照10%自动增长,放到StuScoreGroup文件组中。

 之后按照要求编写语句:

ALTER DATABASE StuScore
ADD FILEGROUP StuScoreGroup
ALTER DATABASE StuScore
ADD FILE(
NAME=StuScore_data2,
FILENAME='D:\mySqlserver\STUSCOREDATA\StuScore_data2.ndf',
SIZE=20MB,
MAXSIZE=2GB,
FILEGROWTH=10%
) TO FILEGROUP StuScoreGroup

文件组StuScoreGroup中的次要数据文件StuScore_data2.ndf在磁盘上的存储位置👇: 

 ②增加日志文件

 要求:

  1. 日志文件名:StuScore_log2,存储位置'盘符\...\STUSCORELOG',初始大小10MB,不限制最大容量(UNLIMITED,不限制),按照1MB自动增长。

 按照要求编写语句:

ALTER DATABASE StuScore
ADD LOG FILE(
NAME=StuScore_log2,
FILENAME='D:\mySqlserver\STUSCORELOG\StuScore_log2.ldf',
SIZE=10MB,
MAXSIZE=UNLIMITED,
FILEGROWTH=1MB
)

 ③修改主数据文件最大容量

要求:将主数据文件StuScore_data的最大容量设置为500MB。

按照要求编写语句:

ALTER DATABASE StuScore
MODIFY FILE(
NAME=StuScore_data,
MAXSIZE=500MB
)

如下,修改成功 

2)使用T-SQL备份数据库

BACKUP DATABASE StuScore
TO DISK = 'D:\mySqlserver\Backups\StuScore.bak'
WITH FORMAT,MEDIANAME = 'StuScoreBackup',NAME = 'Full Backup of StuScore';

 3)使用T-SQL删除数据库

DROP DATABASE StuScore 
无法删除数据库 "xxx",因为该数据库当前正在使用

 如果点击执行之后提示“无法删除数据库 "xxx",因为该数据库当前正在使用。”,先简单排除:

  1. 是否用该数据库来新建查询。
     
  2. 建议退出关闭当前的查询,重新开一个查询。

我就是用上面两种方法删除数据库StuScore,如果使用上述两种方法还是无法删除数据库,接下来就需要将数据库设置为单用户模式,断开所有连接,并删除数据库👇

ALTER DATABASE 需要删除的数据库名 SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
DROP DATABASE 要删除的数据库名;

 4)重新加载数据库

RESTORE DATABASE StuScore
FROM DISK = 'D:\mySqlserver\Backups\StuScore.bak'
WITH NORECOVERY;  -- 多个备份文件还原
SELECT NAME FROM sys.databases 

 

如果两三分钟后,数据库依旧显示“正在还原”,可以输入如下语句,完成还原操作:

RESTORE DATABASE StuScore WITH RECOVERY;

 

之后到磁盘下,可以看到相关的数据文件和日志文件👇 

 有问题请在评论区留言或者是私信我,回复时间不超过1天。

相关文章:

SQL server学习02-使用T-SQL创建数据库

目录 一&#xff0c; 使用T-SQL创建数据库 1&#xff0c;数据库的存储结构 2&#xff0c;创建数据库的语法结构 1&#xff09;使用T-SQL创建学生成绩管理数据库 二&#xff0c;使用T-SQL修改数据库 1&#xff0c;修改数据库的语法结构 1&#xff09;修改学生成绩管理数…...

2024153读书笔记|《春烂漫:新平摄影作品选》——跳绳酷似人生路,起落平常,进退平常,莫惧征途万里长

2024153读书笔记|《春烂漫&#xff1a;新平摄影作品选》——跳绳酷似人生路&#xff0c;起落平常&#xff0c;进退平常&#xff0c;莫惧征途万里长 《春烂漫&#xff1a;新平摄影作品选》作者新平&#xff0c;2019.12.25年读完的小书&#xff0c;当时就觉得挺不错&#xff0c;今…...

MySQL有哪些高可用方案?

大家好&#xff0c;我是锋哥。今天分享关于【MySQL有哪些高可用方案?】面试题。希望对大家有帮助&#xff1b; MySQL有哪些高可用方案? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 MySQL 高可用方案旨在确保数据库系统的高可靠性、低宕机时间、以及在硬件故障…...

前台进程是什么

前台进程是什么 前台进程的定义 前台进程是指在操作系统中&#xff0c;与用户当前正在交互的进程。这些进程通常拥有最高的优先级&#xff0c;因为它们直接影响用户体验&#xff0c;是用户正在关注或者正在使用的应用程序对应的进程。例如&#xff0c;当你在手机上打开一个游戏…...

Redis学习笔记之——学习计划

Redis——Remote Dictionary Server&#xff0c;开源、基于内存、速度快、key-value... Redis做为一个高性能的键值存储系统&#xff0c;广泛应用于缓存、会话存储、分布式锁以及其他需要快速访问的数据场景中。熟悉掌握redis&#xff0c;似乎已成为广大码农们必备的一项技能。…...

npm : 无法加载文件 D:\nodejs\npm.ps1

问题描述 npm run serve 启动一个Vue项目&#xff0c;报错如下&#xff1a; npm : 无法加载文件 D:\nodejs\npm.ps1&#xff0c;因为在此系统上禁止运行脚本。有关详细信息&#xff0c;请参阅 https:/go.microsoft.com/fwlink/? LinkID135170 中的 about_Execution_Policies。…...

【Neo4J】neo4j docker容器下的备份与恢复

文章目录 一. 官网说明1. 操作说明2. 注意事项 二. docker 容器化操作1. 导出&#xff08;备份&#xff09;停止容器执行备份 2. 导入&#xff08;恢复&#xff09;停止容器(如果未停止)执行导入 3. 启动容器 一. 官网说明 https://neo4j.com/docs/operations-manual/current/…...

更新数据时Redis的操作

一般做法是在数据库更新后删除Redis中对应的缓存数据&#xff0c;而非更新数据。那么为什么要这么做呢&#xff1f; 以下是一些拙见 场景使用 金融交易系统&#xff1a;在金融领域&#xff0c;数据的准确性至关重要。任何数据不一致都可能导致严重的财务损失。因此&#xff0…...

[实战]MySQL时间多了一秒

场景 同时保存一条数据在MySQL和Redis中&#xff0c;JAVA系统中显示Redis和MySQL数据差了一秒&#xff0c;即MySQL比Redis中快了一秒。 复现 我们系统中MySQL的时间类型用的是timestamp&#xff0c;问题是一样的。 CREATE TABLE test_date (id int(11) NOT NULL AUTO_INCRE…...

Windows环境基于ecplise的spring boot框架新建spring start project

SpringToolSuite4 新建项目实例 前言Windows基于ecplise 工具的spring boot 架构 前言 使用Spring boot 框架向前端传输数据 Windows基于ecplise 工具的spring boot 架构 spring-tool-suite-4官网下载链接spring tool&#xff0c;下载太慢的话可以使用迅雷加速&#xff0c;右…...

C 进阶 — 字符函数和字符串函数 ( 二 )

C 进阶 — 字符函数和字符串函数 ( 二 ) 书接上回 C 进阶 — 字符函数和字符串函数 ( 一 ) 1.9 strtok 参考资料 strtok 函数用法详解 char * strtok ( char * str, const char * sep );strtok 是 [C 标准库](https://so.csdn.net/so/search?qC 标准库&spm1001.2101.3…...

Mybatis Plus 3.0 快速入门

1、简介 MyBatis-Plus (简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 2、创建并初始化数据库 2.1、创建数据库 mybatis_plus 2.2、创建 User 表 其表结构如下: idnameageemail1Jone18test1@baomidou.com2Jack…...

RFDiffusion 计算二面角函数get_dih解读

get_dih 函数计算任意四个连续原子之间的二面角(dihedral angle),它描述了主链和侧链原子的三维空间排布。 源代码: def get_dih(a, b, c, d):"""calculate dihedral angles for all consecutive quadruples (a[i],b[i],c[i],d[i])given Cartesian coordi…...

记一次回调失败问题

问题背景&#xff1a; 客户的问题是部分订单收不到回调&#xff0c;部分订单能正常收到回调&#xff0c;而回调的字段其实都是一样的&#xff0c;这不是很奇怪么&#xff1f; 分析过程&#xff1a; 网络拓扑大概如下图 找到一笔回调异常的订单&#xff0c;在阿里云日志服务器…...

前端常用的方法

时间处理 moment时间处理函数 // 时间日期相关常用的方法变量 import moment from moment;// 获取当前时间 moment export const nowDateMoment moment(new Date()); export const nowDateY moment(new Date()).format(YYYY); export const nowDateM moment(new Date()).f…...

RK3568(六)——led设备驱动(GPIO子系统)

修改设备树文件 先关闭心跳灯功能&#xff0c;也就是在图 10.4.1.2 中第 167 行添加 status 改为 disabled&#xff0c;也就是禁止 work 这个节点&#xff0c;那么禁止心跳灯功能。 我们后面需要禁止哪个功能&#xff0c;只需要将其 status 属性改为 disabled 就可以了。 gpi…...

hbuilder 本地插件配置

插件存放路径&#xff0c;项目根目录nativeplugins下&#xff0c;没有就新建。 aar文件存放路径\nativeplugins\module\android package.json存放路径\nativeplugins\module\ 配置package.json文件 { "name": "module", "id": "modu…...

Spring Boot集成Kafka:最佳实践与详细指南

文章目录 一、生产者1.引入库2.配置文件3.配置类PublicConfig.javaMessageProducer.java 4.业务处理类 三、消费者1.引入库2.配置类PublicConfig.javaMessageConsumer.java 3.业务类 一、生产者 1.引入库 引入需要依赖的jar包&#xff0c;引入POM文件&#xff1a; <depend…...

基于Qwen2-VL模型针对LaTeX OCR任务进行微调训练 - 多图推理

基于Qwen2-VL模型针对LaTeX OCR任务进行微调训练 - 多图推理 flyfish 基于Qwen2-VL模型针对LaTeX_OCR任务进行微调训练_-_LoRA配置如何写 基于Qwen2-VL模型针对LaTeX_OCR任务进行微调训练_-_单图推理 基于Qwen2-VL模型针对LaTeX_OCR任务进行微调训练_-_原模型_单图推理 基于Q…...

详解下c语言下的多维数组和指针数组

在实际c语言编程中&#xff0c;三维及以上数组我们使用的很少&#xff0c;二维数组我们使用得较多。说到数组&#xff0c;又不得关联到指针&#xff0c;因为他们两者的联系太紧密了。今天我们就详细介绍下c语言下的多维数组(主要是介绍二维数组)和指针。 一、二维数组 1.1&am…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中&#xff0c;接口是一种抽象类型&#xff0c;它定义了一组方法的集合&#xff1a; // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的&#xff1a; // 矩形结构体…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢

随着互联网技术的飞速发展&#xff0c;消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁&#xff0c;不仅优化了客户体验&#xff0c;还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用&#xff0c;并…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

EtherNet/IP转DeviceNet协议网关详解

一&#xff0c;设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络&#xff0c;本网关连接到EtherNet/IP总线中做为从站使用&#xff0c;连接到DeviceNet总线中做为从站使用。 在自动…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)

前言&#xff1a; 最近在做行为检测相关的模型&#xff0c;用的是时空图卷积网络&#xff08;STGCN&#xff09;&#xff0c;但原有kinetic-400数据集数据质量较低&#xff0c;需要进行细粒度的标注&#xff0c;同时粗略搜了下已有开源工具基本都集中于图像分割这块&#xff0c…...

【Go语言基础【12】】指针:声明、取地址、解引用

文章目录 零、概述&#xff1a;指针 vs. 引用&#xff08;类比其他语言&#xff09;一、指针基础概念二、指针声明与初始化三、指针操作符1. &&#xff1a;取地址&#xff08;拿到内存地址&#xff09;2. *&#xff1a;解引用&#xff08;拿到值&#xff09; 四、空指针&am…...