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: "Microsoft SQL Server 2008技术内幕: T-SQL查询源码" 是一本关于SQL Server 2008中T-SQL查询技术书籍。该书深入探讨了SQL Server 2008的查询引擎和T-SQL语言的内部工作原理。 T-SQLSQL Server编程语言,用于编写查询和操作数据库的指令。书中通过分析T-SQL查询的源代码,揭示了SQL Server 2008的查询引擎是如何解析和执行查询的。读者可以深入了解查询处理器的内部机制,包括查询优化、查询重写、查询执行计划等方面。 通过阅读这本书,读者可以学习到优化T-SQL查询的技巧和策略。了解查询优化器的工作原理可以帮助开发人员编写高效的查询,提高系统的性能和响应速度。此外,书中还介绍了T-SQL查询的执行计划,帮助读者理解查询的执行方式和流程。 除了T-SQL查询的源码解析外,这本书还涵盖了SQL Server 2008的其他关键技术。读者将了解到索引、数据访问方法、事务处理和并发控制等方面的知识。这将帮助开发人员合理设计数据库架构,提高系统的稳定性和可扩展性。 总之,"Microsoft SQL Server 2008技术内幕: T-SQL查询源码"是一本有关SQL Server 2008查询引擎和T-SQL语言的深度技术书籍。它提供了对查询处理器的全面理解,并帮助读者优化T-SQL查询、提高系统性能。同时,它还涵盖了SQL Server 2008的其他关键技术,提供了全面的数据库开发和管理指导。 ### 回答2: Microsoft SQL Server 2008是一款常用的关系型数据库管理系统,具有强大的数据存储和查询能力。T-SQLSQL Server的一种查询语言,通过编写T-SQL查询语句,可以对数据库中的数据进行查询、筛选和排序等操作。 T-SQL查询的源码指的是SQL Server内部实现这些查询的代码。通过查看T-SQL查询的源码,可以深入了解SQL Server的执行机制,帮助我们更好地优化查询性能和进行调试。 查询的源码包括了SQL Server的执行引擎、查询优化器和存储引擎等多个模块的代码。这些源码使用C++等编程语言编写,属于SQL Server的核心代码部分。通过分析源码,我们可以了解SQL Server是如何解析T-SQL查询语句、生成执行计划和执行查询的过程。同时,源码中还包含了一些关键算法和数据结构的实现细节,这对于我们理解SQL Server的内部机制非常有帮助。 然而,由于SQL Server的源码属于Microsoft的商业机密,一般用户无法直接获取到完整的源码。只有Microsoft的工程师和合作伙伴才能访问和修改源码。但是,Microsoft会通过提供一些加密的DLL文件和一些公开的接口,让用户能够使用和扩展SQL Server的功能。 总的来说,虽然我们无法直接查看SQL Server 2008的T-SQL查询源码,但是通过学习SQL Server的文档和使用工具,我们仍然能够深入了解SQL Server的内部机制,并优化我们的查询性能。 ### 回答3: Microsoft SQL Server 2008是一种关系型数据库管理系统,它为用户提供了一个强大的平台来存储、管理和检索数据。T-SQL(Transact-SQL)是SQL Server的查询语言,用于编写存储过程、触发器、视图和其他数据库对象的脚本。 要查询T-SQL源码,可以参考以下步骤: 1. 首先,确保已经安装了SQL Server Management Studio(SSMS),它是一个图形化界面的工具,用于与SQL Server进行交互。 2. 打开SSMS,并连接到SQL Server 2008数据库实例。 3. 在“对象资源管理器”中,展开“数据库”节点,找到包含要查询的T-SQL脚本的数据库。 4. 右键单击该数据库,选择“新建查询”或使用快捷键“Ctrl+N”创建一个新查询窗口。 5. 将要查询的T-SQL脚本复制并粘贴到查询窗口中。确保脚本是有效的,并且已经被正确地复制到查询窗口中。 6. 单击查询窗口工具栏上的“执行”按钮或使用快捷键“F5”来执行查询。 7. 执行查询后,将在结果窗口中显示查询的结果。结果包括与T-SQL脚本相关的数据,如行数、列名和结果集。 通过这些步骤,您可以轻松地查询T-SQL源码,并查看与之相关的数据。这是一种方便的方法,可以帮助开发人员和数据库管理员更好地理解和管理SQL Server 2008中的查询。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值