MySQL、SqlServer、Oracle数据库之间的差异

时间:2021-08-30 06:07:51

1.数据库对比。
—-1.Oracle:最贵,功能最多,安装最不方便,Oracle环境里的其他相关组件最多,支持平台数量一般,使用中等方便,开发中等方便,运维中等方便,不开源,速度最慢,最安全。
—-2.Microsoft SQL Server 2014:中等贵,功能最少,安装中等方便,Microsoft SQL Server 2014环境里的其他相关组件最少,支持平台最少,使用最方便,开发最方便,运维最方便,不开源,速度中等,一般安全。
—-3.Mysql:免费,功能中等,安装最方便,Mysql环境里的其他相关组件数量中等,支持平台最多,使用最不方便,开发最不方便,运维最不方便,有开源版本,速度最快,最不安全。

2.从不同职业的角度来看。
—-1.对于初学数据库的孩子来说,比如学生,建议学习Microsoft SQL Server 2014。原因主要是方便。微软平台,从Windows操作系统、VS开发工具、C#语言等等,无论安装、使用、学习都很方便,并且书籍也很多。使用这个平台,能让你更集中注意力在学习上,避免很多无关因素的打扰。比如,安装Oracle的话,需要了解很多非数据库知识,学生时期,本来时间就少,因此不推荐在此时期学习Oracle。
—-2.对于在国企、事业单位里的人来说,建议精通Windows\Office\C#\Microsoft SQL Server 2014,因为这类工作岗位上会经常做一些小软件的快速开发,以及数据的快速处理。
—-3.对于在百度、阿里巴巴这类互联网企业的人来说,建议精通Mysql。因为这类企业不愿意花钱购买正版软件,同时又需要对源代码进行定制,因此Mysql最适合这类企业。
—-4.对于专门从事大型软件项目开发,以及电信、电商、金融等,这类企业有钱,并且对数据安全最重视,因此,这类企业适合使用Oracle。
操作上的区别:
1、组函数用法规则:
MySQL中组函数在select语句中可以随意使用,但在Oracle中如果查询语句中有组函数,其他列名必须是组函数处理过的,或者是group by子句中的列否则报错
2、自动增长的数据类型处理:
MySQL有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值。Oracle没有自动增长的数据类型,需要建立一个自动增长的序列号,插入记录时要把序列号的下一个值赋于此字段。
3、单引号的处理:
mySql用双引号包起字符串,Oracle里用单引号包起字符串,在插入和修改字符串前必须做单引号的替换:把所有出现的一个单引号替换成两个单引号。
4、翻页的SQL语句的处理:
语句一:
SELECT ID, [FIELD_NAME,…] FROM TABLE_NAME
WHERE ID IN ( SELECT ID FROM (SELECT ROWNUM AS NUMROW, ID FROM TABLE_NAME WHERE 条件1 ORDER BY 条件2)
NUMROW > 80 AND NUMROW < 100 )
ORDER BY 条件3;
语句二:
SELECT * FROM (( SELECT ROWNUM AS NUMROW, c.* from (SELECT [FIELD_NAME,…] FROM TABLE_NAME WHERE 条件1 ORDER BY 条件2) c) WHERE NUMROW > 80 AND NUMROW < 100 ) ORDER BY 条件3;
5、长字符串的处理:
插入修改记录前一定要做进行非空和长度判断,不能为空的字段值和超出长度字段值都应该提出警告
6、主键
MySQL一般使用自动增长类型,在创建表时只要指定表的主键为auto increment,插入记录时,不需要再指定该记录的主键值,MySQL将自动增长;Oracle没有自动增长类型,主键一般使用的序列,插入记录时将序列号的下一个值付给该字段即可;只是ORM框架是只要是native主键生成策略即可。
7、字符串的模糊比较
mySql里字段名like%’字符串’%,用字符串比较函数instr(字段名,’字符串’)>0会得到更精确的查找结果。
8、空字符的处理
MySQL的非空字段也有空的内容,Oracle里定义了非空字段就不容许有空的内容。按MySQL的NOT NULL来定义Oracle表结构,导数据的时候会产生错误。因此导数据时要对空字符进行判断,如果为NULL或空字符,需要把它改成一个空格的字符串。