写在前面
这段时间由于任务需要 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
-- 使用判断检查数据库是否存在,若存在执行删除,否则,不执行
复制代码