SQL Server 2016 Learning Notes
SQL Server 2016
一、概述
-
基本概念
- 数据(Data)和信息(Information)
- 数据库(Database, DB)
- 结构化查询语言(Structured Query Language, SQL):
- 特点
- 一体化
- 使用方式灵活
- 非过程化
- 语言简洁,语法简单
- 组成
- 数据定义语言(Data Definition Language, DDL):Create、ALter、Drop
- 数据操作语言(Data Manipulation Language, DML): select、insert、update、delete
- 数据查询语言(Data Query Language, DQL):select、where、order by、 group by、 having
- 数据控制语言(Data Control Language, DCL):grant、revoke
- 事务处理语言(Transaction Processing Language, TPL):begin transaction、Commit、roolback
- 指针控制语言(Pointer Control Language, CCL):declare cursor、fetch into、update where current
- 数据库管理系统(Database Management System, DBMS)
- 数据库系统的体系
- 集中式:单台主机,与其他计算机交互
- C/S:客户端
- B/S:浏览器
- 分布式结构
-
关系数据库(Relational Database, RDB)
-
概念
实体、属性、主键、实体型、实体集、联系
-
实体之间的联系
一对一、一对多、多对多
-
概念模型的表示方法
实体-联系模型(E-R模型):实体用长方框、属性用椭圆框、联系用菱形框
-
数据模型三要素
- 数据结构
- 数据操作
- 完整性约束
-
常用数据模型
- 层析模型:不能表示两个以上实体之间的复杂联系和实体之间的多对多关系
- 网状模型
- 关系模型
- 基本运算:选择、投影、连接
- 数据完整性:实体、域、参照、事务完整性、用户定义完整性
- 事务完整性:原子性、一致性、隔离性、持久性
- 面向对象模型
-
-
设计数据库
- 数据库设计的范式
- 1NF、2NF、3NF…
- 方法
- 实体关系、视图概念、分布设计法
- 过程
- 需求分析、概念设计、逻辑设计、物理设计
- 数据库设计的范式
二、运行环境
- 硬件需求
- CPU: 64位,不低于1.4GHz (最好高于2.0GHz) ,X86处理器不支持安装
- 内存:4GB以上,精简版1GB以上
- 硬盘:6GB以上
- 显示器:1024 x 768或更高
- 软件需求
- 操作系统:Windows Server 2012或Win8 及以上
- Web环境:IE8.0及以上
- NET Framework:4.0及以上
- 网络软件
- 服务项目
- 集成服务(IS)
- 分析服务(AS)
- 报表服务(RS)
- SQL Server代理(Agent)
- 复制服务
- 全文搜索
- 主数据服务
- 服务中介
- 开发工具
- 系统数据库
- master:记录SQL Server的所有信息,应定期备份
- model:用于在SQL Server实例上创建所有数据库的存储新数据库结构特性的模板
- msdb:代理服务数据库,为报警、任务调度、记录操作员的操作空间
- resource:隐形只读数据库,包含SQL中的所有系统对象
- tempdb:为所有的临时表、临时存储过程及其他临时操作提供存储空间
- 数据库设置
- 默认索引填充因子
- 硬盘充足时,可考虑将文件和日志文件分别存储到不同的物理硬盘上,可增加安全性
三、 创建与管理数据库
- 数据库的结构层析:物理、概念、用户数据库
- 常用对象
- 表
- 索引
- 视图
- 数据库关系图、默认值、规则、存储过程、触发器、用户
四、表和数据的完整性
-
数据完整性
- 域完整性:默认值、检查、外键、数据类型和规则
- 实体完整性:主键、唯一码、唯一索引、标识列
- 引用完整性:外键、检查、触发器和存储过程
- 用户定义完整性:规则、触发器、存储过程以及约束
-
约束类型
- Not Null、PRIMARY KEY、FOREIGN KEY、UNIQUE、CHECK
-
约束
--创建约束 --1. Not Null ALTER TABLE class ALTER COLUMN classname nvchar(12) NOT NULL GO --2.CHECK ALTER CONSTRAINT CK_name CHECK(column >= 0 and column <= 100), CONSTRAINT CK_name2 CHECK(...) Go --3.UNIQUE ALTER TABLE tablename ADD CONSTRAINT u_Email UNIQUE NONCLUSTERED(Email) GO --4.FOREIGN KEY:仅能引用位于同一服务器上的同一数据库中的表 ALTER