数据库总结

第一章绪论

一、数据库系统概述

1. 数据库的4个基本概念

1.数据:数据库中存储的基本对象,描述事物的符号记录。

2.数据库:长期储存 在计算机内、有组织的可共享的大量数据的集合。较小的冗余度、较高的数据独立性、易扩展性

3.数据库管理系统:位于用户与操作系统之间的一层数据管理软件。

数据定义功能,数据组织、存储和管理,数据操纵功能,数据库的事务管理和运行管理,数据库的建立和维护功能,其他功能

4.数据库系统:数据库、数据库管理系统、应用程序和数据库管理员。

好处:提高应用开发的效率,不必考虑数据管理的细节;数据与程序之间的独立性,只修改逻辑结构,不必修改应用程序;减轻管理人员维护系统的负担

2. 数据管理技术的产生和发展

1.人工管理阶段:无直接存取设备,没有操作系统,批处理,某一应用程序,无共享独立

2.文件系统阶段:磁盘、磁鼓,文件系统(是操作系统的一部分),联机实时处理、批处理,某一应用,共享独立差,临时数据

3.数据库系统阶段:独立于操作系统、现实世界,安全,完整,并发,恢复

二、数据模型

1.分类

概念模型

逻辑和物理模型:层次、网状、关系、面向对象数据、对象关系数据、半结构化数据

关系模型优点:

1.建立在严格的数学概念基础上;

2.概念单一,联系都用关系来表示。数据结构简单,清晰,用户易懂易用;

3.存取路径对用户透明,独立保密。

缺点:由于存取路径对用户透明,查询效率不如格式化数据模型。DBMS进行优化。

2. 组成要素

数据结构、数据操作、数据的完整性约束

3. 数据库系统的三级模式

模式:所有用户的公共数据视图;

外模式:用户模式,模式的子图;

内模式:存储模式,只有一个。

数据与程序的物理独立性:当数据库的存储结构改变,管理员对模式/内模式映像做相应改变,可以使模式保持不变,从而应用程序也不必改变。

数据与程序的逻辑独立性:当模式改变时,管理员对各个外模式/模式的映像做相应改变,可以使外模式保持不变。应用程序是依据数据的外模式编写的。

第二章关系数据库

一、关系数据结构及形式化定义

1.关系

域:具有相同数据类型的值的集合

关系:是笛卡尔积D1*D2*...*Dn的子集。候选码:唯一标识一个元组,选定其中一个为主码。候选码的诸属性为主属性,不包含在任何候选码中的属性为非主属性。

2.关系模式

型,对关系的描述。R(U,D,DOM,F)R为关系名,U为组成关系的属性名集合,D为U中属性所来自的域,DOM为属性向域的映像集合,F为属性间的依赖关系集合。关系是关系模式在某一时刻的状态或内容。关系模式是静态的、稳定的,而关系是动态的、随时间不断变化的。

二、关系操作

1. 基本操作

查询:select、project、join、divide、union、except、intersection、Cartesian Product

插入、删除、修改操作。

2. 关系数据语言的分类

关系代数语言:基本运算 并、差、笛卡尔积、投影、选择 (交、连接、除均可用5种基本运算来表达)

关系演算语言(元组、域)

具有关系代数和关系演算双重特点的语言

三、关系的完整性

1. 实体完整性

主属性不能取空

2. 参照完整性

外码与主码之间的引用规则。关系R在外码F上的值必须取空值,或者等于S中某个元组的主码值。

(在参照完整性中,外码属性值可以为空,它表示该属性的值尚未确定,但前提条件是该外码属性不是其所在参照关系的主属性。)

3.用户定义完整性

四、关系运算符

1.传统集合运算

并、差、交、笛卡尔积

2.专门的关系运算

选择、投影、连接(自然连接是一种特殊的等值连接)、除运算(给定关系R (X,Y) 和S (Y,Z),其中X,Y,Z为属性组。R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影:元组在X上分量值x的象集Yx包含S在Y上投影的集合。)

示例:至少用了供应商S1所供应的全部零件的工程项目代码

解释:有关系:R(x,y) S(y,z)

R S

A B C B C D

a1 b1 c2 b1 c2 d1

a1 b2 c3 b2 c1 d1

a1 b2 c1 b2 c3 d2

R÷S的结果为a1

x相当于A y 相当于B,C z相当于D

按照除运算规则规则,我们不必关注D

只需比较B,C当S关系中的B,C所有的组合(b1,c2)(b2,c3)(b2,c1)都出现在R关系中时,结果才为A

Yx:x在R中的象集,x = tr[X]

a1的象集为:{(b 1,c 2),(b 2,c 3),(b 2,c1)}

a2的象集为:{(b 3,c 7),(b 2,c3)}

a3的象集为:{(b 4,c6)}

a4的象集为:{(b 6,c6)}

S在(B,C)上的投影为{(b 1,c 2),(b 2,c 3),(b 2,c1)}。

显然只有R的象集a1包含S在(B,C)属性组上的投影,所以R÷S={a1}。

除操作是同时从行和列角度进行运算

第三章 关系数据库标准语言SQL

一、SQL概述

1. SQL特点

(1)综合统一:SQL语言集数据定义语言DDL、数据操纵语言DML、数据控制语言DCL的功能于一体。在关系模型中实体和实体间的联系均用关系表示,这种数据结构的单一性带来了数据操作符的统一性,查找、插入、删除、更新等每一种操作都只需一种操作符,从而克服了非关系系统由于信息表示方式的多样性带来的操

