|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
培训的第三阶段,开始接触MYSQL,设计数据库,学习PHP如何去连接MYSQL数据库。对于MYSQL,我并不陌生,因为学校开设了Linux系统的课程,对于数据库的操作。mysql|oracle|法式 MYSQL到ORACLE法式迁徙的注重事项
2001-09
有良多使用项目, 刚起步的时分用MYSQL数据库根基上能完成各类功效需求,跟着使用用户的增多,
数据量的增添,MYSQL垂垂地呈现不胜重负的情形:毗连很慢乃至宕机,因而就有把数据从MYSQL迁到
ORACLE的需求,使用法式也要响应做一些修正。自己总结出以下几点注重事项,但愿对人人有所匡助。
1. 主动增加的数据类型处置
MYSQL有主动增加的数据类型,拔出纪录时不必操作此字段,会主动取得数据值。
ORACLE没有主动增加的数据类型,需求创立一个主动增加的序列号,拔出纪录时要把序列号的下一个
值赋于此字段。
CREATE SEQUENCE 序列号的称号 (最好是表名+序列号标志) INCREMENT BY 1 START WITH 1
MAXVALUE 99999 CYCLE NOCACHE;
个中最大的值按字段的长度来定, 假如界说的主动增加的序列号 NUMBER(6) , 最大值为999999
INSERT 语句拔出这个字段值为: 序列号的称号.NEXTVAL
2. 单引号的处置
MYSQL里可以用双引号包起字符串,ORACLE里只可以用单引号包起字符串。在拔出和修正字符串
前必需做单引号的交换:把一切呈现的一个单引号交换成两个单引号。
3. 翻页的SQL语句的处置
MYSQL处置翻页的SQL语句对照复杂,用LIMIT 入手下手地位, 纪录个数;PHP里还可以用SEEK定位到了局
集的地位。
ORACLE处置翻页的SQL语句就对照繁琐了。每一个了局集只要一个ROWNUM字段标明它的地位, 而且只能
用ROWNUM<100, 不克不及用ROWNUM>80。
以下是经由剖析后较好的两种ORACLE翻页SQL语句( ID是独一关头字的字段名 ):
语句一:
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) WHERE 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;
4. 长字符串的处置
长字符串的处置ORACLE也有它特别的中央。INSERT和UPDATE时最大可操作的字符串长度小于等于
4000个单字节, 假如要拔出更长的字符串, 请思索字段用CLOB类型,办法借用ORACLE里自带的DBMS_LOB法式
包。拔出修正纪录前必定要做停止非空和长度判别,不克不及为空的字段值和超越长度字段值都应当提出正告,
前往前次操作。
5. 日期字段的处置
MYSQL日期字段分DATE和TIME两种,ORACLE日期字段只要DATE,包括年代日时分秒信息,用以后数据库
的体系工夫为SYSDATE, 准确到秒,或用字符串转换成日期型函数TO_DATE(‘2001-08-01’,’YYYY-MM-DD’)
年-月-日 24小时:分钟:秒 的格局YYYY-MM-DD HH24:MI:SS TO_DATE()还有良多种日期格局, 可以参看
ORACLE DOC.
日期型字段转换成字符串函数TO_CHAR(‘2001-08-01’,’YYYY-MM-DD HH24:MI:SS’)
日期字段的数学运算公式有很大的分歧。
MYSQL找到离以后工夫7天用
DATE_FIELD_NAME > SUBDATE((NOW(),INTERVAL 7 DAY)
ORACLE找到离以后工夫7天用
DATE_FIELD_NAME >SYSDATE - 7;
6. 空字符的处置
MYSQL的非空字段也有空的内容,ORACLE里界说了非空字段就不允许有空的内容。
按MYSQL的NOT NULL来界说ORACLE表布局, 导数据的时分会发生毛病。因而导数据时要对空字符停止判
断,假如为NULL或空字符,需求把它改成一个空格的字符串。
7. 字符串的恍惚对照
MYSQL里用 字段名 like '%字符串%'
ORACLE里也能够用 字段名 like '%字符串%' 但这类办法不克不及利用索引, 速度不快
用字符串对照函数 instr(字段名,'字符串')>0 会失掉更准确的查找了局
8. 法式和函数里,操作数据库的任务完成后请注重了局集和指针的释放。
有乐趣可以看MYSQL办理员指南
学习数据库了,MYSQL可算是PHP的黄金搭档了,不过,虽然话是这么说,你也可能恨不得把MYSQL给生吞活剥了,因为这一行一列的东东简直让自己头晕目眩。 |
|