Oracle移植到MySQL注意事项
- 格式:doc
- 大小:17.50 KB
- 文档页数:3
Oracle到mysql转换的问题总结常用字段类型区别个别语句写法区别1.oracle里只可以用单引号包起字符串,mysql里可以用双引号和单引号。
2.mysql 在select * from () ....,from后面是一个结果集时,括号后面必须加上别名。
3.mysql在delete数据时不能给表加别名,如:delete from table1 T where....,会报错,但是可以这样写:delete T from table1 T where....。
4.Mysql不支持在同一个表中先查这个表在更新这个表,举个例子说明一下,insert into table1values(字段1,(select 字段2 from table1where...)),但是可以在后面那个table1加上别名就没有问题了。
insert into table1values(字段1,(select T.字段2 from table1T where...))5.MYSQL有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值。
ORACLE没有自动增长的数据类型,需要建立一个自动增长的序列号,插入记录时要把序列号的下一个值赋于此字段。
也可以自定义函数实现oracle的nextval。
6.翻页的sql语句处理,MYSQL处理翻页的SQL语句比较简单,用LIMIT 开始位置, 记录个数,例如:select * from table limit m,n,意思是从m+1开始取n条。
常见的函数替换例子:Oracle:select decode(a,b,c,d) as col1 from table1;Mysql:selectcasewhen a=b then cwhen a!=b then dend as col1from table13.oracle的函数ROW_NUMBER() OVER(PARTITION BY col1 ORDER BY col2),根据col1分组,在分组内根据col2排序,改函数计算的值就表示每组内部排序后的顺序编号。
Oracle向Mysql迁移方案一、可自动迁移部分;1、表这个部分的移植是最容易用工具实现的部分,因为很多MySQL的图形管理工具都自带这样的移植工具,比如SQL Yog,MySQL Administrator等。
但是,这些工具的移植能力各有不同,对字段类型转换﹑字符集等问题都有自己的处理方式,使用时请注意。
笔者使用“SQL Yog Migration Toolkit”工具按提示步骤移植后,表的主要结构和数据将成功移植,主要包括表的字段类型(经过映射转换,比如number会转换为int,Varchar2会转换为Varchar,date转换为datetime等,请小心处理日期字段的默认值等),表的主键,表的索引(Oracle的位图索引会被转成BTree索引,另外表和字段的注释会丢失)等信息。
注意的是,Oracle的自增字段的处理。
大家知道,Oracle通常使用序列sequence 配合触发器实现自增字段,但是MySQL和SQL Server等一样,不提供序列,而直接提供字段自增属性。
所以,请把Oracle里面的自增字段实现直接改为MySQL的字段属性,而且,这个字段必须是主键(key)并且不能有默认值。
还有一个问题,如果您的应用要直接使用Oracle的某个序列,那么您只能在MySQL里面模拟实现一个,具体方法就是利用MySQL的自增字段实现的。
二、不可自动迁移部分;视图、过程、函数、触发器以上对象都是写sql语句进行编程的,两个数据库的有些语法是不一新的,所以这些都要开发人员进行人工修改在mysql中重新创建;语法区别如下:视图:mysql中视图不能有子查询,可以把字查询再建一个视图;触发器:mysql中触发器中before或after的触发事件(insert、update、delete)只能有一个,oracle可以有多个;字符串拼接:oracle直接用’||’,mysql只能用函数’concat’;判断是否为空:oracle用nvl;mysql用ifnull;变量定义:oracle可以只写一次DECLARE,Mysql需要在每句前面加DECLARE变量赋值:oracle用’:=’,mysql用’=’;三、Oracle与Mysql几个主要根本区别1、oracle中的包在mysql中不存在,要全部改成普通的存储过程;2、用户及权限在oracle中是包含在各自的数据库里,而在mysql是数据库的用户及权限在一个单独的数据库中(information_schema);3、Oracle是没有敏感字段,是mysql有,如果有要修改成长非敏感名字;4、系统架构区别:oracle有主备库,和集群架构(RAC)且RAC是基共享存储的,Mysql有主从复制,和集群架构(ndbcluster),但ndbcluster是非共享存储的。
oracle转mysql sql语句在oracle转mysql时,需要将sql语句进行相应的修改和调整。
以下是一些常见的需要处理的问题和需要注意的地方:1. 数据类型的差异Oracle和MySQL的数据类型是有所不同的,某些数据类型可以直接转换,但也有一些需要手动进行调整。
比如:- VARCHAR2 在MySQL中转化为VARCHAR- NUMBER 在MySQL中转化为INT或DOUBLE- DATE 在MySQL中转化为DATETIME- CLOB 在MySQL中转化为LONGTEXT- BLOB 在MySQL中转化为LONGBLOB2. 数字类型的区别Oracle和MySQL的数字类型也存在差异,在转换过程中需要注意一些问题:- 在Oracle中,数字类型可以带有参数,如NUMBER(10,2),这表示总长度为10位,小数点后有2位。
而MySQL中,数字类型的参数只是指长度,如DECIMAL(10,2)指总长度为10位,小数点后有2位。
因此在转换的时候需要进行对应的调整。
- 另外,在Oracle中有一种特殊的数据类型叫做NUMBER,它在MySQL中没有对应的类型。
为了进行转换,需要将其替换为具体的数字类型,如INT或DOUBLE。
3. SQL语法的差异Oracle和MySQL的SQL语法也存在一些差异,需要进行相应的修改和调整。
比如:- 在Oracle中,使用双引号可以引用列名或表名,而在MySQL中只能使用反引号(`)进行引用。
因此需要将双引号换成反引号。
- 在Oracle中,使用+号连接字符串,而在MySQL中使用CONCAT函数。
因此需要将+号换成CONCAT函数。
- 在Oracle中,LIMIT语句使用ROWNUM来完成,而在MySQL中使用LIMIT 关键字。
因此需要相应进行改写。
当然,以上仅是一些常见的情况,具体的转换过程还需要根据具体情况进行逐一分析和处理。
在进行转换时需要特别仔细,尽量避免出现错误和漏洞,确保数据的安全和准确性。
最近公司一个项目需要将数据库进行一次迁移,从oracle到mysql,网上资料甚少,现将我本次迁移过程中所遇到的一些问题总结于此(主要是存储过程的迁移),希望能给自己做一个日后的参考,如果有幸能帮助到大家更好。
-- mysql中没有包的概念,因此迁移的时候将存储过程命名为'包名。
存储过程名'的格式mysql存储过程格式:DELIMITER $$ -- 分隔符-- CREATE PROCEDURE([[IN |OUT ] 参数名数据类型…]) ,IN和OUT写在最前面,其中IN可以省略CREATE PROCEDURE `pkg_ypgl.prc_ypsc`(prm_ypbm VARCHAR (20),OUT prm_AppCode VARCHAR (20),-- 程序执行代码OUT prm_ErrorMsg VARCHAR (100)-- 程序执行错误信息)/*变量定义*/DECLARE n_count DECIMAL (8) ;DECLARE done INT(10);/*设置游标结束标志*/DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1; -- 如果NOT FOUND,取不到值,则将done赋值1,并且程序继续执行SET done=0;/*定义一个区块lavel_error,逻辑错误处理*/label_error : BEGIN/*定义游标*/DECLARE cur_bdjl CURSOR FORSELECT ……/*打开游标*/OPEN cur_bdjl ;REPEATFETCH cur_bdjl INTO v_aaz001…IF NOT done THEN -- 如果结束标志done为0则继续循环……END IF;/*结束循环,关闭游标*/UNTIL done -- 直到NOT FOUNDEND REPEAT ;CLOSE cur_bdjl ;SET prm_AppCode = 'noerror' ; -- 将prm_AppCode设为正确SET prm_ErrorMsg = '' ;END;END$$DELIMITER ;数据类型:Oracle:varchar2 Mysql:varchar(20) (参数自设)Oracle:number() Mysql:decimal()Oracle:date Mysql:datetime定义变量:Mysql需要在每句前面加DECLARE给变量赋值:Oracle:v_string := 'asdas'; Mysql: SET string := 'asdas'; (等号前面的冒号可以有也可以没有)异常处理:Oracle:EXCEPTION WHEN OTHERS THEN…Mysql: DECLARE { EXIT | CONTINUE } HANDLERFOR { error-number |{ SQLSTATE error-string } | condition } SQL statement;SQLWARNING 代表所有以01开头的错误代码NOT FOUND 代表所有以02开头的错误代码,也包括游标结束的时候SQLEXCEPTION 代表除了SQLWARNING和NOT FOUND 的所有错误代码eg. DECLARE EXIT HANDLER FORSQLEXCEPTION,SQLWARNING,NOT FOUND SET a = 1;注:一个begin…end里面只能声明一个HANDLER,EXIT表示遇到这种异常时就执行SET a = 1然后结束这个存储过程,CONTINUE表示遇到这种异常时就SET a = 1,然后继续执行之后的存储过程跳转:Oracle: GOTO label_error;……《label_error 》Mysql:初始化错误代码prm_AppCode为"错误",定义一个区块label_error,在区块的最后将prm_AppCode set为'noerror',中间触发条件,将GOTO label_error;改写成leave label_error;跳出区块游标:Mysql只有静态游标,没有动态游标,用存储过程代替定义游标的语句为DECLAREcur_bdjl CURSOR FOR ……Mysql不支持rec_curname.aaz001这种写法,所以必须将游标取得的所有字段FETCH INTO 到变量里循环:Mysql里有三种循环方式(1)。
Oracle数据库迁移到MySQL(kettle,navicate,sqldeveloper等⼯具Oracle 数据库迁移到MySQL (kettle,navicate,sql developer等⼯具1 kettle--第⼀次使⽤kettle玩迁移,有什么不⾜之处和建议,请⼤家指正和建议。
下载软件,官⽹⽐较慢,国内有⼀些镜像下载完成,解压pdi-ce-7.0.0.0-25.zipG:\download\pdi-ce-7.0.0.0-25\data-integration双击Spoon.bat 运⾏提⽰找不到javaw.exe下载jdk安装(这⾥在oracle官⽹上选择相应的进⾏下载安装jdk-8u191-windows-x64.exe),路径C:\Program Files\Java\jdk1.8.0_191添加环境变量 C:\Program Files\Java\jdk1.8.0_191在双击Spoon.bat 运⾏--整库转移数据ojdbc5.jar ojdbc6.jar mysql-connector-java-5.1.47.jar拷贝到kettle的lib路径 G:\download\pdi-ce-7.0.0.0-25\data-integration\lib在启动kettle之前拷贝进去,这⾥重新运⾏--mysql连接--连接oralce,由于oralce是11g r2 rac环境,之前⼀直报错Error connecting to database: (using class oracle.jdbc.driver.OracleDriver)Listener refused the connection with the following error:ORA-12505, TNS:listener does not currently know of SID given in connect descriptor--所以这⾥直接指定⼀个sid,即bol1,选择第⼀个节点,ip是scan ip新建⼀个job,创建2个db的连接,source,target,在菜单中找到[复制多表导向],点击进⾏关联操作⼯具--向导--复制多表导向--点击 finish--开始执⾏--⽇志--登录mysql进⾏查询,发现数据和表已经同步--问题,oracle迁移到mysql的表,字段是number类型,迁移到mysql之后,变成了double类型,数据存储的是整数。
如何从Oracle迁移到MySQL数据库从Oracle迁移到MySQL数据库简介:Oracle和MySQL都是目前广泛使用的关系型数据库管理系统(RDBMS)。
尽管两者在一些方面有所不同,但随着MySQL的快速发展和成熟,许多企业开始考虑从Oracle迁移到MySQL。
本文将探讨从Oracle迁移到MySQL的一些关键问题和最佳实践。
一、数据兼容性分析:在迁移过程中,首要任务是分析Oracle数据库和MySQL之间的数据兼容性。
由于Oracle和MySQL使用不同的SQL语法和数据类型,可能存在某些表、字段或查询存在差异的情况。
因此,在迁移之前,必须仔细检查数据库结构和数据,以确保在MySQL中正确创建和导入数据。
Oracle和MySQL之间的差异通常涉及以下方面:1. 数据类型:Oracle和MySQL支持不同的数据类型。
在转换时,需要注意数据类型的映射和兼容性。
2. 约束和索引:Oracle和MySQL的约束和索引有一些差异,需要逐个检查并调整。
3. 存储过程和触发器:Oracle和MySQL的存储过程和触发器语法也有所不同,需要做相应的调整。
二、数据迁移方法:1. 导出和导入数据:一种常见的迁移方法是使用Oracle的导出工具(如expdp)将数据导出为可移植的数据文件(例如,使用XML格式)。
然后使用MySQL的导入工具(如mysqlimport)将数据导入到MySQL数据库中。
这种方法简单直接,但可能会导致一些数据类型的兼容性问题。
2. 数据库连接工具:如果Oracle和MySQL之间的网络连接可用,可以使用数据迁移工具,如Oracle的Gateway或MySQL的Federated引擎,直接在两个数据库之间进行数据交换。
这种方法可以实现实时数据同步,并且具有较低的延迟。
3. 自定义脚本:对于一些复杂的数据迁移任务,可能需要编写自定义的脚本来处理数据转换和迁移过程。
这需要深入了解Oracle和MySQL的SQL语法和函数,以及相关的数据处理操作。
oracle数据库迁移方案在进行Oracle数据库迁移时,需要考虑到诸多因素,包括数据的完整性、稳定性和安全性。
本文将介绍一种可行的Oracle数据库迁移方案,希望能够对大家有所帮助。
首先,进行数据库迁移前,需要对现有的数据库进行全面的备份。
这一步非常关键,可以保证在迁移过程中出现问题时,能够及时恢复数据,避免造成不必要的损失。
可以选择使用Oracle提供的备份工具,也可以使用第三方备份软件进行备份操作。
其次,确定目标数据库的环境和配置。
在进行数据库迁移时,目标数据库的环境和配置需要与原数据库保持一致,包括操作系统、数据库版本、存储设备等。
如果目标数据库与原数据库的环境有所不同,需要提前进行环境的调整和配置的优化。
接下来,选择合适的迁移工具。
Oracle提供了多种数据库迁移工具,包括Data Pump、Transportable Tablespaces等。
根据实际情况选择合适的迁移工具,并对迁移工具进行详细的配置和参数设置。
然后,进行数据迁移操作。
在进行数据迁移时,需要确保数据的完整性和一致性。
可以选择全量迁移或增量迁移的方式,根据实际情况选择合适的迁移策略。
在迁移过程中,需要对迁移的数据进行验证和测试,确保数据的准确性和完整性。
最后,进行数据库的验证和性能调优。
在完成数据迁移后,需要对目标数据库进行全面的验证和性能调优。
可以使用Oracle提供的性能调优工具,对数据库的性能进行优化和调整,确保数据库的稳定性和高效性。
综上所述,Oracle数据库迁移是一个复杂的过程,需要对各个环节进行详细的规划和操作。
通过本文介绍的迁移方案,希望能够帮助大家顺利完成数据库迁移操作,确保数据的安全和稳定。
祝大家在数据库迁移的过程中顺利完成,谢谢!。
oracle数据库转移教程Oracle数据库转移是指将一个数据库实例移动到另一个位置或环境中的过程。
这可能是因为服务器升级、数据库版本升级、数据中心迁移等原因。
本文将介绍Oracle数据库转移的详细步骤和注意事项。
1. 数据库备份在进行数据库转移之前,首先需要对数据库进行备份。
数据库备份的目的是防止数据丢失或损坏,在转移过程中可以作为恢复的依据。
2. 建立目标环境在目标环境中建立一个新的Oracle数据库实例。
这可以通过Oracle安装程序来实现。
确保目标环境中的数据库版本和原始数据库的版本相同或兼容。
3. 目标数据库配置在目标数据库中进行必要的配置,包括数据库字符集、数据库块大小、内存参数等。
这些参数应与原始数据库保持一致,以确保数据的一致性。
4. 数据文件复制将原始数据库的数据文件复制到目标数据库的合适位置。
数据文件通常位于ORACLE_HOME/dbs目录下。
可以使用操作系统的文件复制命令来完成此步骤。
5. 控制文件和参数文件将原始数据库的控制文件和参数文件复制到目标数据库。
控制文件通常位于ORACLE_HOME/dbs目录下,参数文件通常位于ORACLE_HOME/dbs目录或ORACLE_HOME/dbs/hostname目录下。
同样,可以使用操作系统的文件复制命令来完成此步骤。
6. 导出原始数据库使用Oracle的工具,如exp或expdp工具,对原始数据库进行数据导出。
导出工具将数据库中的数据导出为一个或多个文件。
确保将这些文件保存在安全位置,以便在需要时进行导入。
7. 导入目标数据库使用Oracle的工具,如imp或impdp工具,对目标数据库进行数据导入。
按照导入工具的指导,从第6步中的导出文件中导入数据。
导入工具将会创建表、索引、视图等数据库对象,并将数据填充到这些对象中。
8. 数据库链接和用户权限在目标数据库中,确保与原始数据库相同的数据库链接和用户权限。
这可以保证在转移后的系统中可以继续使用原来的应用程序。
建表语句oracle转mysql sql语句全文共四篇示例,供读者参考第一篇示例:在数据库管理系统中,建表语句是非常常见的操作之一。
无论是在Oracle数据库还是在MySQL数据库中,都需要使用建表语句来创建表格结构。
有时候,我们需要将Oracle数据库中的建表语句转换为MySQL数据库中的语句。
下面我们就来看一下如何将Oracle建表语句转换为MySQL建表语句。
在Oracle数据库中,建表语句的语法通常是这样的:```CREATE TABLE table_name(column1 datatype NULL/NOT NULL,column2 datatype NULL/NOT NULL,...PRIMARY KEY (column_name));```table_name是表格名称,column1、column2等是列名,datatype是数据类型,NULL代表列可以为空,NOT NULL代表列不可以为空。
上面是一个简单的建表语句示例。
但是在实际应用中,建表语句可能会更加复杂,包含索引、外键、约束等内容。
在MySQL数据库中,建表语句的语法也类似于Oracle。
但是有一些细微的差异需要注意。
在MySQL中,建表语句的语法通常是这样的:在对建表语句进行转换时,需要注意以下几点:1. 数据类型的转换。
Oracle中的一些数据类型在MySQL中是没有等价的。
在Oracle中常用的NUMBER类型在MySQL中对应的是INT或FLOAT等类型。
2. 约束的转换。
Oracle和MySQL中对约束的定义有一些差异,需要进行相应的调整。
3. 表空间的转换。
Oracle中会使用表空间来管理数据库的数据文件,而MySQL中一般不需要指定表空间。
下面是一个简单的示例,将Oracle建表语句转换为MySQL建表语句:Oracle建表语句:通过以上示例,我们可以看到,在将Oracle建表语句转换为MySQL建表语句时,只需要对数据类型进行相应的调整即可。
MySQL与Oracle的数据迁移方法MySQL与Oracle是两个常用的关系型数据库管理系统(DBMS)。
在实际应用中,由于各种原因,可能会需要将数据从一个系统迁移到另一个系统。
因此,本文将探讨MySQL与Oracle的数据迁移方法。
一、概述数据迁移是指将数据从一个数据库系统转移到另一个数据库系统的过程。
在MySQL与Oracle之间进行数据迁移时,需要考虑以下几个方面:数据结构的转换、数据的导出和导入、数据的一致性验证。
二、数据结构的转换MySQL与Oracle在数据类型、表结构、约束等方面有一定的差异。
在进行数据迁移之前,需要根据两个数据库系统的特点,进行数据结构的转换。
具体步骤如下:1. 对比MySQL与Oracle的数据类型,进行映射。
例如,MySQL的VARCHAR类型可以转换为Oracle的VARCHAR2类型。
2. 对比MySQL与Oracle的表结构,进行调整。
例如,MySQL的AUTO_INCREMENT属性可以转换为Oracle的SEQUENCE。
3. 对比MySQL与Oracle的约束,进行转换。
例如,MySQL的UNIQUE约束可以转换为Oracle的UNIQUE INDEX。
三、数据的导出和导入在进行数据迁移时,需要将MySQL中的数据导出,并导入到Oracle中。
具体步骤如下:1. 导出MySQL中的数据。
可以使用MySQL提供的mysqldump命令将数据导出为SQL脚本。
例如,执行以下命令将数据导出为dump.sql文件:```mysqldump -u username -p password database > dump.sql```2. 导入数据到Oracle。
可以使用Oracle提供的sqlplus命令将SQL脚本导入到Oracle中。
例如,执行以下命令将dump.sql文件导入到Oracle中:```sqlplususername/password@*****************```四、数据的一致性验证在数据迁移完成后,需要进行数据的一致性验证,以确保迁移过程中没有数据丢失或损坏。
Oracle移植到MySQL注意事项
客户用的数据库是mysql,而研发好的产品支持oracle,为了让客户掏腰包,我们必须把数据库环境从oracle转向mysql。
我们在转换的过程中碰到了下面一些问题,希望能给同样遭遇的同仁们一些借鉴。
如果我们在最初的设计、编码过程中注意数据库的移植性,这种情况下可以完全不需要作额外工作。
一、数据库环境从oracle转向mysql碰到的问题
因为逻辑不变,所以原则是不改应用程序代码,只改数据库表的创建/初始化sql。
下面是我们碰到
1、大小写敏感的区别(如果服务器OS是linux)。
在oracle中一般情况下不区分大小写。
有时候我们在使用oracle不注意大小写的问题,表名和字段名不加双引号是不区分大小写的,像这样:insert into tableName 和insert into TABLENAME效果是一样的,用工具导出创建/数据初始化脚本,得到的结果一般表名和字段名转化成了大写。
但在MySQL中,所使用操作系统的大小写敏感性决定了数据库名和表名的大小写敏感性。
数据库对应数据目录中的目录,数据库中的每个表至少对应数据库目录中的一个文件(也可能是多个,取决于存储引擎)。
因此,使用数据库或表实际上是操纵这些文件(夹),所以使用操作系统的大小写敏感性决定了数据库名和表名的大小写敏感性。
在以linux为内核的操作系统中是大小写敏感的。
解决的办法是把mysql的数据库名和oracle的大小写保持一致,表名与应用程序中sql 字符串中的表名保持一致,如果应用程序中字段名用了双引号,那请把sql中的字段名大小写与双引号里的字符保持一致。
如果你的应用程序所引用的表名、字段没有统一大小写,那麻烦就大了。
2、保留字的区别。
像sql语言的函数名(如:int,show)等是保留字。
Oracle中保留字是可以作为表名和字段名,并且不影响使用,但mysql中保留字是不能作为表名和字段名,如果使用会报语法错误。
解决办法,把sql语句中的保留字用‘`’符号引起来,这个符号位于键盘的tab键上面;如果是字段名还有另外一种方法tablename.字段名。
像这样:insert into tablename (id,
`interval`) value(….. 或insert into tablename (id, tablename.int) value(….. 。
3、数据类型的区别。
在mysql中没有像oracle中的varchar2、number,mysql有与之对应的varchar、numeric,当然在oracle中没有mysql的time类型。
解决办法是替换。
4、自动增长类型的区别。
Oracle有sequence,mysql中没有,但有auto_increment属性。
解决办法是把Oracle中sequence转换成使用auto_increment属性,某些情况可能还有一种办法可以解决问题,新建一个独立的表用来专门记录自动增长型的数据。
5、索引长度限制的区别。
从MySQL 4.1.2开始,MyISAM和InnoDB表索引长度支持1000字节,也就是说索引字段的长度不能超过1000字节,如果超过会报这样的错:ERROR 1071 (42000): Specified key was too long; max key length is 1000 bytes。
如果是UTF-8编码,相当于333个字符的长度(因为UTF8一个字符占3个字节)。
Oracle的索引长度限制比mysql要宽松得多。
解决的办法就不必要多说了,要么改索引的定义,要么改字段的定义长度。
二、为了数据库的兼容性我们应该注意些什么
数据库的兼容性应该是数据库设计应该重视的一个问题,因为有时候客户存在已经在用的数据库,并且不希望同时维护两个数据库,这样的话兼容多种数据库还能成为产品的一个卖点。
作到数据库的兼容性关键是遵守标准用法。
1、遵守标准用法,尽量不使用某种数据库特有的用法。
如msyql的‘`’符号的用法,
再比如,很多人有这种用法,在使用oracle开发的时候创建sequence,往表中插数据之前先SELECT seq.nextval FROM DUAL;,然后把查询得到的值作为value插入表中,这种用法没法适应没有sequence的数据库,每个数据库都有自动增长型的用法,如果需要使用就应该完全地使用。
再举个例子,不同的数据库对分页查询作了扩展,postgresql有offset,limit,oracle 就没有。
2、避免数据库大小写敏感的问题。
选择数据库表名和字段名采用大写还是小写,并且在数据库的设计和编码过程中完全统一。
3、保留字。
要求数据库设计者尽量不使用保留字作表名和字段名。
也有很多人有这种用法,在表名和字段名前加‘_’,像这样:create table _tablename ( _id integer)。
这样永远不会出现保留字引起的问题。