04735数据库系统原理(笔记)(更新中)

文章目录


数据库管理三阶段

1.人工管理阶段(20世纪50年代中期以前)

1.数据不保存 2.应用程序管理数据 3.数据面向应用
特点:记录内无结构,整体无结构

2.文件系统阶段 (20世纪50年代后期到60年代中期)

例如:word ppt 等
1.数据可长期保存 2.文件系统管理数据 3.数据面向应用 4.共享性差,冗余度大 5.数据独立性差 6.应用程序自己控制数据
特点:记录内有结构,整体无结构

3.数据库系统阶段(20世纪60年代后期以来)

例如:mysql sqlserver sqlite
1.数据集成 2.数据共享性高 3.数据冗余小 4.数据可保证一致性 5.数据独立性高 6.实施统一管理控制 7.减少应用程序开发与维护的工作量
特点:记录内有结构,整体有结构

三级模式/二级映像

1.三级模式

1.外模式:又称子模式

外模式又称子模式,对应于用户级。它是某个或某几个用户所看到的数据库的数据视图,是与某一应用有关的数据的逻辑表示。

外模式是从模式导出的一个子集,包含模式中允许特定用户使用的那部分数据。用户可以通过外模式描述语言来描述、定义对应于用户的数据记录(外模式),也可以利用数据操纵语言(DML)对这些数据记录进行。外模式反映了数据库的用户观。

2.模式:又称概念模式或逻辑模式

模式又称概念模式或逻辑模式,对应于概念级。它是由数据库设计者综合所有用户的数据,按照统一的观点构造的全局逻辑结构,是对数据库中全部数据的逻辑结构和特征的总体描述,是所有用户的公共数据视图(全局视图)。

它是由数据库管理系统提供的数据模式描述语言(DDL)来描述、定义的,体现、反映了数据库系统的整体观。

3.内模式:又称存储模式

内模式又称存储模式,对应于物理级,它是数据库中全体数据的内部表示或底层描述,是数据库最低一级的逻辑描述,它描述了数据在存储介质上的存储方式翱物理结构,对应着实际存储在外存储介质上的数据库。内模式由内模式描述语言来描述、定义,它是数据库的存储观。

2.二级映像

1.外模式/模式映像(逻辑独立性):我去改逻辑关系、改数据表,改的都是逻辑不会改变计算机的存储方式
2.模式/内模式映像(物理独立性):我不停的迁移、扩充数据库,却不会改变我的数据库关系表的逻辑

数据独立性包括 逻辑独立性 和 物理独立性

数据特征与数据模型组成要素

1.数据结构

静态特征,就是各种表以及表之间的关联

2.数据操作

动态特征,就是增删改查

3.数据的约束条件

确保数据的正确性、有效性、相容性,就是各种字段的范围规则


数据模型的分类

三层结构,自上而下为
概念层(外模式)
逻辑层(模式)
物理层(内模式)

1.概念层数据模型(概念层)(外模式)

基本概念

1.实体: 人事物的抽象概念
2.属性: 对实体的描述,如性别、年龄等
3.码: 唯一标识实体的属性集,如北京市98年出生本科文凭6套房5辆车叫小明的人就一个,那这个属性集就是小明的码
4.域: 属性的取值范围,如月份的取值是1-31
5.实体型:不考撒
6.实体集:也不考撒
7.联系:一对多1:N,一对一1:1,多对多M:N

概念模型表示方法

实体联系图(E-R图)
圆圈是属性
方块是实体
菱形是联系
菱形与方块之间是联系的表示,如下图的 方-1-菱-n-方 就是一对多
在这里插入图片描述

2.逻辑层数据模型(逻辑层)(模式)

层次模型

不重要,了解一哈就行

网状模型

不重要,了解一哈就行

关系模型

面向对象模型

3.物理层数据模型(物理层)(内模式)

物理层是逻辑模型的物理实现,如脑子里想的东西存到硬盘里


关系型数据库

基本术语

