① 数据库有哪几种
一、关系数据库
关系型数据库,存储的格式可以直观地反映实体间的关系。关系型数据库和常见的表格比较相似,关系型数据库中表与表之间是有很多复杂的关联关系的。
常见的关系型数据库有Mysql,SqlServer等。在轻量或者小型的应用中,使用不同的关系型数据库对系统的性能影响不大,但是在构建大型应用时,则需要根据应用的业务需求和性能需求,选择合适的关系型数据库。
虽然关系型数据库有很多,但是大多数都遵循SQL(结构化查询语言,Structured Query Language)标准。 常见的操作有查询,新增,更新,删除,求和,排序等。
查询语句:SELECT param FROM table WHERE condition 该语句可以理解为从 table 中查询出满足 condition 条件的字段 param。
新增语句:INSERT INTO table (param1,param2,param3) VALUES (value1,value2,value3) 该语句可以理解为向table中的param1,param2,param3字段中分别插入value1,value2,value3。
更新语句:UPDATE table SET param=new_value WHERE condition 该语句可以理解为将满足condition条件的字段param更新为 new_value 值。
删除语句:DELETE FROM table WHERE condition 该语句可以理解为将满足condition条件的数据全部删除。
去重查询:SELECT DISTINCT param FROM table WHERE condition 该语句可以理解为从表table中查询出满足条件condition的字段param,但是param中重复的值只能出现一次。
排序查询:SELECT param FROM table WHERE condition ORDER BY param1该语句可以理解为从表table 中查询出满足condition条件的param,并且要按照param1升序的顺序进行排序。
总体来说, 数据库的SELECT,INSERT,UPDATE,DELETE对应了我们常用的增删改查四种操作。
关系型数据库对于结构化数据的处理更合适,如学生成绩、地址等,这样的数据一般情况下需要使用结构化的查询,例如join,这样的情况下,关系型数据库就会比NoSQL数据库性能更优,而且精确度更高。
由于结构化数据的规模不算太大,数据规模的增长通常也是可预期的,所以针对结构化数据使用关系型数据库更好。关系型数据库十分注意数据操作的事务性、一致性,如果对这方面的要求关系型数据库无疑可以很好的满足。
二、非关系型数据库(NoSQL)
随着近些年技术方向的不断拓展,大量的NoSql数据库如MongoDB、Redis、Memcache出于简化数据库结构、避免冗余、影响性能的表连接、摒弃复杂分布式的目的被设计。
指的是分布式的、非关系型的、不保证遵循ACID原则的数据存储系统。NoSQL数据库技术与CAP理论、一致性哈希算法有密切关系。所谓CAP理论,简单来说就是一个分布式系统不可能满足可用性、一致性与分区容错性这三个要求,一次性满足两种要求是该系统的上限。
而一致性哈希算法则指的是NoSQL数据库在应用过程中,为满足工作需求而在通常情况下产生的一种数据算法,该算法能有效解决工作方面的诸多问题但也存在弊端,即工作完成质量会随着节点的变化而产生波动,当节点过多时,相关工作结果就无法那么准确。
这一问题使整个系统的工作效率受到影响,导致整个数据库系统的数据乱码与出错率大大提高,甚至会出现数据节点的内容迁移,产生错误的代码信息。
但尽管如此,NoSQL数据库技术还是具有非常明显的应用优势,如数据库结构相对简单,在大数据量下的读写性能好;能满足随时存储自定义数据格式需求,非常适用于大数据处理工作。
NoSQL数据库适合追求速度和可扩展性、业务多变的应用场景。
对于非结构化数据的处理更合适,如文章、评论,这些数据如全文搜索、机器学习通常只用于模糊处理,并不需要像结构化数据一样,进行精确查询,而且这类数据的数据规模往往是海量的,数据规模的增长往往也是不可能预期的;
而NoSQL数据库的扩展能力几乎也是无限的,所以NoSQL数据库可以很好的满足这一类数据的存储。
NoSQL数据库利用key-value可以大量的获取大量的非结构化数据,并且数据的获取效率很高,但用它查询结构化数据效果就比较差。
目前NoSQL数据库仍然没有一个统一的标准,它现在有四种大的分类:
1、键值对存储(key-value):代表软件Redis,它的优点能够进行数据的快速查询,而缺点是需要存储数据之间的关系。
2、列存储:代表软件Hbase,它的优点是对数据能快速查询,数据存储的扩展性强。而缺点是数据库的功能有局限性。
3、文档数据库存储:代表软件MongoDB,它的优点是对数据结构要求不特别的严格。而缺点是查询性的性能不好,同时缺少一种统一查询语言。
4、图形数据库存储:代表软件InfoGrid,它的优点可以方便的利用图结构相关算法进行计算。而缺点是要想得到结果必须进行整个图的计算,而且遇到不适合的数据模型时,图形数据库很难使用。
安全
数据库安全涉及保护数据库内容、其所有者和用户的所有各个方面。它的范围从防止有意的未经授权的数据库使用到未经授权的实体(例如,个人或计算机程序)无意的数据库访问。
数据库访问控制涉及控制谁(一个人或某个计算机程序)可以访问数据库中的哪些信息。该信息可以包括特定的数据库对象(例如,记录类型、特定记录、数据结构);
对特定对象的特定计算(例如,查询类型或特定查询),或者使用到前者的特定访问路径(例如,使用特定索引)或其他数据结构来访问信息)。
数据库访问控制由使用专用受保护安全 DBMS 接口的特别授权(由数据库所有者)人员设置。
这可以在个人基础上直接管理,或者通过将个人和特权分配给组,或者(在最复杂的模型中)通过将个人和组分配给角色,然后授予权利。数据安全可防止未经授权的用户查看或更新数据库。使用密码,用户可以访问整个数据库或它的子集,称为“子模式”。
例如,员工数据库可以包含有关单个员工的所有数据,但一组用户可能仅被授权查看工资数据,而其他用户仅被允许访问工作历史和医疗数据。如果 DBMS 提供了一种交互式输入和更新数据库以及查询数据库的方法,则此功能允许管理个人数据库。
数据安全通常涉及保护特定的数据块,包括物理保护(即免受损坏、破坏或移除;例如,参见物理安全),或将它们或它们的一部分解释为有意义的信息(例如,通过查看它们组成的位串,得出特定的有效信用卡号;例如,参见数据加密)。
更改和访问日志记录谁访问了哪些属性、更改了什么以及何时更改。日志服务通过保留访问发生和更改的记录,允许以后进行取证数据库审计。有时应用程序级代码用于记录更改而不是将其留给数据库。可以设置监控以尝试检测安全漏洞。
以上内容参考网络-数据库
② 数据库的类型有哪些本人在学mysql.
MySQL数据类型主要可以分成四种其中包括数值型、字符(串)型与日期和时间型与NULL值。
1.MySQL数据类型
在MySQL中有如下几种数据类型:
(1)数值型
数值是诸如32或153.4这样的值。MySQL支持科学表示法,科学表示法由整数或浮点数后跟“e”或“E”、一个符号(“+”或“-”)和一个整数指数来表示。1.24E+12和23.47e-1都是合法的科学表示法表示的数。而1.24E12不是合法的,因为指数前的符号未给出。
浮点数由整数部分、一个小数点和小数部分组成。整数部分和小数部分可以分别为空,但不能同时为空。
数值前可放一个负号“-”以表示负值。
(2)字符(串)型
字符型(也叫字符串型,简称串)是诸如“Hello,world!”或“一个馒头引起的血案”这样的值,或者是电话号码87398413这样的值。既可用单引号也可用双引号将串值括起来。
初学者往往分不清数值87398143和字符串87398143的区别。都是数字啊,怎么一个要用数值型,一个要用字符型呢?关键就在于:数值型的87398143是要参与计算的,比如它是金融中的一个货款总额;而字符型的87398143是不参与计算的,只是表示电话号码,这样的还有街道号码、门牌号码等等,它们都不参与计算。
(3)日期和时间型
日期和时间是一些诸如“2006-07-12”或“12:30:43”这样的值。MySQL还支持日期/时间的组合,如“2006-07-1212:30:43”。
(4)NULL值
NULL表示未知值。比如填写表格中通讯地址不清楚留空不填写,这就是NULL值。
我们用CreateTable语句创建一个表(参看前面的章节),这个表中包含列的定义。例如我们在前面创建了一个joke表,这个表中有content和writer两个列:
定义一个列的语法如下:
其中列名由col_name给出。列名可最多包含64个字符,字符包括字母、数字、下划线及美元符号。列名可以名字中合法的任何符号(包括数字)开头。但列名不能完全由数字组成,因为那样可能使其与MySQL数据类型分不开。MySQL保留诸如SELECT、DELETE和CREATE这样的词,这些词不能用做列名,但是函数名(如POS和MIN)是可以使用的。
列类型col_type表示列可存储的特定值。列类型说明符还能表示存放在列中的值的最大长度。对于某些类型,可用一个数值明确地说明其长度。而另外一些值,其长度由类型名蕴含。例如,CHAR(10)明确指定了10个字符的长度,而TINYBLOB值隐含最大长度为255个字符。
有的类型说明符允许指定最大的显示宽度(即显示值时使用多少个字符)。浮点类型允许指定小数位数,所以能控制浮点数的精度值为多少。
可以在列类型之后指定可选的类型说明属性,以及指定更多的常见属性。属性起修饰类型的作用,并更改其处理列值的方式,属性有以下类型:
(1)专用属性用于指定列。例如,UNSIGNED属性只针对整型,而BINARY属性只用于CHAR和VARCHAR。
(2)通用属性除少数列之外可用于任意列。可以指定NULL或NOTNULL以表示某个列是否能够存放NULL。还可以用DEFAULT,def_value来表示在创建一个新行但未明确给出该列的值时,该列可赋予值def_value。def_value必须为一个常量;它不能是表达式,也不能引用其他列。不能对BLOB或TEXT列指定缺省值。
如果想给出多个列的专用属性,可按任意顺序指定它们,只要它们跟在列类型之后、通用属性之前即可。类似地,如果需要给出多个通用属性,也可按任意顺序给出它们,只要将它们放在列类型和可能给出的列专用属性之后即可。
2.MySQL的列(字段)类型
数据库中的每个表都是由一个或多个列(字段)构成的。在用CREATETABLE语句创建一个表时,要为每列(字段)指定一个类型。列(字段)的类型比MySQL数据类型更为细化,它精确地描述了给定表列(字段)可能包含的值的种类,如是否带小数、是否文字很多。
③ 数据库中数据类型有哪些
Character 数据类型
Character 数据类型用来存储字母数字型数据。当你在oracle 中定义一个character 数据时,通常需要制定字段的长度,它是该字段的最大长度。ORACLE提供以下几种character 数据类型:
CHAR() CHAR数据类型是一种有固定长度和最大长度的字符串。存储在数据类型为CHAR字段中的数据将以空格的形式补到最大长度。长度定义在1——2000字节之间。
当你创建一个CHAR型字段,数据库将保证在这个字段中的所有数据是定义长度,如果某个数据比定义长度短,那么将用空格在数据的右边补到定义长度。如果长度大于定义长度将会触发错误信息。
VARCHAR() varchar型数据是varchar2型数据的快照。
VARCHAR2() varchar2数据类型是一种可变长度的、有最大长度的字母数字型数据。Varchar2类型的字段长度可以达到4000字节,Varchar2类型的变量长度可以达到32676字节。
一个空的varchar2(2000)字段和一个空的varchar2(2)字段所占用的空间是一样的。
NCHAR() 和 NVARCHAR2() NCHAR() 和 NVARCHAR2()数据类型分别与CHAR() 和 VARCHAR2()类型是相同的,只不过它们用来存储NLS(National Language Support)数据。
LONG LONG 数据类型是一个遗留下来的而且在将来不会被支持的数据类型。它将被LOB(Large Object)数据类型所代替。
比较规则 Varchar2和char数据类型根据尾部的空格有不同的比较规则。对Char型数据,尾部的空格将被忽略掉,对于Varchar2型数据尾部带空格的数据排序比没有空格的要大些。比如:
Char 型数据: ‘YO’=‘YO ’
Varchar2型数据: ‘YO’<’YO ’
Numberic 数据类型
Numberic 数据类型用来存储负的和正的整数、分数和浮点型数据,范围在-1*10-103 和9.999…99*10125之间,有38位的精确度。标识一个数据超出这个范围时就会出错。
Number(
,) Number数据类型存储一个有p位精确度的s位等级的数据。
DATE 数据类型
DATE 数据类型用来存储日期和时间格式的数据。这种格式可以转换为其他格式的数据去浏览,而且它有专门的函数和属性用来控制和计算。以下的几种信息都包含在DATE数据类型中:
Century
Year
Month
Day
Hour
Minute
Second
LOB 数据类型
LOB(Large Object) 数据类型存储非结构化数据,比如二进制文件,图形文件,或其他外部文件。LOB 可以存储到4G字节大小。数据可以存储到数据库中也可以存储到外部数据文件中。LOB数据的控制通过DBMS_LOB 包实现。BLOB, NCLOB, 和CLOB 数据可以存储到不同的表空间中,BFILE存储在服务器上的外部文件中。LOB数据类型有以下几种:
BLOB: 二进制数据
CLOB: 字符型数据
BFILE: 二进制文件
其他数据类型
ROWID ROWID 数据类型是ORACLE数据表中的一个伪列,它是数据表中每行数据内在的唯一的标识。
④ 数据库分为哪几类
数据库按照使用和归类不同,它的分类也是不同的,我基本归纳了如下几类:
一,按国际上通用的分类方法,数据库分为以下三大类:
1、参考数据库(Reference databases),是能指引用户到另一信息源获取原文或其他细节的数据库;
2、源数据库(Source databases),指能直接提供所需原始资料或具体数据的数据库。;
3、混合型数据库(Mixed databases),能同时存贮多种类型数据的数据库。
二,按数据结构来分类,有三种:
1、层次式数据库
2、网络式数据库
3、关系式数据库
三,常用数据库分类:
1,IBM 的DB2。
2,Oracle。
3,Informix。
4,Sybase。
5,SQL Server。
6,PostgreSQL。
7,mySQL。
⑤ 数据库中所有的数据类型
SQL 用于各种数据库的数据类型:
一、MySQL 数据类型:
在 MySQL 中,有三种主要的类型:Text(文本)、Number(数字)和 Date/Time(日期/时间)类型。
1、Text 类型。
⑥ 数据库常见的数据类型大致分为几类,请分别举例
数据库一般分为两种类型:关系型数据库和非关系型数据库
关系型数据库
关系型数据库是最常见的数据,其内部采用库表结构,每一条记录可以记录多个数据类型的数据.一条记录内的数据彼此之间存在关系.
例如:
IDnameagesex
1张三12男
因为彼此之间存在关系,所以不论你搜索id=1/name=张三/age=12/sex=男都能搜出来这条记录.
代表软件:Mysql accessSQLServer Oracle
非关系型数据库
非关系型数据库是目前比较新的一种数据库,特点就是数据全部由键值对(key/value)组成.获取数据一般只通过键(key)来获取.
例如:
IDValue
1aaa.avi
2bbb.MP4
这种数据库优点是,速度快,需要明确的目标key来快速指定和获取目标.一般目前在大数据存储上体现着优势.例如大型视频库,只需要知道视频的id就能快速得知视频位置.
当然这不是主要的,非关系型数据库有个极大的优势,就是一般都采用内存缓存方式存在.它们一般把数据拷贝一份放在内存中,这样可以更加快速的读取数据(内存的速度一般是硬盘的几十倍).
非关系型数据库另一个主要用途是快速缓存,即快速的缓存一些数据,但并不一定要长期保留,例如直播中的弹幕,一般都会采用非关系型数据库来保存,到期之后批量写入关系型数据库保存,然后自我清空.
代表软件:Mongodb Redis Memcache
实际使用
在实际使用中,一般都是关系型数据库独立使用,关系型数据库+非关系型数据库一起用这两种方式.因为非关系型数据库一般不用来存储,所以还是需要关系型数据库来保存一些数据.
总结
关系型数据库:存储长期稳定数据,例如会员信息等等.但是读取写入速度慢,高并发时较麻烦,容易产生瓶颈.
非关系型数据库:存储临时数据或需要快速读取数据,例如弹幕等.但是一般不用来保存数据,内存关机即清空.