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…...

免费送源码:Java+ssm+MySQL 基于微服务架构的餐饮系统的设计与实现 计算机毕业设计原创定制
摘 要 近年来,我国经济和社会发展迅速,人们物质生活水平日渐提高,餐饮行业更是发展迅速,人们对于餐饮行业的认识和要求也越来越高。传统形式的餐饮行业都是以人为本,管理起来需要很多人力、物力、财力,既不方便管理者的管理,也不方便顾客实时了解餐厅动态,给传统餐饮行业的经…...

LeetCode hot100-69-N
https://leetcode.cn/problems/valid-parentheses/description/?envTypestudy-plan-v2&envIdtop-100-liked 20. 有效的括号 已解答 简单 相关标签 相关企业 提示 给定一个只包括 (,),{,},[,] 的字符串 s &#x…...

【橘子容器】如何构建一个docker镜像
你肯定打过docker镜像是吧,作为一个开发这很正常,那么你用的什么打包方式呢,这里我们来梳理几种常用的docker镜像构建方式。 ps:这里不是太讲原理,更多的是一种科普和操作。因为讲原理的东西网上已经够多了。 一、Dock…...

EFAK kafka可视化管理工具部署使用
简介:EFAK是开源的可视化和管理软件。它允许您查询、可视化、提醒和探索您的指标,无论它们存储在何处。简单来说,它为您提供了将 Kafka 集群数据转换为漂亮的图形和可视化效果的工具。 环境:①操作系统:CentOS7.6&…...

Spring Boot 工程分层实战(五个分层维度)
1、分层思想 计算机领域有一句话:计算机中任何问题都可通过增加一个虚拟层解决。这句体现了分层思想重要性,分层思想同样适用于Java工程架构。 分层优点是每层只专注本层工作,可以类比设计模式单一职责原则,或者经济学比较优势原…...

vscode IntelliSense Configurations
IntelliSense 是一个强大的代码补全和代码分析功能,它可以帮助开发者提高编程效率。图中显示的是 VSCode 的 IntelliSense 配置界面,具体配置如下: Compiler path(编译器路径): 这里指定了用于构建项目的编译器的完整路…...

hbase读写操作后hdfs内存占用太大的问题
hbase读写操作后hdfs内存占用太大的问题 查看内存信息hbase读写操作 查看内存信息 查看本地磁盘的内存信息 df -h查看hdfs上根目录下各个文件的内存大小 hdfs dfs -du -h /查看hdfs上/hbase目录下各个文件的内存大小 hdfs dfs -du -h /hbase查看hdfs上/hbase/oldWALs目录下…...

C++----入门篇
引言 C是在C的基础之上,容纳进去了面向对象编程思想,并增加了许多有用的库,以及编程范式等。熟悉C语言之后,对C学习有一定的帮助,本章节主要目标: 1. 补充C语言语法的不足,以及C是如何对C语言…...

C语言程序设计P5-5【应用函数进行程序设计 | 第五节】—知识要点:变量的作用域和生存期
知识要点:变量的作用域和生存期 视频: 目录 一、任务分析 二、必备知识与理论 三、任务实施 一、任务分析 有一个一维数组,内放 10 个学生成绩,写一个函数,求出平均分、最高分和最低分。 任务要求用一个函数来完…...

用 Sass 模块化系统取代全局导入,消除 1.80.0 引入的 @import 弃用警告
目录 前言 问题 import 的缺陷 命名冲突 重复导入 模块系统 use 规则 forward 规则 实际修改 前言 最初,Sass 使用 import 规则通过单个全局命名空间加载其他文件,所有内置函数也可全局使用。由于模块系统(use 和 forward 规则&…...