1.一张表称为:表、关系
2.表中的一列称为:列、属性、字段、元
3.表中的一行称为:行、记录、元组、目
4.表中列的个数称为:关系的元、关系的度(比如 姓名、性别、年龄就是三元)
5.列的值称为:属性值
6.属性值的范围称为:值域
7.元组中的每一个属性值称为:分量
8.单表中唯一标识一个元组的一个或多个属性值称为:码、键
9.在一个表中的码里去除一个属性值,它仍然是这个关系的码,则称这个码为:超码、超键
10.在一个表中的码里去除一个属性值,它就不是这个关系的码了,则称这个码为:候选码、候选键
11.从一个表的若干候选码中指定一个候选码作为唯一标识,则称这个候选码为:主码、主键
12.一个表中的所有属性集合是这个表的主键,少一个都不行,则称这个主键为:全码、全键
13.表中包含在任何一个候选码中的属性称为:主属性否则称为非主属性
14.当表中某个属性或属性组,不是这个关系的主码或候选码,却是另一个关系的主码时,称该属性或属性组为这个关系的:外码、外键
15.以外键关联的两张表中,以外键作为主键的表被称为:被参照关系、主关系而外键所在的表被称为:参照关系、从关系
16.属性的取值范围被称为:
17.用于限制字段存储的数据,使每个字段表示同一类信息的标识称为:数据类型 如int char等
18.关系模式是数据库的型,关系是数据库的值,及关系模式是对关系的描述,关系模式是静态的、稳定的,关系是动态的、随时间变化的,简单来说,关系模式就是这种:表名(属性1,属性2,属性3…)
19.关系数据库就是以关系模型作为数据库的逻辑模型,并采用采用关系作为数据组织方式的一类数据库,其数据库操作建立在关系代数的基础上。

关系操作

1.查询
选择、投影、连接、除、并、交、差、笛卡尔积
2.更新
增、删、改

特点:
1.查询能力很强,是其中最主要的部分
2.集合的操作方式,即操作的对象和结果都是集合

PS:
1.投影:π属性1,属性2(表名)如 πAC®的意思是对R表的A列和C列投影(只保留R表的A列和C列)
2.连接:
在这里插入图片描述
上图的意思是,R表 join S表 条件为 iθj(i是R表的属性,j是S表的属性,θ是比较运算符><=≤≥≠)

完整性约束

1.实体完整性约束

主键不能为空(一个表中)

2.参照完整性约束

外键不能为空(表和表之间)

3.用户定义完整性约束

针对某一应用环境的完整性约束(自己定义的)

对关系模型完整性约束的检验:通过执行增、删、改操作后判断数据是否出错


冗余和异常

1.数据冗余

2.更新异常

3.插入异常

4.删除异常

函数依赖与关键字

1.函数依赖
例如学生的姓名依赖于学号,学号决定姓名,记作 学号→姓名
2.完全函数依赖
例如学生一共有三个属性(姓名、出生日期、性别)假设(姓名+出生日期)可以唯一确定一个学生的性别,而 姓名或出生日期没法单独决定性别,则称 性别完全依赖于(姓名+出生日期)
3.部分函数依赖
例如学生一共有三个属性(姓名、身份证号、性别)假设(姓名+身份证号)可以唯一确定一个学生的性别,而 身份证号又可以单独决定性别,则称 性别部分依赖于(姓名+出生日期)
4.传递函数依赖
例如学号决定专业,专业决定系别,那么学号就决定系别

范式

么得范式
👇满足行和列不可再分(例如作者属性中一个值出现了两个名字【韩寒、郭敬明】的情况,就要把他们拆开)
第一范式1NF
👇消除非主属性对主属性的部分函数依赖((A and B)→C且(A or B)→C,需要进行拆表)
第二范式2NF
👇消除非主属性对主属性的传递函数依赖(A→B→C的情况,需要进行拆表)
第三范式3NF
👇消除主属性对码的部分和传递函数依赖(保证主键的唯一性,每条记录只有一个唯一id)
BC范式BCNF
👇不考
第四范式4NF
👇不考
第五范式5NF


数据库生命周期

1.分析与设计阶段

(1)需求分析
(2)概念结构设计
(3)逻辑结构设计
(4)物理设计

2.实现与操作阶段

(1)实现
(2)操作与监督
(3)修改与调整


数据库设计

目标

1.满足应用的功能需求
2.良好的数据库性能

内容

从用户对数据的需求出发,研究并构建数据库的过程,包含两方面内容:
1.数据库结构设计(怎么建立一个表,表之间有什么样的关系)
2.数据库行为设计(增删改查行为,比如删除某条记录时连带删除某个相关记录)

方法

