写在前面
这段时间由于任务需要 SQL Server 2008 R2 数据库, 于是便学习了一下, 在此记录学习过程中重要的东西
简单介绍
SQL
全称: Structured Query Language (结构化查询语言)
是一种数据库查询和程序设计语言, 用于存取数据以及查询更新和管理关系数据库系统
T-SQL
全称: Transact-SQL
是标准 SQL 程式设计语言的增强版, 它是用来让应用程式与 SQL Server 沟通的主要语言
两者可简单理解为: T-SQL 是 SQL Server 支持的 SQL 语法, 非软件主要是微软对数据库操作增加的新语法
T-SQL 语言主要组成部分
DML (数据操作语言) 用于查询插入修改和删除数据库中的数据等
SELECT,INSERT,UPDATE,DELETE
DDL (数据定义语言) 用于在数据库系统中创建数据库表视图索引等
CREATE DATABASE,DROP DATABASE
DLC (数据控制语言) 用于控制存取许可权限等
GRANT,REVOKE
其他 (包括变量说明内部函数等)
数据库相关
物理存储结构 (数据库文件在磁盘上的存储形式) -- 主数据文件: xx.mdf -- 辅助数据文件: xx.ndf -- 日志文件: xx.ldf
逻辑存储结构 由数据表视图索引等不同的数据库对象组成, 分别用于存储特定信息并支持特定功能
数据库命名规则: -- 第一个字符必须是 字母 或 _ @ # -- 数据库名称 不能是 T-SQL 的保留字 -- 不允许嵌入空格或其他特殊字符
数据库分类 -- 系统数据库 (中央管理机构) E.g:master,model,msdb,resource -- 用户数据库 (老百姓): 用户自己创建的数据库
创建数据库需要指定的属性 -- 文件名称存放位置初始空间大小属于哪个文件组 -- 文件增长: 按百分比或实际大小制定增长速度 -- 文件容量设置: 可以指定文件增长的最大值或不限制 -- 兼容级别: 版本号 -- 数据库是否只读: 默认 flase -- 限制访问: MULTI_USER (正常状态)SINGLE_USER (维护操作的状态)RESTRICTED_USER
数据库基本操作命令
以下全部为使用 SQL 语句操作, 无视图操作
通常, 执行命令时, 最开始都需要指向操作的对象, 并且添加批处理的标志 (执行)
USE 对象 (数据库名称)
E.g:
- USE master -- 指向当前使用的数据库 master
- USE E_Market -- 指向当前使用的数据库 E_Market
完整实例:
USE E_Market -- 指向当前使用的数据库 E_Market
GO -- 批处理的标志 (执行命令最后都需此命令)
创建数据库 (包含数据文件和日志文件)
USE master
GO
CREATE DATABASE 数据库名
ON PRIMARY -- 主文件组
-- 主数据文件
(
NAME='E_Market_data', -- 主文件逻辑文件名
FILENAME='F:\Project\E_Market_data.mdf', -- 主文件物理文件名, 包含存放位置
SIZE=5MB, -- 主文件初始大小
MAXSIZE=100MB, -- 主文件增长的最大值
FILEGROWTH=15% -- 主文件的增长率
),
-- 以上为以第一个文件组 (主文件组)
FILEGROUP FG -- 第二个文件组 (辅助数据文件)
(
NAME='FG_E_Market_data', -- 辅助文件逻辑文件名
FILENAME='F:\Project\FG_E_Market_data.ndf', -- 辅助文件物理文件名, 包含存放位置
SIZE=3MB, -- 辅助文件初始大小
MAXSIZE=7MB, -- 辅助文件增长的最大值
FILEGROWTH=0 -- 辅助文件不启用自动增长
)
LOG ON -- 日志文件不属于任何文件组
(
NAME='E_Market_log', -- 日志文件逻辑文件名
FILENAME='F:\Project\E_Market_log.ldf', -- 日志物理文件名, 包含存放位置
SIZE=5MB, -- 日志文件初始大小
FILEGROWTH=0 -- 未启用自动增长
)
GO -- 批处理标志 > 注意: 语言使用的是 ** 小括号 ** **()**, 不是花括号 {}, 过程中命令后使用 ** 逗号 ** **,** 而非分号 ;, 命令最后一句不需要逗号
向现有数据库添加文件组和数据文件
USE E_Market -- 指向当前使用的数据库
ALTER DATABASE E_Market ADD FILEGROUP FG1 -- 向数据库中添加一个名为 FG1 的文件组
GO
-- 给新建的文件组 FG1 添加数据文件
- ALTER DATABASE E_Market ADD FILE
- (
- NAME='FG1_E_Market_data',
- FILENAME='F:\Project\FG_E_Market_data.ndf',
- SIZE=5MB,
- FILEGROWTH=10%
- )TO FILEGROUP FG1
- GO
-- 将 FG1 文件组设为默认文件组
- ALTER DATABASE E_Market
- MODIFY FILEGROUP FG1 DEFAULT
GO> 将选定文件组设置为默认文件组后, 添加文件将归属于默认文件组中
删除数据库
DROP DATABASE E_Market
-- 附加:
IF EXISTS (SELECT * FROM sysdatabases WHERE name='E_Market') -- 检查想要删除的数据库是否存在
DROP DATABASE E_Market
-- 使用判断检查数据库是否存在, 若存在执行删除, 否则, 不执行
来源: https://juejin.im/post/5aacd218f265da238532a1d7