oracle和mysql区别
MySQL和Oracle都是流行的联系数据库办理体系(RDBMS),在世界各地广泛运用;大多数数据库以相似的方法作业,但MySQL和Oracle的这里和那里总是存在一些差异的。
mysql与oracle的详细差异
1、本质的差异
Oracle数据库是一个对象联系数据库办理体系(ORDBMS)。它一般被称为OracleRDBMS或简称为Oracle,是一个收费的数据库。
MySQL是一个开源的联系数据库办理体系(RDBMS)。它是世界上运用最多的RDBMS,作为服务器运行,供给对多个数据库的多用户访问。它是一个开源、免费的数据库。
2、Oracle数据库产品是闭源同时也是收费的,MySQL是开源的项目(免费);
3、Oracle是大型数据库,Mysql是中小型数据库;
4、Oracle能够设置用户权限、访问权限、读写权限等,MySQL没有;
5、Oracle有表空间的概念,MySQL没有;
6、Oracle默许不主动提交,需求用户手动提交。Mysql默许是主动提交。
7、Oracle逻辑备份时不确定数据,且备份的数据是共同的。Mysql逻辑备份时要确定数据,才能确保备份的数据是共同的,影响事务正常运用。
8、Oracle有各种成熟的功用确诊调优东西,能实现很多主动分析、确诊功用。比方awr、addm、sqltrace、tkproof等;Mysql的确诊调优方法较少,主要有慢查询日志。
9、Oracle容量无限,根据配置决定;而MySQL运用MyISAM存储引擎,最大表尺度为65536TB。MySQL数据库的最大有用表尺度一般是由操作体系对文件巨细的约束决定的,而不是由MySQL内部约束决定。
10、Oracle在Linux下的功用,在少量数据时速度低于MySQL,在千万级时速度快于MySQL。
11、Oracle全面,完整,安稳,但一般数据量大,对硬件要求较高;而MySQL运用CPU和内存很少,功用很高,但扩展性较差。
12、MySQL处理翻页的SQL句子比较简单,用LIMIT开始方位,记录个数。Oracle处理翻页的SQL句子就比较繁琐了。每个结果集只要一个ROWNUM字段标明它的方位,并且只能用ROWNUM<100,不能用ROWNUM>80。
13、MySQL日期字段分DATE和TIME两种,Oracle日期字段只要DATE,包括年月日时分秒信息,用当前数据库的体系时刻为SYSDATE,准确到秒。
14、SQL句子的差异:
mysql能够没有from,oracle必须有,能够写成fromdual;
mysql运用concat()函数衔接字符串,oracle不仅有concat()函数,还能够运用||;
mysql没有全外衔接,运用调集衔接代替,oracle有全外衔接,而且左右外衔接有自己的语法:(+);
mysql分页运用limit,oracle分页得借助rownum关键字;
mysql主动增加auto_increment,oracle运用序列代替;
mysql直接书写循环判别句子,oracle得借助PLSQL句子;
mysql判别运用elseif,oracle运用elsif;
mysql能够直接增修改,oracle需求commit;
groupby,在下oracle下用groupby的话,groupby后面的字段必须在select后面呈现,不然会报错的,而mysql却不会;
oracle的数据类型
Oracle数据库内置的数据类型可分为6类:字符类型、数值类型、日期类型、LOB类型、二进制类型和行类型。
二、字符类型
2.1、CHAR[(size[BYTE[CHAR])]类型
用于存储固定长度的字符串。参数size规定了字符串的最大长度,可选关键字BYTE或CHAR表明其长度单位是字节或字符,默认值为1B,答应最大长度为2000B。假如CHAR类型的列中实际保存的字符串长度小于指定的size大小,Oracle将主动运用空格填满。
2.2、VARCHAR2(size[BYTEICHAR])类型
用于存储可变长度的字符串。参数size规定了字符串的最大长度,可选关键字BYTE或CHAR表明其长度单位是字节或字符,默认单位为BYTE,答应字符串的最大长度为4000B。与CHAR类型不同,当VARCHAR2类型的列中实际保存的字符串长度小于size时,将按字符串实际长度分配空间。
2.3、NCHAR[(size)]类型
用于存储多字节编码(UNICODE)的定长字符串。参数size指定了字符串的最大字符数。假如字符选用AL16UTF16编码,存储容量能够进步2倍,假如选用UTF8编码,存储容量能够进步3倍。size的取值最大为2000B,默以为1。。NVARCHAR2(size):用于存储多字节编码(UNIcoDE)的变长字符串。参数size指定了学符串的最大字符数,最大为4000B。
2.4、LONG类型
大文本类型,用于存储变长字符串,最大长度为2GB。这是为了与早期版本兼容而保存的字符类型。
三、数值类型
NUMBERL(pL,S]
能够存储0、正数和负数,数值的绝对值为10-o~10。NUMBER类型数据占用1~22B的存储空间。p表明数值的总位数(精度),默认值为38;s表明刻度,取值为一84~127,s为正数时表明保存小数的位数,s为负数时表明对小数点左侧s位进行舍人,默认值为0。
例如:
NUMBER(5),最大可存储的数值为99999。
NUMBER(5,2),最大可存储的数值为999.99。
四、日期类型
4.1、Date
日期时刻型,准确到秒。用于存储日期和时刻。能够存储的日期规模为公元前4712年1月1日到公元后9999年12月31日,占有7B的空间,由世纪、年、月、日、时、分、秒组成。
4.2、TIMESTAMPL(p)]
准确到秒的小数点后9位。表明时刻戳,是DATE数据类型的扩展,答应存储小数方式的秒值。p表明秒的小数位数,取值规模为0~9,默认值为6。根据p值的设置不同,TIMESTAMP类型数据占有7~11B空间,由世纪、年、月、日、时、分、秒组成,如30-MAY-1207.56.07.544000PM。
五、LOB类型(二进制类型)
5.1、CLOB
存储字符,最大能够存4G
用于存储单字节或多字节的大型字符串目标,支撑运用数据库字符集的定长或变长字符。在Oracle12c中CLOB类型最大存储容量为128TB。
5.2、BLOB
存储图像、声响、视频等二进制数据,最大可存4G
用于存储大型的、未被结构化的变长的二进制数据,如二进制文件、图片文件、音频和视频等非文本文件。在Oracle12c中BLOB类型最大存储容量为128TB。
5.3、BFILE
用于存储指向二进制格式文件的定位器,该二进制文件保存在数据库外部的操作系统中。在Oracle12c中BFILE文件最大容量为128TB,不能通过数据库操作修正BFILE定位器所指向的文件。
六、二进制类型
6.1、ROW(size)
用于存储变长的二进制数据,size表明数据长度,取值规模为1~2000B。
6.2、LONGROW
用于存储变长的二进制数据,最大存储数据量为2GB。Oracle主张运用BLOB类型代替LONGRAW类型。
七、行类型
ROWID
行标识符,表明表中行的物理地址的伪劣类型。ROWID类型数据由18位十六进制数构成,其间1-6位表明目标编号,7-8位表明文件编号,9-15位表明数据块编号,16-18位表明数据块内编号。