概念
数据库发展阶段:
人工管理阶段、文件系统阶段、数据库系统阶段
数据库系统:采用数据库技术的计算机系统,运行实体:
数据库(数据)、数据库管理系统(软件)、数据库管理员(人员)、硬件平台(硬件)、软件平台(软件)
数据库管理员(DBA)负责对数据库进行规划、设计、维护和监视等
三级模式结构
++ 模式
逻辑模式或概念模式,是数据库中全体数据的逻辑结构和特征的描述,所有用户的公共数据视图
一个数据库只有一个模式 ,模式处于三层结构的中间层
++ 外模式
用户模式,数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据用户的数据视图
一个数据库可以有多个外模式
++ 内模式
存储模式,是数据物理结构和存储方式的描述,是数据在数据库内的表示方式
一个数据库只有一个内模式
三层模式间的映射
外模式、模式的映射
模式、内模式的映射
数据模型
由数据结构、数据操作和完整性约束3部分组成
常见数据模型
层次模型、网状模型、关系模型
主流的数据库数据模型:关系模型
关系:一个二维表就是一个关系
元组:行数据,表中的记录
属性:列数据,类型和值表示
域:值变化范围
关系数据库的规范化
1NF:一个关系中,消除重复字段,各字段都是最小逻辑存储单元
2NF:关系中每一个非主关键字段都完全依赖主关键字段,不能只部分依赖
3NF:去除传递依赖
数据库
常用对象
表、字段、索引、视图、存储过程
组成
文件:.mdf .ndf .ldf
文件组:主文件组、用户定义文件组
系统数据库
Master:sqlserver 实例的所有系统信息,包含实例范围的元数据、端点、连接服务器和系统配置设置
Tempdb:临时对象和中间结果集
Model:数据库的模板
Msdb:sqlserver 代理计划警报和作业
命名规则
++ 标识符
首字母必须是 Unicode 2.0 定义的字母,”_”,”@”,”#”
“@”:局部变量或参数
“#”:临时表或过程
“##”:全局临时对象
“@@”:Transact-SQL 函数名
后续字符:Unicode 2.0 定义的字母,十进制数字,”_”,”@”,”#”,“$”
不可以使用 Transact-SQL 保留字,不允许使用空格和其他特殊符号
分类:常规标识符,分割标识符(“”、[])
++ 对象
完整的数据库对象名:[服务器名].[数据库名].[拥有者名].[对象名]
[sqlserver].[Django].[dbo].[hello_children]
用户自定义类型
企业管理器创建
数据库 -> 可编程性 -> 类型 -> 用户定义数据类型
Transact-SQL
use Learn exec sp_addtype phone,’int’,null
操作数据表、视图
表无法更改设计
工具 -> 选项 -> 设计 -> 阻止保护要求重新创建表的更改
列名无效,查询分析器里面是红色的下划线
Ctrl+Shift+R:SQL Server的 intellisense(智能感知功能),没有感知到更改,需要重新整理
使用视图修改数据、插入数据,实际上是存储在与视图相关的表中
维护数据库
脱机,联机
暂时关闭,重新启动某个数据库的服务
分离,附加
实现对数据库的复制。数据库脱离服务器管理的同时,保持数据文件和日志文件的完整性和一致性。
导入,导出
常用数据格式(数据库,Excel,文本文件)
备份,恢复
备份:完整备份、差异备份、文件备份
恢复:简单恢复模式、完整恢复模式、大容量日志恢复
T-SQL
数据定义语言(DDL)、数据控制语言(DCL)、数据操纵语言(DML)
常量
数字常量、字符串常量、日期和时间常量、符号常量
变量
- 局部变量
局部变量申明使用 DECLARE 语句,变量名必须以“@”开头
1 | declare @songname char(10) |
1.SELECT 语句赋值
1 | declare @customer_name char(50) |
2.SET 语句赋值
1 | declare @a int |
多个变量赋值,只能使用 select 赋值
1 | declare @b int, @c char(10), @a char(10) |
- 全局变量
系统定义的变量,全局变量名以”@@”开头
1 | print @@CONNECTIONS |
注释
单行注释:-- xxxxxx
多行注释:/* xxxxxx */
快捷键:ctrl+k+c ctrl+k+u
通配符
%:任意个字符
_:单个字符
[x~y]: 范围内的单个字符
[^x~y]:不在范围内的单个字符
流程控制
BEGIN ... END
IF/IF ... ELSE ...
CASE
WHILE
CONTINUE
BREAK
RETURN
GOTO
WAITFOR DELAY '00:00:03'
常用命令
DBCC CHECKALLOC('数据库名') //查询数据库磁盘空间分配情况
DBCC SHOWCONTIG('表Id','索引')
CHECKPOINT //检查当前数据库中被更改过得数据页或日志页并将这些数据强制写入硬盘
DECLARE
PRINT
RAISERROR //返回错误信息同时返回用户指定信息
READTEXT //读取 text、ntext、image 列的值,从指定位置读取指定的字符数
BACKUP //备份数据库内容或事务处理日志
RESTORE //还原
示例:
backu DATABASE db_learn to disk='d:\backup.bak'
restore DATABASE db_learn from disk='d:\backup.bak' with replace
SELECT
SET
SHUTDOWN (with nowait 对进行中的事务进行回滚)
WRITETEXT
USE