oracle和mysql

1.  Oracle是大型数据库而Mysql是中小型数据库,Oracle市场占有率达40%,Mysql只有20%左右,同时Mysql是开源的而Oracle价格非常高。
2. Oracle支持大并发,大访问量,是OLTP最好的工具。
3. 安装所用的空间差别也是很大的,Mysql安装完后才152M而Oracle有3G左右,且使用的时候Oracle占用特别大的内存空间和其他机器性能。
4.Oracle也Mysql操作上的一些区别
①主键 Mysql一般使用自动增长类型,在创建表时只要指定表的主键为auto increment,插入记录时,不需要再指定该记录的主键值,Mysql将自动增长;Oracle没有自动增长类型,主键一般使用的序列,插入记录时将序列号的下一个值付给该字段即可;只是ORM框架是只要是native主键生成策略即可。
②单引号的处理 MYSQL里可以用双引号包起字符串,ORACLE里只可以用单引号包起字符串。在插入和修改字符串前必须做单引号的替换:把所有出现的一个单引号替换成两个单引号。
③翻页的SQL语句的处理 MYSQL处理翻页的SQL语句比较简单,用LIMIT 开始位置, 记录个数;ORACLE处理翻页的SQL语句就比较繁琐了。每个结果集只有一个ROWNUM字段标明它的位置, 并且只能用ROWNUM<100, 不能用ROWNUM>80
④ 长字符串的处理 长字符串的处理ORACLE也有它特殊的地方。INSERT和UPDATE时最大可操作的字符串长度小于等于4000个单字节, 如果要插入更长的字符串, 请考虑字段用CLOB类型,方法借用ORACLE里自带的DBMS_LOB程序包。插入修改记录前一定要做进行非空和长度判断,不能为空的字段值和超出长度字段值都应该提出警告,返回上次操作。 ⑤空字符的处理 MYSQL的非空字段也有空的内容,ORACLE里定义了非空字段就不容许有空的内容。按MYSQL的NOT NULL来定义ORACLE表结构, 导数据的时候会产生错误。因此导数据时要对空字符进行判断,如果为NULL或空字符,需要把它改成一个空格的字符串。
⑥字符串的模糊比较 MYSQL里用 字段名 like '%字符串%',ORACLE里也可以用 字段名 like '%字符串%' 但这种方法不能使用索引, 速度不快。
 
⑦Oracle实现了ANSII SQL中大部分功能,如,事务的隔离级别、传播特性等而Mysql在这方面还是比较的弱

分页:一、Mysql使用limit分页  二、Oracle使用rownum分页

1)oracle数据库分页 
select * from (select a.*,rownum rc from 表名 where rownum<=endrow) a where a.rc>=startrow
2)MySQL数据库分页 

Select * from 表名 limit startrow,pagesize (Pagesize为每页显示的记录条数)


Session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中;

Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。


1.ConnectionPoolBean handler=ConnectionPoolBean.getHandler();
Connection conn=handler.getConnection();
handler.closeConnection(conn);






2.in 和 exists也是很好区别的.
in 是一个集合运算符.
a in {a,c,d,s,d....}
这个运算中,前面是一个元素,后面是一个集合,集合中的元素类型是和前面的元素一样的.
而exists是一个存在判断,如果后面的查询中有结果,则exists为真,否则为假.
in 运算用在语句中,它后面带的select 一定是选一个字段,而不是select *.
比如说你要判断某班是否存在一个名为"小明"的学生,你可以用in 运算:
"小明" in (select sname from student)
这样(select sname from student) 返回的是一个全班姓名的集合,in用于判断"小明"是否为此集合中的一个数据;
同时,你也可以用exists语句:
exists (select * from student where sname="小明")


代码里使用字符串操作来拼接sql语句的坏处
 
1. 字符串操作更容易出错。


2. sql语句不可避免地出现在代码里,无法坐到代码与数据分离.代码可读性降低。


3. 效率. 很多情况下需要多次执行同一句sql语句,只是参数不同.如果使用PreparedStatement(Java),只需要在第一次执行是编译sql语句,之后的执行效率可以提高。


4. 如果代码里使用字符串操作来拼接sql语句,那么在编译阶段是不可能发现sql语句错误的.如果使用类库提供的方法来设置参数,可以在编译时就设定参数的类型.


5. 倘若之后要修改sql语句,比如where条件里要多加一个条件,或者为了优化性能要更改一下筛选条件的顺序,这个时候就会发现用字符串拼接是一个灾难,特别是在sql语句比较复杂的时候(有嵌套,多个表相交等).


6. 安全性.字符串拼接sql语句容易遭受sql注入攻击.
防止SQL注入:


 总体来说,防治SQL注入式攻击可以采用两种方法,一是加强对用户输入内容的检查与验证;二是强迫使用参数化语句来传递用户输入的内容。

猜你喜欢

转载自blog.csdn.net/qq_21325705/article/details/79298389