Microsoft SQL Server 2008技术内幕:T-SQL语言基础(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)和警报等实体信息
  • 用户数据库

1.2.2 数据库的物理结构

  • 数据库在物理上由数据文件和事务日志文件组成
  • 每个数据库至少有一个数据文件和一个日志文件
  • 多个数据文件在逻辑上按照文件组的形式进行分组管理
  • 数据库至少包含一个主文件组(Primary)
    • PRIMARY包含:
      • 主数据文件(.mdf——master data file)
      • 系统目录
      • 辅助数据文件(.ndf——not master data file)
    • 用户定义的文件组
      • 辅助数据文件(.ndf)

在这里插入图片描述

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

2.3.4 检查约束

  • 在表中输入或修改一行数据之前必须满足的一个谓词
ALTER TABLE dbo.Employees
ADD CONSTRAINT CHK_Employees_salary
CHECK(salary>0);
  • 谓词计算结果为TRUE或UNKNOWN时允许修改
  • WITH NOCHECK
    • 增加CHECKFOREIGN 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创建数据库的脚本文件相比比较大
    • 不可修改
    • 与数据库版本紧密相关
      • 移动数据库时需要考虑兼容性问题
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值