1.直观设计法(根据经验设计,一般不用,经验不可信)
2.规范设计法
(1)新奥尔良设计法
(2)基于E-R模型的数据库设计方法
(3)基于第三范式的设计方法
3.计算机辅助设计法
UML建模工具(通过用例图、对象图画出模型)(常见建模工具 1.ROSE【收费】 2.visio【破解版】)

过程

需求分析
结构设计
行为设计
数据库实施
数据库运行与维护

ps:需求分析是整个过程的起点和最重要的部分,设计时间占到整个过程的30-40%

(1)需求分析

1.确定数据库范围:就是看数据库应该支持哪些应用功能
2.应用过程分析:按顺序了解每个部门用到的数据,指定处理策略
3.收集与分析数据
(1)静态结构:指的是不施加应用操作于其上时的数据原始状态,可通过数据分类表和数据元素表进行说明
(2)动态结构:指的是将应用程序施加于数据之后的数据状态,可通过任务分类表和数据操作特征表进行说明
(3)数据约束:数据取值范围要求,表之间的关系等
4.编写需求分析报告
(1)数据库的应用功能目标:功能要求,性能要求
(2)标明不同用户的视图范围:通过了解 权限、用户、角色,确定每个角色能看到什么样的视图界面,比如考生不能看到录入成绩界面。
(3)应用处理过程需求说明:数据来向去向,业务流程说明
(4)数据字典:建立数据字典,对各个数据字段进行详细的解释说明
(5)数据量:考虑数据吞吐量,比如写入量过大时,性能跟不上,出现的等待时间过长的问题
(6)数据约束:有哪些约束要求,比如车主和车的关系其实是多对多,如果设计成一对一的关系,那么你老婆就不能绑定你的车了,你也不能买第二辆车了。

(2)概念结构设计

设计满足需求的概念模型,采用E-R图描述,此阶段只是概念性的描述

(3)逻辑结构设计

整体实现设计流程的方法,此阶段将会用程序员的逻辑进行描述实现过程,比如表关联关系、主外键字段等

概念设计
模型转换
子模式设计
应用程序设计说明
设计评价
物理设计

(4)物理设计

根据给定数据逻辑结构研究构造物理结构的过程,主要确定存储结构和存取方法,因DBMS的不同还可能包括建立索引和聚集,以及物理块大小、缓冲区个数大小、数据压缩的选择等。

(5)数据库实施

1.加载数据
2.应用程序设计:主要就是写增删改查业务
3.数据库试运行

(6)数据库运行与维护

试运行之后,确认系统无故障或暂未发现故障时,才能投入生产实际中运行,投入实际运行,标志着数据库设计和应用开发的基本完成,但不是设计和开发的终止。
系统维护中最困难的工作是数据重组与重构


概念结构设计方法

1.E-R图表示方法(先用E-R图画出来)

2.局部信息结构设计(然后拆成一个个实体)

(1)确定局部范围:将逻辑拆分成一个个局部范围
(2)选择实体:通过局部范围确定实体
(3)选择实体的关键字属性:确定实体中的依赖关系,尽量整成3范式
(4)确定实体间联系:定好实体后就可以确定实体之间的联系
(5)确定实体的属性:最后定下实体中有哪些字段

全局信息结构设计(再组成整体结构)

(1)属性冲突(出现多个表都有同一属性时,属性归给联系最紧密的表,其他表索引这个属性)
(2)命名冲突(例如字段冲突,可以在字段前加上表名,表和视图冲突可以在名称前后增加T或者V区分)
(3)结构冲突(例如设计表时是一对一的关系,后来发现是多对多,此时就拆表)


物理设计方法

1.建立索引
2.建立聚集


SQL简介

1.数据定义语言(建表)(DDL)(data definition language)

DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用

2.数据操纵语言(增删改查)DML(data manipulation language)

它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言

3.数据控制语言(授权控制)DCL(Data Control Language)

是数据库控制功能。是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。在默认状态下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人员才有权力执行DCL

4.嵌入式和动态SQL规则(可嵌入到其他编程语言中)

5.SQL调用和会话规则(其他语言调用sql需要进行sql连接)


MySQL使用基础环境

1.LAMP

Linux + Apache + MySQL + PHP/Perl?Python

1.WAMP

Windows + Apache + MySQL + PHP/Perl?Python

MySQL常量

(1)字符串常量

