数据库系统-数据库系统基础
概念定义
- 数据:能够被记录且具有实际意义的已知事实
- 数据管理:在计算机中对数据进行存储、检索、更新及共享
- 数据库:有组织的、共享的、持久存储的数据集合
- 数据库管理系统(DBMS):一种通用系统软件,它简化了在不同用户及应用程序之间组织、存储、操纵、控制及维护数据库
- 数据库系统(DBS):由数据库、数据库管理系统、应用程序和数据库用户在一起构成的系统
数据管理的功能
- 数据定义:定义数据的结构、类型及约束数据存储:存储和存取数据
- 数据操纵:查询数据、更新数据(插入数据、修改数据、删除数据)
- 数据共享:事务管理、并发控制、故障恢复
- 数据控制:保证数据完整性、数据安全性
- 数据维护:数据录入、数据转换、数据备份、数据恢复、性能监控
数据定义
CREATE TABLE Student(
Sno CHAR(6) PRIMARY KEY,
Sname VARCHAR(10) NOT NULL,
Ssex CHAR CHECK(Ssex IN('M','F')),
Sage INT CHECK (Sage>0),
Sdept VARCHAR(20)
);
查看Student表的模式
describe Student;
数据储存
查看Student.表存储于那个文件
SELECT pg_relation_filepath('Student');
查看Student表中的数据
SELECT * FROM Student;
查看Student表中的索引
SHOW INDEX from Student;
创建索引
CREATE INDEX student_idx_sname ON Student(Sname);
数据操纵
查询数据
SELECT * FROM Student WHERE Sdept ='CS';
更新数据
INSERT INTO Student VALUES ('CS-003','Ji11','F',19,'CS');
UPDATE Student SET Sage=Sage+1 WHERE Sno='CS-003';
DELETE FROM Student WHERE Sno='CS-O03';
数据共享
事务
BEGIN;
SELECT Grade FROM SC
WHERE Sno='CS-001'AND Cno='1002';
UPDATE SC Set Grade=Grade+1
WHERE Sno='CS-001'AND Cno='1002';
END;
事务具有原子性:事务的所有命令要么全部执行,要么全部不执行
并发控制
可以在两个会话窗口同时执行两个事务
数据控制
保证数据完整性、数据安全性
数据维护
数据录入、数据转换、数据备份、数据恢复、性能监控
将Student表复制到文件
COPY Student TO STDOUT;
将文件中的数据复制到Student
COPY Student FROM filename;
备份Col‖ege数据库
pg_dump -Fc College > college.dump
恢复College数据库
pg_restore -d newcollege college.dump
数据库系统
由数据库、数据库管理系统、应用程序和数据库用户在一起构成的系统
数据库
有组织的、共享的、持久存储的数据集合
College是一个(关系)数据库
列出数据库
SHOW DATABASES;
数据库管理系统
一种通用系统软件,它简化了在不同用户及应用程序之间组织、存储、操纵、控制及维护数据库
数据库用户
- 数据库管理员(DBA)
- 数据库设计者
- 终端用户
zhaonian是College数据库的用户
列出用户
SELECT user FROM mysq1.user;
数据模型(Data Modles)
数据抽象
数据抽象:是将现实世界映射到计算机世界的过程
数据模型
数据模型是进行数据抽象的工具
数据模型具有三个要素
- 用于描述数据库结构的一系列概念
- 用于操纵数据结构的一系列操作
- 数据库应当服从的一系列约束条件
数据模型分类
- 概念数据模型
概念数据模型提供的概念最接近用户理解数据的方式,用于将现实世界映射到信息世界
- 物理数据模型
物理数据模型提供的概念用于描述数据库在计算机中的存储细节
- 实现数据模型
实现数据模型处在概念数据模型和物理数据模型之间,在实现DBMS时使用
数据库模式(Database Schema)
数据库模式:对数据库的结构、类型、约束的描述
- 数据库模式是数据库的“类型声明”
- 数据库模式不经常变化
数据库实例(Database Instance)
数据库实例:数据库在某一特定时间存储的数据
- 数据库实例是数据库的“值”
- 每当数据库被更新,数据库实例就发生变化
数据库的三层模式结构
数据库不是仅用一种模式来刻画的,数据库模式通常分三个层次来定义,从低到高分别是
- 内模式/存储模式
- 概念模式
- 外模式/视图
内模式/储存模式
- 描述数据库的物理存储结构和存取方法
- 数据库只有一个内模式
- 定义内模式时通常使用物理数据模型提供的概念
概念模式
- 为全体数据库用户描述整个数据库的结构和约束
- 数据库只有一个概念模式
- 定义概念模式时使用实现数据模型提供的概念
外模式/视图
- 从不同类别用户的视角描述数据库的结构
- 数据库可以有多个外模式
- 定义外模式时也使用实现数据模型提供的概念
学生选课数视图vw_qty(Sno,Qty)
创建视图
CREATE VIEW vw_qty(Sno,Qty) AS
SELECT Sno,COUNT(*) FROM SC GROUP BY Sno;
查看视图定义演示
\sv vw_qty
在视图上做查询
SELECT * FROM vw_qty;
列出视图
\dv
模式映射
在三层模式结构中,不同层次模式间的映射用于完成应用程序与数据库之间的数据转换和请求转换
- 请求转换:应用程序是依据外模式开发的,应用程序在外模式上声明的数据请求通过模式映射转换为DBMS在内模式上的请求
- 数据转换:数据库的物理存储是按照内模式来组织的,DBMS检索到的数据通过模式映射转换为符合外模式的组织形式,返回给应用
模式映射的分类
- 外模式-概念模式映射:从一个外模式到概念模式的映射
- 概念模式-内模式映射:从概念模式到内模式的映射