2.1 T-SQL概述
SQL: Structured Query Language 结构化查询语言,用于操作关系型数据库
T-SQL: Transact-SQL 是ANSI92 SQL的扩展集,对功能进行了补充:如变量说明、流程控制、功能函数等
2.1.1 T-SQL语言主要组成部分
1)DML(数据库操作语言)
用于查询、插入、修改和删除数据库中的数据: select、insert、update、delete等
2)DDL(数据定义语言)
用于在数据库系统中创建数据库、表、视图、索引等:create database、drop database等
3)DCL(数据控制语言)
用来控制存取许可、存取权限等: grant、revoke等
除此之外:还包括变量说明、内部函数等其他命令
2.1.2 对象资源管理器
如果不小心关掉了,在查看中可重新调出来
2.1.3 查询窗口相关
调试:双击代码前面会出现断点,然后点击小三角号,会进去调试状态
2.2 数据库相关概念及数据库命名规则
2.2.1数据库存储结构
物理存储结构:
数据库文件在磁盘上的存储形式
主数据文件: *.mdf 存储数据库的结构信息,存储部分或全部的数据,整个数据库只能有一个主数据文件
辅助数据文件:*.ndf 存储主数据文件没有存储的信息;可存在一个或多个,也可以没有
日志文件:*.ldf 记录DML操作;恢复损坏的数据库;整个数据库同样只能有一个日志文件
文件组:类似文件夹,主要是用来管理磁盘空间。分为主文件组Primary与次文件组FG,日志文件不属于任何文件组
逻辑存储结构:
由数据表、视图、索引等各种不同的数据库对象所组成,他们分别用来存储特定信息并支持特定功能
2.2.2数据库命名规则
1)第一个字符必须是字母或“_”、“@”、“#”
2)数据库名称不能是T-SQL的保留字
3)不允许嵌入空格或是其他特殊字符
2.2.3数据库分类
系统数据库:用来管理用户创建数据库的数据库,相当于中央管理机构。
master:记录SQL Server所有系统级别的信息,包括登录账户、系统配置、数据库存放位置、初始化信息等
model:模板数据库,为新创建数据库指定共同的模板
msdb:用来做SQL Server数据库的一些代理作业,以及数据库的备份及还原信息
tempdb:临时数据库,存储临时表和临时存储过程,程序结束后自动消失
resource:特殊的、隐藏的、只读的数据库,包含所有系统对象
用户数据库:用户自己创建的数据库
2.3使用视图创建数据库1
需求:使用管理器创建一个电子商城E_Market数据库,要求如下:(只有一个Primary文件组)
1)数据库的名称为E_Market:包含一个数据文件,初始容量大小为5MB,文件按15%自动增长,最大容量大小为100MB
2)一个日志文件,初始大小为1MB,不启用自动增长,所有文件都放在E:\Project目录下
2.3.1新建数据库
对象资源管理器-->数据库-->右键-->新建数据库
2.3.2新建数据库配置
1)名称:E_Market
2)数据库文件:按照需求配置
数据库大小:最小为3M
配置结束后,点击“确定”按钮,然后在对象资源管理器中选中数据库右键-->刷新,新建的数据库会显示在数据库的界面
数据文件:
2.3.3修改新建数据库属性
1)兼容性
选中E_Market数据库右键-->选择属性-->选项-->兼容级别(高版本的数据库可以兼容低版本的数据库),此处选择默认即可
2)限制访问
multi_user:默认配置,表示数据库在同一时刻允许多个用户同时访问数据库
Single_user:表示一次只允许一个用户访问数据库,系统维护数据库时选择该用户
Restricted_user:表示只有管理员或者特定的人员才可以访问数据库
3)文件组
当前只有一个Primary文件组
4)只读数据库设置
如果数据库设置为只读,那么该数据库写入数据,只能被查询
2.3.4创建数据库时需要指定的属性
1)文件名称、存放位置、分配的初始空间、属于哪个文件组
2)文件增长:可以按百分比或实际大小指定增长速度
3)文件容量设置:可以指定文件增长的最大值或不受限
4)兼容级别:版本号
5)数据库是否只读:默认False
6)限制访问:Multi_User(正常状态)
Single_User(维护操作状态)
Restricted_User(管理员与特定人员使用)
2.4使用视图创建数据库2
需求:使用对象资源管理器创建一个DemoDB,要求如下:
1)数据库的名称为DemoDB:包含一个数据文件,初始容量大小为10MB,文件按10%自动增长,最大容量大小为500MB
2)第二个文件组FG(次文件组),辅助数据文件为FG_DemoDB,初始大小为10MB,不启用自动增长
3)一个日志文件,初始容量大小为5MB,不启用自动增长,所有文件都放在E:\Project目录下
2.4.1新建数据库
对象资源管理器-->数据库-->右键-->新建数据库
2.4.2新建数据库配置
1)名称:DemoDB
2)数据库文件:按照需求配置
首先新建次文件组FG
主文件组后面默认选项框对号表示:如果不选择文件组,默认添加文件均放在主文件组
然后再点击常规,配置新建数据库
配置完成后,点击确定,完成数据库的创建
2.5使用SQL语句创建数据库1
创建一个数据文件:E_Market_data.mdf和一个日志文件:E_Market_log.ldf的数据库
注意:括号内语句每一行要以英文逗号结尾,最后语句不加
USE master --指向当前使用的数据库
GO --批处理标志
--删除数据库
IF EXISTS(SELECT * FROM sysdatabases WHERE name = 'E_Market')
DROP DATABASE E_Market
GO
CREATE DATABASE E_Market --创建E_Market数据库
ON PRIMARY --主文件组
(
NAME = 'E_Market_data', --主文件逻辑文件名
FILENAME = 'E:\Project\E_Market_data.mdf', --主文件物理文件名
SIZE = 5MB, --主文件初始大小
MAXSIZE = 100MB, --主文件增长最大值
FILEGROWTH = 15% --主文件的增长率
)
LOG ON --日志文件
(
NAME = 'E_Market_log', --日志文件逻辑文件名
FILENAME = 'E:\Project\E_Market_log.ldf', --日志物理文件名
SIZE = 5MB, --日志初始文件大小
FILEGROWTH = 0 --未启用自动增长
)
GO
创建完成后,刷新数据库就会看到新建的数据库了
使用sysdatabases表查询刚刚创建的数据库:
SELECT * FROM SYSDATABASES;
2.6使用SQL语句创建数据库2
创建多个数据文件和多个日志文件
USE master
GO
CREATE DATABASE E_Market
ON PRIMARY --主文件组
(
NAME = 'E_Market_data',
FILENAME = 'E:\Project\E_Market_data.mdf',
SIZE = 10MB,
FILEGROWTH = 10%,
MAXSIZE = 500MB
), --第一个文件组结束
FILEGROUP FG --创建了一次次文件组FG, 第二个文件组(次文件组)
(
NAME = 'FG_E_Market_data',
FILENAME = 'E:\Project\FG_E_Market_data.ndf',
SIZE = 10MB,
FILEGROWTH = 0
)
--日志文件不属于任何文件组
LOG ON
(
NAME = 'E_Market_log',
FILENAME = 'E:\Project\E_Market_log.ldf',
SIZE = 5MB,
FILEGROWTH = 0
),
--日志2的具体描述
(
NAME = 'E_Market_log1',
FILENAME = 'E:\Project\E_Market_log1.ldf',
SIZE = 5MB,
FILEGROWTH = 0
)
GO
执行完以上新建数据库的sql后,会在相应的路径下创建相应的数据文件
2.7使用SQL语句创建数据库3
向现有数据库中添加文件组和数据文件
2.7.1视图下添加文件组和数据文件
新建文件组:选中相应的数据库,点击右键属性,选择文件组,然后点击添加,新建FG2文件组
新建数据文件:
选中相应的数据库,点击右键属性,选择文件,点击添加,新建文件E_Market_data3,文件名不用填,系统会默认指定文件名
2.7.2使用sql语句添加文件组和数据文件
USE E_Market
GO
--添加文件组
ALTER DATABASE E_Market ADD FILEGROUP FG1
GO
--为新建的文件组FG1添加数据文件
ALTER DATABASE E_Market ADD FILE
(
NAME = 'FG1_E_Market_data',
FILENAME = 'E:\Project\FG1_E_Market_data.ndf',
SIZE = 5MB,
FILEGROWTH = 10%
) TO FILEGROUP FG1
GO
--将FG1文件组设为默认文件组
ALTER DATABASE E_Market
MODIFY FILEGROUP FG1 DEFAULT
2.8删除数据库
2.8.1视图下删除数据库
选中要删除的数据库,右键删除,删除数据库后,会连带删除主数据文件+次数据文件+日志文件
注意选择关闭现有连接
2.8.2 SQL删除数据库
USE master
GO
--删除数据库
IF EXISTS(SELECT * FROM sysdatabases WHERE name = 'E_Market')
DROP DATABASE E_Market
GO