分为两种:ASCII字符串常量(一个字节) 和 Unicode字符串常量(两个字节)
ASCII字符串表示方法:‘hello’
Unicode字符串表示方法:N’hello’

(2)数值常量

分为两种:整数常量浮点数常量
整数常量是不带小数点的十进制,表示方法:1894,21,+10,-6
浮点数常量是使用小数点的数值常量,表示方法:5.26,-1.39,101.6E5,0.5E-2

(3)16进制常量

每对16进制常量将被转换成一个字符,有三种表示方法:
第一种是大写X加引号:X’41’(表示大写字母A)
第二种是小写x加引号:x’4D7953514C’(表示字符串MySQL)
第三种是零加小写x不加引号:0x41(表示大写字母A)

(4)日期时间常量

日期型常量数据类型为 DATE 表示为:“1999-06-15”
时间型常量数据类型为 TIME 表示为:“12:30:43.196599”
日期时间常量数据类型为 DATETIME 表示为:“2020-01-02 16:04:01.196599”

(5)位字段值(了解)

使用b’value’表示位字段值

(6)布尔值

TRUE或1 FALSE或0

(7)NULL值

可适用于各种类型,通常表示没有值,无数据

MySQL变量

可以用表达式自己定义变量,语法如下:
set @a=1(设置一个变量a,初始值为1)
set @b (设置一个变量b,初始值为NULL)
PS:系统变量前需要加两个@


MySQL运算符

(1)算术运算符

一共五种:+ - * / %(加减乘除求模)

(2)位运算符(按二进制位运算)(了解)

有如下几种:
&(位与,两边都为1结果才为1)
|(位或,两边有一个为1结果就为1)
^(位异或,两边不一样结果就是1,否则就是0)
~(位取反,1变0,0变1)
>>(位右移,101变1010,相当于原数*2)
<<(位左移,101变10,相当于原数/2后取整)

(3)比较运算符

=(等于)
>(大于)
<(小于)
>=(大于等于)
<=(小于等于)
<>、!=(不等于)
<=>(相等或都等于空)

(4)逻辑运算符

NOT或!(逻辑非)
AND或&&(逻辑与)
OR或||(逻辑或)
XOR(逻辑异或)

MySQL表达式

(1)字符型表达式
(2)数值型表达式
(3)日期型表达式

MySQL内置函数(了解)

常用函数有:
ABS()(绝对值)
SORT()(开根号)
COUNT()(聚合函数,查数)
ASCII()(由字符获取ASCII码)
CHAR()(由ASCII码获取字符)
NOW()(获取当前时间)
YEAR()(截取当前时间的年份)
USER()(获取当前用户)
VERSION()(获取版本号)


MySQL数据类型

(1)数值类型

整数类型 int
浮点类型 float double decimal

(2)日期和时间类型

日期类型 date year
日期时间类型 datetime time
时间戳类型 timestamp

(3)字符串类型

固定长度类型 char(最大长度255)
可变长度类型 varchar(最大长度65535)
不限长度类型 text


创建

# 创建学生表
create table student(
	# 自增主键
	id int auto_increment primary key,
	# 学号 字符串 最大长度11 不为空
	Sno char(11) not null,
	# 学号 字符串 最大长度10 不为空
	Sname char(10) not null,
	# 年龄 整数 默认为null
	Sage int
)ENGINE=InnoDB DEFAULT CHARSET=utf8;    # 引擎设置为InnoDB,默认字符编码为utf8

修改

# 插入一个新字段 Sbirthday 到 student表,位置在 Sname字段的后面
alter table student add column Sbirthday datetime after Sname;

# 将 student表 中的 Sname字段 长度增加到200
alter table student change column Sname Sname char(200);

# 将student表 中的 Sname字段 删除
alter table student drop column Sname;

# 修改 student表 表名
alter table student rename my_student;

# 删除 student表 
drop table student;

查看

# 查看所有表
show tables;

# 查看 student表 的字段描述
desc student;

视图创建

create or replace view 视图名 as 查询语句
PS:or replace 的意思是没有时创建,有就覆盖


查看视图

show create view 视图名


索引

索引可以理解为目录

分类

(1)用途划分

1.普通索引(index)
2.唯一性索引(unique)
3.主键(primary key)
4.全文索引(fulltext)【myisam引擎】
5.聚簇索引【inodb引擎】

(2)列级索引

1.单列索引
2.组合索引

