T-SQL语言基础
一、SQL Server体系结构
1.1 SQL Server实例
- 概念
- 指安装的一个SQL Server数据库引擎/服务
- 特点
- 每个实例之间相互独立
- 可以看作是安装在不同计算机上的
- 每个实例之间相互独立
- 分类
- 默认实例
- 通过计算机名称或IP地址直接访问
- 命名实例
- 通过(计算机名称或IP地址)+“\实例名称” 访问
- 默认实例
1.2 数据库
- 概念
- 各种对象的容器,包括table、view、stored procedure等
1.2.1 系统数据库和用户数据库
- 系统数据库
- master
- 保存实例范围内的所有元数据信息、服务器配置、所有数据库信息以及初始化信息
- resource
- 保存所有系统对象
- model
- 新数据库的模板
- 可以为所有的新数据库配置默认属性
- tempdb
- 保存临时数据,例如work table、sort space、row versioning信息
- 每次重新启动SQL Server实例会自动删除tempdb中的内容
- msdb
- SQL Server Agent保存数据的地方
- SQL Server Agent
- 负责自动化处理
- 包括记录有关作业(job)、计划(schedule)和警报等实体信息
- master
- 用户数据库
1.2.2 数据库的物理结构
- 数据库在物理上由数据文件和事务日志文件组成
- 每个数据库至少有一个数据文件和一个日志文件
- 多个数据文件在逻辑上按照文件组的形式进行分组管理
- 数据库至少包含一个主文件组(Primary)
- PRIMARY包含:
- 主数据文件(.mdf——master data file)
- 系统目录
- 辅助数据文件(.ndf——not master data file)
- 用户定义的文件组
- 辅助数据文件(.ndf)
- PRIMARY包含:
1.3 架构和对象
- 架构
- 可以看作是对象容器
- 也是命名空间
- 访问对象时应显示指定架构,否则需要耗费一定代价进行分析
- 例如,Sales.Orders
- 数据库会创建默认架构dbo
二、创建表和定义数据完整性
2.1 创建数据库
IF DB_ID('testdb') IS NULL
CREATE DATABASE testdb;
2.2 创建表
USE testdb;
--U为类型,表示用户表
IF OBJECT_ID('dbo.Employees','U') IS NOT NULL
DROP TABLE dbo.Employees;
CREATE TABLE dbo.Employees
(
empid INT NOT NULL,
salary MONEY NOT NULL
);
2.3 定义数据完整性
2.3.1 主键约束
- 自动添加索引
ALTER TABLE dbo.Employees
ADD CONSTRAINT PK_Employees
PRIMARY KEY(empid);
2.3.2 唯一约束
- 自动添加索引
ALTER TABLE dbo.Employees
ADD CONSTRAINT UNQ_Employees_ssn
UNIQUE(ssn);
2.3.3 外键约束
ALTER TABLE dbo.Orders
ADD CONSTRAINT FK_Orders_Employees
FOREIGN KEY(empid)
REFERENCES dbo.Employees(empid);
- 将Orders表中的empid列的值域限制为现有Employees表中的empid列的取值
- 禁止操作
- 当试图删除被引用表中的行时,如果在引用表中存在相关的行,则操作不能执行
- 补偿操作
- 级联
- 将ON DELETE、ON UPDATE选项定义为:
- CASCADE
- 同步删除或更新相关行
- SET DEFAULT
- 将外键设置为默认值
- SET NULL
- 将外键设置为NULL
- CASCADE
- 将ON DELETE、ON UPDATE选项定义为:
- 级联
2.3.4 检查约束
- 在表中输入或修改一行数据之前必须满足的一个谓词
ALTER TABLE dbo.Employees
ADD CONSTRAINT CHK_Employees_salary
CHECK(salary>0);
- 谓词计算结果为TRUE或UNKNOWN时允许修改
- WITH NOCHECK
- 增加CHECK和FOREIGN KEY约束时,可以指定不对现有数据进行约束检查
2.3.5 默认约束
ALTER TABLE dbo.Orders
ADD CONSTRAINT DFT_Orders_orderts
DEFAULT(CURRENT_TIMESTAMP) FOR orderts;
三、分离和附加数据库
3.1 分离数据库
- 分离
- 将数据库管理系统与实际的数据文件(.mdf)的连接断开
3.2 附加数据库
3.3 特点和作用
- 作用
- 可以将数据文件复制并移动到其他地方进行数据库的创建
- 特点
- 文件一般上百兆
- 与sql创建数据库的脚本文件相比比较大
- 不可修改
- 与数据库版本紧密相关
- 移动数据库时需要考虑兼容性问题
- 文件一般上百兆