作复杂性。

(2)高度非过程化:用SQL语言进行数据操作,只要提出"做什么",而无需指明"怎么做",因此无需了解存取路径、存取路径的选择以及SQL语句的操作过程。这有利于提高数据独立性。

(3)面向集合的操作方式:SQL语言采用集合操作方式,不仅操作对象和查找结果可以是元组的集合,而且插入、删除、更新操作的对象也可以是元组的集合。

(4)以同一种语法结构提供两种使用方式:SQL语言既是自含式语言,又是嵌入式语言。作为自含式语言,它能够独立地用于联机交互的使用方式;作为嵌入式语言,它能够嵌入到高级语言程序中,供程序员设计程序时使用。

(5)语言简捷,易学易用。

2.基本概念

基本表:本身独立存在的表,一个关系对应一个基本表。一个或多个基本表对应一个存储文件,一个表可以带若干索引,索引也存放在存储文件中。

视图:虚表

二、数据定义

1.定义模式

模式嵌套定义的语句:

CREATE SCHEMA<模式名>AUTHORIZATION<用户名>[<表定义子句>|<视图定义子句>|<授权定义子句>]

删除模式语句:

DROP SCHEMA<模式名><CASCADE | RESTRICT>

其中CASCADE和RESTRICT两者必选其一。选择了CASCADE(级联),表示在删除模式的同时把该模式中所有的数据库对象全部删除;选择了RESTRICT(限制),表示如果该模式中已经定义了下属的数据库对象(如表、视图等),则拒绝该删除语句的执行。只有当该模式中没有任何下属的对象时才能执行DROP SCHEMA语句。

2. 索引的建立与删除

顺序文件上的索引、B+树索引、散列索引、位图索引

三、数据查询

1. 常用查询条件

  1. 确定范围:BETWEEN AND, NOT BETWEEN AND

确定集合:IN, NOTIN

字符串匹配:LIKE, NOT LIKE (%任意长度,_单个字符,ESCAPE'<换码字符>',对通配符进行转义)

空值:ISNULL, ISNOTNULL

  1. AND的优先级高于OR,ORDER BY默认为ASC

  2. WHERE子句中不能用聚集函数作为条件表达式。

  3. GROUP BY子句

对查询结果分组的目的是为了细化聚集函数的作用对象。分组后还要对组进行筛选,输出满足条件的组用HAVING。

2. 嵌套查询

1.带有IN谓词的子查询

2.带有比较运算符的子查询:父查询与子查询之间用比较运算符进行连接。当确切知道是单值时,可以用>、<、=等比较运算符。

3.带有ANY或ALL谓词的子查询:>ANY =ALL

  1. 带有EXISTS谓词的子查询:只产生逻辑真值"true"或逻辑假值"false"

3. 集合查询

UNION、INTERSECT、EXCEPT

4. 基于派生表的查询

子查询不仅可以出现在WHERE子句中,还可以出现在FROM子句中,这时子查询生成的临时派生表(derivedtable)成为主查询的查询对象。

如果子查询中没有聚集函数,派生表可以不指定属性列,子查询SELECT子句后面的列名为其默认属性。通过FROM子句生成派生表时,AS关键字可以省略,但必须为派生关系指定一个别名。而对于基本表,别名是可选择项。

四、数据更新

1. 插入数据

插入元组、插入子查询结果

2. 修改数据

UPDATE<表名> SET<列名>=<表达式> [WHERE<条件>];

3. 删除数据

删除表中的数据,不是关于表的定义。

五、空值的处理

1.空值的可能性

目前不知道;不应该有值;不便于填写。

2.空值的处理

空值的产生,判断,约束条件,算术比较逻辑运算

六、视图

1. 定义查询更新

定义视图:CREATE VIEW 2.删除视图:DROP VIEW

2. 视图的作用

(1)视图能够简化用户的操作。

(2)视图使用户能以多种角度看待同一数据。

(3)视图对重构数据库提供了一定程度的逻辑独立性。

(4)视图能够对机密数据提供安全保护。

(5)适当的利用视图可以更清晰的表达查询。

相关推荐
IvorySQL16 分钟前
PostgreSQL 分区表的 ALTER TABLE 语句执行机制解析
数据库·postgresql·开源
·云扬·26 分钟前
MySQL 8.0 Redo Log 归档与禁用实战指南
android·数据库·mysql
IT邦德29 分钟前
Oracle 26ai DataGuard 搭建(RAC到单机)
数据库·oracle
惊讶的猫1 小时前
redis分片集群
数据库·redis·缓存·分片集群·海量数据存储·高并发写
不爱缺氧i1 小时前
完全卸载MariaDB
数据库·mariadb
纤纡.1 小时前
Linux中SQL 从基础到进阶:五大分类详解与表结构操作(ALTER/DROP)全攻略
linux·数据库·sql
jiunian_cn1 小时前
【Redis】渐进式遍历
数据库·redis·缓存
橙露2 小时前
Spring Boot 核心原理:自动配置机制与自定义 Starter 开发
java·数据库·spring boot
冰暮流星2 小时前
sql语言之分组语句group by
java·数据库·sql
符哥20082 小时前
Ubuntu 常用指令集大全(附实操实例)
数据库·ubuntu·postgresql