创建

# 创建一个名为 index_sage 的索引 在student表 的 Sage字段 上,递增的方式
create index index_sage on student (Sage asc);

删除

# 删除 student表 的 index_sage索引
drop index index_sage on student 

查看

# 查看 student表 的全部索引
show index in student;

MySQL常用聚合函数

(1)count:求总数
(2)max:求最大值
(3)min:求最小值
(4)sum:求所有值的和
(5)avg:求所有值的平均数


存储过程

优点

1.提高运行速度
2.增强了sql的功能和灵活性
3.可以降低网络的通信量
4.减轻了程序编写的工作量
5.间接实现了安全控制功能


存储过程

创建

# 将结束符号 ; 改为 \$$
delimiter $$
# 声明一个存储过程,方法名叫 pro_add ,两个入参为 p_no(长度10的字符串) 和 p_name(长度255的字符串)
create procedure pro_add (IN p_no varchar(10), IN p_name varchar(255))
# 方法开始标志
begin
	# 声明一个整型变量a,默认值为0
	declare a int default 0;
	
	# 声明一个整型变量b,赋值为10
	declare b int;
	set b=10;
	
	# 声明一个整型变量c,查询 pro表 满足条件是 pno字段='001' 的那条记录的 id 赋值给 c 
	declare c int;
	select id into c from pro where pno='001';

	# 使用一个if语句,入参p_no等于'003'时,删除 pro表
	if p_no = '003' then 
		delete from pro;
	end if;

	# 使用一个case语句,入参
	case p_no
		when '001' then delete from pro;
		when '002' then delete from pro;
		else delete from pro;
	end case;
	
	# 一个简单的插入方法,将两个入参插入 pro表
	insert into pro (pno, pname) values (p_no, p_name);

# 结束标志 
end $$

调用

call pro_add('007', '产品7')$$

删除

drop procedure pro_add$$

存储函数

# 将结束符号 ; 改为 \$$
delimiter $$

# 声明一个存储函数,方法名叫 pro_add ,入参为 p_no(长度10的字符串)
create function pro_add(p_no varchar(10))
# 定义返回值的类型(是一个长度为10的字符串)
returns varchar(10)
# 暂时还不清楚是干嘛的,一会学一哈
deterministic
# 方法开始标志
begin
	# 将 入参p_no 插入数据库 pro表 的 pno 字段
	insert into pro (pno) values (p_no);
	# 返回 入参p_no
	return (p_no)
# 结束标志
end$$

存储函数与存储过程的优点、区别、联系

一、函数

函数与存储过程相似,也是数据库中存储的已命名PL-SQL程序块。函数的主要特征是它必须有一个返回值。通过return来指定函数的返回类型。在函数的任何地方可以通过return expression语句从函数返回,返回类型必须和声明的返回类型一致。

二、函数和存储过程的优点:

1、共同使用的代码可以只需要被编写一次,而被需要该代码的任何应用程序调用(.net,c++,java,也可以使DLL库)。

2、这种几种编写、几种维护更新、大家共享的方法,简化了应用程序的开发维护,提高了效率和性能。

3、这种模块化的方法使得一个复杂的问题、大的程序逐步简化成几个简单的、小的程序部分,进行分别编写,因此程序的结构更加清晰,简单,也容易实现。

4、可以在各个开发者之间提供处理数据、控制流程、提示信息等方面的一致性。

5、节省内存空间。它们以一种压缩的形式被存储在外存中,当被调用时才被放入内存进行处理。而且多个用户在调用同一个存储过程或函数时,只需要加载一次即可。

6、提高数据的安全性和完整性。通过把一些对数据的操作方到存储过程或函数中,就可以通过是否授予用户有执行该语句的权限,来限制某些用户对数据库进行这些操作。

三、函数和存储过程的区别:

1、存储过程用户在数据库中完成特定操作或者任务(如插入,删除等),函数用于返回特定的数据。

2、存储过程声明用procedure,函数用function。

3、存储过程不需要返回类型,函数必须要返回类型。

4、存储过程可作为独立的pl-sql执行,函数不能作为独立的plsql执行,必须作为表达式的一部分。

5、存储过程只能通过out和in/out来返回值,函数除了可以使用out,in/out以外,还可以使用return返回值。

6、sql语句(DML或SELECT)中不可用调用存储过程,而函数可以。

四、适用场合:

