数据库简介

我们使用io流文件存储数据有很多弊端:

(1)文件存储数据存储效率低,一般只能保存小量数据

(2)读写操作比较麻烦

为了解决这些弊端,便有这些数据库的出现,数据库存储数据可以很好地解决这些弊端

 DB的全称是data base,即数据库的意思

(1)数据库依据“数据结构”来组织数据,存放起来的数据有条理性。数据库是分成了一个个库,库分成一个个表,表分成一条条记录 

(2)因为数据库有数据结构,因此有极高的查找速率。数据库跟普通文件的主要区别数据库能快速查找到对应的数据

 

DBMS的全称是Data Management System,即数据库管理系统的意思。

通俗地将DBMS是一个软件,用来管理数据库文件的软件,用户可以通过DBMS对数据进行增删改查,

常见DBMS有:MySQL   Oracle   Maridb

 

 

 分为关系型数据库和非关系型数据库

 1、关系型数据库:依据关系模型来创建的数据库

 (1)所谓的关系型模式就是“一对以,一对多,多对多”等关系模型,关系型模式就是指表格模型,因而一个关系型数据库就是由二维表以及其之间的联系组织成的一个数据组织

(2)关系模式是我们生活中能经常遇到的模型,存储这类数据一般用关系型数据库,比如一本书对于一个出版日期(”一对一“),一本数据对应角色人物(“一对多”),班级的多个老师对应多个学习的数据(“多对多”)

(3)关系型模型包括数据结构(二维表),完整性约束(表内数据约束,表与表之间的数据),操作指令集合(SQL语句,SQL是一个统称,并不是软件特有的)

 

关系型数据库的特点:

(1)安全:因为数据存储在磁盘中,不会因为突然的端点而丢失数据

(2)容易理解:建立在关系模型上

(3)不节省空间:因为建立在关系模型上,就要存储某些规则,比如数据中某字段即使为空仍要分配空间

2、非关系型数据库:基于“非关系模型”的数据库

(1)列模型:存储的数据是列列的。关系型数据库以一行一行作为记录,而且数据之间是有关系的;列模式数据库是一列一列作为记录,数据之间是没有太大关系(列模式的数据索引很快,即数据IO吞吐很快,主要是用于一些分布式数据库)

(2)键值对模式:存储的数据是一个个”键值对”,比如name:liming,那么name这个键里面存的值就是liming

(3)文档类模型:以一个个文档来存储数据,有点类似“键值对”

 

非关系数据库的特点:

(1)效率高:因为数据存储在内存中

(2)不安全:断电丢失数据,但其中的redis可以同步数据到磁盘中。现在很多非关系型数据都开始支持转存都磁盘中

 1、五大版本的认识

(1)MYSQL:  08年被sun公司收购,09年sun被oracle收购,开源免费,到oracle发布5.0版本(使用了oracle核心技术,性能提高了30%),因为oracle数据库地位受到威胁,计划把mysql闭源,原mysql作者们不干了,原程序员出去单干,发布了MariaDB数据库,名字是因为作者女儿叫Maria,市场排名第一

(2)Oracle:闭源,最贵,性能最高,市场排名第二

(3)SQLServer:微软公司的产品,市场排名第三,主要应用在./net(C#)开发的网站上

(4)DB2:IBM公司做网站的完整解决方案,主要用在银行等国有大型企业中

(5)sqlite:轻量级数据库,只有几十k,一般应用在嵌入式和移动设备中

2、MYSQL与Mariadb的主要区别:

(1)MYSQL是属于甲骨文公司,目前开源,但是有闭源的可能;Mariadb不属于甲骨文公司,是一个社区版本,完全开源

(2)MYSQL与Maridb的代码不同,当是两个版本的功能雷同,而且SQL语句也差不多

(3)MariaDB跟MYSQL在绝大多数方面是兼容的

由于当下甲骨文MYSQL的源代码的封闭,红帽测试版本Fedora在Fedora 19以MariaDB。

当下的大型互联网用户以及Linux发行商纷纷抛弃MYSQL,转投MariaDB阵营

1、MYSQL迁移到MariaDB并不是很困难,原因如下:

(1)根据和表定义文件(.frm)是二进制兼容的

(2)所有的客户端API,协议和结构都是完全相同的

(3)所有的文件名,二进制,路径,端口等都是一致的

(4)有的MySQL连接器,比如PHP,Perl,Python,Java等在MariaDB中都保持不变

(5)mysql-client包在MariaDB服务器中也能够正常运行

(6)共享的客户端库与MYSQL也是二进制兼容的

 

(1)MariaDB默认的存储引擎是Maria,不是mysql的MyISAM。

(2)Maria可以支持事务,但是默认情况下没有打开事务支持,因为支持事务对性能会有影响。可以通过以下语句,转化为Maria引擎。ALTER TABLE tablename ENGINE=MARIA TRANSACTIONAL=1

 

(1)列: 一列(数据元素) 包含了相同类型的数据, 例如邮政编码的数据。

(2)行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。

(3)冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。

(4)主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。

(5)外键:外键用于关联两个表。

(6)复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。

(7)索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。

 

约束是在数据库中保证数据库里表中数据完整性的手段。在Oracle中使用的约束有主键约束、外键约束、唯一约束、检查约束和非空约束5个,其中主键约束和唯一约束都被认为是唯一约束,而外键约束被认为是参照约束。

  (1)主键(Primary  Key)约束

  主键约束在每个数据表中只能有一个,但是一个主键约束可以由多个列组成,通常把由多个列组成的主键又叫做复合主键或组合主键。主键约束可以保证主键列的数据没有重复值且值不为空,也可以说是唯一的标识表中的一条记录。

  (2)外键(Foreign Key)约束

  外键约束之所以被认为是参照约束,是因为它主要用作把一个表中的数据和另一个表中的数据进行关联,表和表之间的关联是为了保证数据库中数据的完整性,使用外键保证数据的完整性,也叫参照完整性。

  (3)唯一(Unique)约束

唯一约束和主键约束一样都是设置表中的列不能重复的约束,区别就是一个表中只能有一个主键约束,而却可以有多个唯一约束。通常情况下设置唯一约束的目的就是使非主键列没有重复值。唯一约束和主键约束的另一个区别是如果数据表中的某一列中有空值,那么就不能把这个列设置为主键列,但可以设置为唯一约束。

  (4)检查(check)约束

检查约束是用来指定表中列的值的取值范围的。例如:在员工信息表中的员工年龄的列,如果要使员工的年龄列的值为18~50,就可以使用检查约束进行设置,当输入的值不在有效范围内时,就会出现错误。这样就保证了数据库中数据的有效性。

  (5)非空(not  null)约束

  非空约束是用来约束表中的列不允许为空的。例如,在员工信息表中员工身份证号码列,要求员工必须输入时,可以使用非空约束来保证该列不能为空。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值