当前位置: 首页 > 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…...

OpenPLC Editor:重新定义工业自动化编程的开源解决方案

OpenPLC Editor&#xff1a;重新定义工业自动化编程的开源解决方案 【免费下载链接】OpenPLC_Editor 项目地址: https://gitcode.com/gh_mirrors/ope/OpenPLC_Editor 在工业自动化领域&#xff0c;传统PLC编程软件往往面临高昂的授权费用、封闭的生态系统和有限的技术支…...

FPGA JESD204B链路调试实战:从时钟配置到同步状态解析

1. JESD204B接口基础&#xff1a;关键参数解析 第一次接触JESD204B接口时&#xff0c;我被那一堆参数搞得晕头转向。M、N、N、F、K这些字母组合看起来像密码一样&#xff0c;但理解它们对后续调试至关重要。让我用最直白的语言帮你梳理清楚。 M代表转换器数量&#xff0c;这个最…...

cfn-lint社区生态建设:参与贡献与获取支持的完整指南

cfn-lint社区生态建设&#xff1a;参与贡献与获取支持的完整指南 【免费下载链接】cfn-lint CloudFormation Linter 项目地址: https://gitcode.com/gh_mirrors/cf/cfn-lint cfn-lint 作为 AWS CloudFormation 模板的权威验证工具&#xff0c;拥有一个活跃的开源社区生态…...

小白/程序员必看:收藏这份强化学习训练智能体的实战指南(HelloAgents实战篇)

本文介绍了如何使用强化学习训练智能体&#xff0c;从LLM训练流程讲起&#xff0c;对比了PBRFT与Agentic RL的区别&#xff0c;并详细阐述了Agentic RL的六大核心能力&#xff1a;推理、工具使用、记忆、规划、自我改进和感知。文章还介绍了HelloAgents框架如何集成强化学习库T…...

手把手教你:在无外网服务器上用Docker离线搭建Jitsi-Meet视频会议系统

无外网环境下的Jitsi-Meet容器化部署实战指南 在金融、军工等对网络安全要求极高的行业&#xff0c;或是某些特殊的生产环境中&#xff0c;服务器往往被部署在完全隔离的内网中。这种环境下&#xff0c;传统的在线安装方式完全失效&#xff0c;而视频会议系统又是现代企业协作的…...

FastAPI 2.0流式AI响应落地全链路(从uvicorn配置到SSE/Chunked Transfer终极适配)

第一章&#xff1a;FastAPI 2.0流式AI响应落地全链路概览FastAPI 2.0 引入了对原生异步流式响应&#xff08;StreamingResponse&#xff09;的深度增强支持&#xff0c;结合 ASGI 3.0 规范与现代 LLM 推理服务特性&#xff0c;为构建低延迟、高吞吐的 AI 对话接口提供了坚实基础…...

Skija与现有Java图形库对比:为什么选择Skija?

Skija与现有Java图形库对比&#xff1a;为什么选择Skija&#xff1f; 【免费下载链接】skija Java bindings for Skia 项目地址: https://gitcode.com/gh_mirrors/sk/skija Skija是一个高质量的Java绑定库&#xff0c;为Java开发者提供了强大的2D图形渲染能力。作为Skia…...

【.NET 9低代码开发终极指南】:20年微软生态专家亲授——零前端经验如何3天交付生产级业务应用?

第一章&#xff1a;.NET 9低代码开发全景认知与核心价值定位.NET 9 将低代码能力深度融入平台原生架构&#xff0c;不再依赖第三方插件或独立运行时&#xff0c;而是通过统一的组件模型、声明式 UI 编程范式与智能元数据驱动机制&#xff0c;实现“写少做多”的开发体验。其核心…...

CH9329串口转HID键鼠芯片:从选型到实战的避坑指南

1. CH9329芯片&#xff1a;串口转HID的"万能翻译官" 第一次接触CH9329时&#xff0c;我把它想象成一个"语言翻译官"——能把单片机说的"方言"&#xff08;串口数据&#xff09;翻译成电脑能听懂的"普通话"&#xff08;USB HID协议&…...

教育应用:OpenClaw+Qwen3.5-9B自动批改编程作业

教育应用&#xff1a;OpenClawQwen3.5-9B自动批改编程作业 1. 为什么需要自动化编程作业批改 作为一名计算机课程助教&#xff0c;我每周需要批改近百份学生作业。传统手动批改面临三个痛点&#xff1a;时间消耗大&#xff08;平均每份作业15分钟&#xff09;、反馈标准化程度…...