1、如果需要返回多个值和不返回值,就使用存储过程;如果只需要返回一个值,就使用函数。

2、存储过程一般用于执行一个指定的动作,函数一般用于计算和返回一个值。

3、可以再SQL内部调用函数来完成复杂的计算问题,但不能调用存储过程。

五、存储过程与存储函数的区别和联系

相同点:1.创建语法结构相似,都可以携带多个传入参数和传出参数。

2.都是一次编译,多次执行。

不同点:1.存储过程定义关键字用procedure,函数定义用function。

2.存储过程中不能用return返回值,但函数中可以,而且函数中必须有return子句。

3.执行方式略有不同,存储过程的执行方式有两种(1.使用execute2.使用begin和end),函数除了存储过程的两种方式外,还可以当做表达式使用,例如放在select中(select f1() form dual;)。

总结:一般要在sql语句中使用的话,用存储函数,否则,一般用存储过程。


游标

MySQL支持简单的游标。在MySQL中,游标一定要在存储过程或函数中使用,不能单独在查询中使用。名字要唯一,游标本身是执行SELECT检索出来的结果集。


创建用户

# 创建一个本地用户(127.0.0.1),用户名为 smdg,密码为 123
create user 'smdg'@'localhost' identified by '123';

改用户名

# 将本地用户smdg 重命名为 smdg1
rename user 'smdg'@'localhost' to 'smdg1'@'localhost'

改用户密码

# 将本地用户smdg的密码修改为456
set password for 'smdg'@'localhost' = '456';

删除用户

# 删除本地用户smdg
drop user 'smdg'@'localhost'

MySQL用户权限

授予权限

# 授权 本地用户smdg 可以对 mydata 库下的 pro 表进行查询
grant select on mydata.pro to 'smdg'@'localhost';

# 授权 本地用户smdg 可以对 mydata 库下的 pro 表进行 所有操作
grant all on mydata.pro to 'smdg'@'localhost';

# 授权 本地用户smdg 可以对 mydata 库下的 所有表进行 所有操作
grant all on mydata.* to 'smdg'@'localhost';

# 授权 本地用户smdg 可以对 所有库下的 所有表进行 所有操作
grant all on *.* to 'smdg'@'localhost';

回收权限

# 收回 本地用户smdg 对mydata库下的 pro 表的 插入权限
revoke insert on mydata.pro from 'smdg'@'localhost'

# 等等等等一些其他回收操作和授权操作差不多

事务

特点

事务就是对数据库的一系列操作,这一系列操作,要么不做,要么全做

ACID特性

原子性(Atomicity):
一组更新操作是原子不可分的。
一致性(Consistency):
满足数据库完整性约束,由一个一致性状态转变到另一个一致性状态。
隔离性(Isolation):
事务时彼此独立隔离的。
持续性(Durability):
持续性也被称为永久性,事务一旦提交,它对数据库的改变应该是永久的。


导出SQL数据

mysql> SELECT * FROM passwd INTO OUTFILE '/tmp/tutorials.txt'

-> FIELDS TERMINATED BY ',' ENCLOSED BY '"'

-> LINES TERMINATED BY '\r\n';

导入SQL数据

mysql> load data  infile '/tmp/mytbl.csv' into table mytbl fields terminated by ',' enclosed by '"' lines terminated by '\r\n'


NoSQL 数据库分类

1.列存储

顾名思义,是按列存储数据的。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势。

2.文档存储

文档存储一般用类似json的格式存储,存储的内容是文档型的。这样也就有机会对某些字段建立索引,实现关系数据库的某些功能。

3.key-value存储

可以通过key快速查询到其value。一般来说,存储不管value的格式,照单全收。(Redis包含了其他功能)

4.图存储

图形关系的最佳存储。使用传统关系数据库来解决的话性能低下,而且设计使用不方便。

5.对象存储

通过类似面向对象语言的语法操作数据库,通过对象的方式存取数据。

6.xml数据库

高效的存储XML数据,并支持XML的内部查询语法,比如XQuery,Xpath。


笛卡尔积、等值连接、自然连接、外连接之间的区别

参见此文,作者:怀梦想,致远方——ZhaiHuaBing
https://www.cnblogs.com/zhai1997/p/11961569.html


数据库试运行(也称为联合调试):包括功能调试和性能

  • 28
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

什么都干的派森

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值