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所没有的优点:
- 功能和特性上:
SQL server的管理工具( SQL Server Management Studio)功能强大,适合企业级应用。支持更多的数据类型,如 XML、JSON、地理空间数据等。
- 数据类型上:
虽然MySQL 更加轻量,适合中小型应用,也支持 JSON,但在某些数据类型的实现上可能不如 SQL Server 灵活。
SQL server还有很多其它的优点,等之后做项目的时候就可以更加直观且清晰的感觉到,因此这里先不赘述。
一, 使用T-SQL创建数据库
T-SQL全称为transact structured query language,事务化的结构查询语言。是对标准SQL语言功能的扩充。可以声明变量,有流程控制语句,支持对流程的控制等。其中,事务的概念如下:
- 事务transaction是需要一次性完成的操作集合。要么全部执行,要么全部不执行。
1,数据库的存储结构
通常SQL server数据库包含以下三类物理文件:
- 主要数据文件(也称主数据文件)。扩展名为.mdf (main data file)。
在创建数据库时生成,用来存储数据库的启动信息,部分或全部数据及数据库对象,是所有数据文件的起点,包含指向其它数据文件的指针。每个数据库只能有一个主要数据文件。
- 次要数据文件。扩展名为.ndf(个人ps:next data file)。
辅助主数据文件存储数据及数据库对象,可以在创建数据库时创建,也可以在创建数据库后添加。当数据库存储的数据量巨大,超过了单个Windows文件的最大值或需要将重要数据与次要数据分开存储以提高数据访问速度和安全时,用户可以自行创建一个或多个次要数据文件。一个数据库可以没有次要数据文件,也可以同时拥有多个次要数据文件。
- 日志文件。扩展名为.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创建学生成绩管理数据库
- 数据库名:StuScore
- 主数据文件:StuScore_data,存储位置'盘符\...\STUSCOREDATA',初始大小10MB,按照10%自动增长,最大容量200MB
- 日志文件: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语句,可以进行如下操作:
- 更改数据库名称,不能更改数据库的存储位置。
- 添加,删除数据库文件及文件组,
- 更改文件或文件组的属性,如名称,容量等。
基本语法如下:
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)修改学生成绩管理数据库
①增加文件组及次要数据文件
要求:
- 修改数据库StuScore
- 增加次要文件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在磁盘上的存储位置👇:
②增加日志文件
要求:
- 日志文件名: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",因为该数据库当前正在使用。”,先简单排除:
- 是否用该数据库来新建查询。
- 建议退出关闭当前的查询,重新开一个查询。
我就是用上面两种方法删除数据库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创建数据库
目录 一, 使用T-SQL创建数据库 1,数据库的存储结构 2,创建数据库的语法结构 1)使用T-SQL创建学生成绩管理数据库 二,使用T-SQL修改数据库 1,修改数据库的语法结构 1)修改学生成绩管理数…...
2024153读书笔记|《春烂漫:新平摄影作品选》——跳绳酷似人生路,起落平常,进退平常,莫惧征途万里长
2024153读书笔记|《春烂漫:新平摄影作品选》——跳绳酷似人生路,起落平常,进退平常,莫惧征途万里长 《春烂漫:新平摄影作品选》作者新平,2019.12.25年读完的小书,当时就觉得挺不错,今…...
MySQL有哪些高可用方案?
大家好,我是锋哥。今天分享关于【MySQL有哪些高可用方案?】面试题。希望对大家有帮助; MySQL有哪些高可用方案? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 MySQL 高可用方案旨在确保数据库系统的高可靠性、低宕机时间、以及在硬件故障…...
前台进程是什么
前台进程是什么 前台进程的定义 前台进程是指在操作系统中,与用户当前正在交互的进程。这些进程通常拥有最高的优先级,因为它们直接影响用户体验,是用户正在关注或者正在使用的应用程序对应的进程。例如,当你在手机上打开一个游戏…...
Redis学习笔记之——学习计划
Redis——Remote Dictionary Server,开源、基于内存、速度快、key-value... Redis做为一个高性能的键值存储系统,广泛应用于缓存、会话存储、分布式锁以及其他需要快速访问的数据场景中。熟悉掌握redis,似乎已成为广大码农们必备的一项技能。…...
npm : 无法加载文件 D:\nodejs\npm.ps1
问题描述 npm run serve 启动一个Vue项目,报错如下: npm : 无法加载文件 D:\nodejs\npm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/? LinkID135170 中的 about_Execution_Policies。…...
【Neo4J】neo4j docker容器下的备份与恢复
文章目录 一. 官网说明1. 操作说明2. 注意事项 二. docker 容器化操作1. 导出(备份)停止容器执行备份 2. 导入(恢复)停止容器(如果未停止)执行导入 3. 启动容器 一. 官网说明 https://neo4j.com/docs/operations-manual/current/…...
更新数据时Redis的操作
一般做法是在数据库更新后删除Redis中对应的缓存数据,而非更新数据。那么为什么要这么做呢? 以下是一些拙见 场景使用 金融交易系统:在金融领域,数据的准确性至关重要。任何数据不一致都可能导致严重的财务损失。因此࿰…...
[实战]MySQL时间多了一秒
场景 同时保存一条数据在MySQL和Redis中,JAVA系统中显示Redis和MySQL数据差了一秒,即MySQL比Redis中快了一秒。 复现 我们系统中MySQL的时间类型用的是timestamp,问题是一样的。 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,下载太慢的话可以使用迅雷加速,右…...
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…...
记一次回调失败问题
问题背景: 客户的问题是部分订单收不到回调,部分订单能正常收到回调,而回调的字段其实都是一样的,这不是很奇怪么? 分析过程: 网络拓扑大概如下图 找到一笔回调异常的订单,在阿里云日志服务器…...
前端常用的方法
时间处理 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子系统)
修改设备树文件 先关闭心跳灯功能,也就是在图 10.4.1.2 中第 167 行添加 status 改为 disabled,也就是禁止 work 这个节点,那么禁止心跳灯功能。 我们后面需要禁止哪个功能,只需要将其 status 属性改为 disabled 就可以了。 gpi…...
hbuilder 本地插件配置
插件存放路径,项目根目录nativeplugins下,没有就新建。 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包,引入POM文件: <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语言编程中,三维及以上数组我们使用的很少,二维数组我们使用得较多。说到数组,又不得关联到指针,因为他们两者的联系太紧密了。今天我们就详细介绍下c语言下的多维数组(主要是介绍二维数组)和指针。 一、二维数组 1.1&am…...
2026年论文党必备:盘点2026年倾心之选的的降AIGC网站
轻松降低论文AI率在2026年已不再是天方夜谭。以下是2026年最炸裂、实测效果显著的降AIGC网站神器,覆盖AI痕迹消除、文本改写润色、降重优化、学术合规检测四大核心场景,帮你稳妥搞定毕业论文。 一、全流程王者:一站式搞定论文全链路 这类工具…...
Python自动化登录:破解验证码与Cookie会话维持实战
1. 这不是“绕过验证”,而是理解会话机制的起点很多人看到“跳过验证码登陆”第一反应是:这合规吗?会不会被封?其实这个问题本身就暴露了一个关键误区——我们不是在“绕过”什么,而是在还原真实用户登录时浏览器自动完…...
AssetStudio深度解析:Unity资源逆向的底层原理与工程实践
1. 这不是“点开即用”的工具,而是Unity资源逆向的手术刀AssetStudio这个名字听起来像某个轻量级小工具——点开、拖入、导出,三步搞定。但实际用过Unity项目逆向的人都知道,它根本不是“一键提取”的魔法棒,而是一把需要你亲手调…...
85%企业将淘汰纯业务程序员!2026年前,大模型才是你的职业救命稻草!
文章指出传统技术岗面临淘汰风险,85%企业计划在2026年前淘汰纯业务型程序员。未来职场核心竞争力在于掌握大模型技术。文章强调大模型技术是技术人的时代红利,提供从入门到精通的全套视频教程,涵盖提示词工程、RAG、Agent等技术点。文章还分析…...
2026数字营销专业学数据分析的职业优势
一、数字营销与数据分析的融合趋势2026年数字营销领域将进一步依赖数据驱动决策。随着消费者行为数字化程度加深,企业需通过数据分析实现个性化营销、动态定价和实时优化。复合型人才需同时掌握营销策略与数据建模能力,以应对跨渠道归因、隐私安全等复杂…...
java+vue+SpringBootjava+vue+SpringBoot中小型制造企业质量管理系统(程序+数据库+报告+部署教程+答辩指导)(程序+数据库+报告+部署教程+答辩指导)
源代码数据库LW文档(1万字以上)开题报告答辩稿ppt部署教程代码讲解代码时间修改工具 技术实现 开发语言:后端:Java 前端:vue框架:springboot数据库:mysql 开发工具 JDK版本:JDK1.8 数…...
Ventoy解决方案:告别重复格式化的万能启动盘制作神器
Ventoy解决方案:告别重复格式化的万能启动盘制作神器 【免费下载链接】Ventoy A new bootable USB solution. 项目地址: https://gitcode.com/GitHub_Trending/ve/Ventoy Ventoy是一款革命性的开源可启动USB解决方案,通过创新的免格式化技术&…...
【Midjourney颗粒感控制白皮书】:基于1278组V6.1→V6.2渲染样本的统计建模,颗粒强度与--chaos关联性达r=0.93
更多请点击: https://intelliparadigm.com 第一章:Midjourney颗粒感控制白皮书导论 颗粒感(Grain)是Midjourney图像生成中影响画面质感、胶片氛围与艺术真实性的关键隐式参数。它并非独立命令,而是深度耦合于 --sty…...
YgoMaster终极指南:如何在电脑上免费畅玩游戏王大师决斗
YgoMaster终极指南:如何在电脑上免费畅玩游戏王大师决斗 【免费下载链接】YgoMaster Offline Yu-Gi-Oh! Master Duel 项目地址: https://gitcode.com/gh_mirrors/yg/YgoMaster 你是否渴望随时随地体验《游戏王大师决斗》的精彩对决,却受限于网络连…...
功能子图检测技术在集成电路设计中的应用与优化
1. 功能子图检测技术概述 在集成电路设计领域,功能子图检测是一项基础而关键的技术。简单来说,它就像是在一堆乐高积木搭建的复杂结构中,找出那些功能相同但拼法可能不同的组件模块。这项技术的核心任务是判断一个给定的子图Q是否是目标图G的…...
