`
tjuking
  • 浏览: 195042 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

数据库字段名和数据库关键字冲突

阅读更多

 

没有什么技术可言,自己为难自己的‘bug’!


之前设计了一个数据库,其中某表中包含字段‘desc’(当时想的是description的简写)。

 

没想到在后来的java代码中始终无法为该表添加记录或者是更新记录,由于其它表使用该java代码是没有问题的,自己就懵了无法理解。。。

 

今天晚上做了一个尝试,就是一个一个字段的添加,最后发现只要添加的字段里包含了‘desc’就会报错,然后仔细一想desc是数据库逆序的关键字,改成‘description’OK了。


基础不扎实,从网上找了mysql的关键字,下次设计数据库的时候就不会忘了!

 

以下转自http://zhaozhi-1983.iteye.com/blog/159044

 

 

 

ADD ALL ALTER
ANALYZE AND AS
ASC ASENSITIVE BEFORE
BETWEEN BIGINT BINARY
BLOB BOTH BY
CALL CASCADE CASE
CHANGE CHAR CHARACTER
CHECK COLLATE COLUMN
CONDITION CONNECTION CONSTRAINT
CONTINUE CONVERT CREATE
CROSS CURRENT_DATE CURRENT_TIME
CURRENT_TIMESTAMP CURRENT_USER CURSOR
DATABASE DATABASES DAY_HOUR
DAY_MICROSECOND DAY_MINUTE DAY_SECOND
DEC DECIMAL DECLARE
DEFAULT DELAYED DELETE
DESC DESCRIBE DETERMINISTIC
DISTINCT DISTINCTROW DIV
DOUBLE DROP DUAL
EACH ELSE ELSEIF
ENCLOSED ESCAPED EXISTS
EXIT EXPLAIN FALSE
FETCH FLOAT FLOAT4
FLOAT8 FOR FORCE
FOREIGN FROM FULLTEXT
GOTO GRANT GROUP
HAVING HIGH_PRIORITY HOUR_MICROSECOND
HOUR_MINUTE HOUR_SECOND IF
IGNORE IN INDEX
INFILE INNER INOUT
INSENSITIVE INSERT INT
INT1 INT2 INT3
INT4 INT8 INTEGER
INTERVAL INTO IS
ITERATE JOIN KEY
KEYS KILL LABEL
LEADING LEAVE LEFT
LIKE LIMIT LINEAR
LINES LOAD LOCALTIME
LOCALTIMESTAMP LOCK LONG
LONGBLOB LONGTEXT LOOP
LOW_PRIORITY MATCH MEDIUMBLOB
MEDIUMINT MEDIUMTEXT MIDDLEINT
MINUTE_MICROSECOND MINUTE_SECOND MOD
MODIFIES NATURAL NOT
NO_WRITE_TO_BINLOG NULL NUMERIC
ON OPTIMIZE OPTION
OPTIONALLY OR ORDER
OUT OUTER OUTFILE
PRECISION PRIMARY PROCEDURE
PURGE RAID0 RANGE
READ READS REAL
REFERENCES REGEXP RELEASE
RENAME REPEAT REPLACE
REQUIRE RESTRICT RETURN
REVOKE RIGHT RLIKE
SCHEMA SCHEMAS SECOND_MICROSECOND
SELECT SENSITIVE SEPARATOR
SET SHOW SMALLINT
SPATIAL SPECIFIC SQL
SQLEXCEPTION SQLSTATE SQLWARNING
SQL_BIG_RESULT SQL_CALC_FOUND_ROWS SQL_SMALL_RESULT
SSL STARTING STRAIGHT_JOIN
TABLE TERMINATED THEN
TINYBLOB TINYINT TINYTEXT
TO TRAILING TRIGGER
TRUE UNDO UNION
UNIQUE UNLOCK UNSIGNED
UPDATE USAGE USE
USING UTC_DATE UTC_TIME
UTC_TIMESTAMP VALUES VARBINARY
VARCHAR VARCHARACTER VARYING
WHEN WHERE WHILE
WITH WRITE X509
XOR YEAR_MONTH ZEROFILL

 

MySQL允许部分关键字用做未引起来的识别符:

  • ACTION

  • BIT

  • DATE

  • ENUM

  • NO

  • TEXT

  • TIME

  • TIMESTAMP

3
0
分享到:
评论
1 楼 远方的彪 2016-10-31  
我也碰到如此问题,

相关推荐

    oracle关键字作为字段名使用方法

    虽然Oracle提供了这样的机制来处理关键字冲突,但最好还是避免在设计数据库时使用保留关键字作为字段名。这不仅可以减少潜在的解析错误,也有助于提高代码的可读性和可维护性。如果确实需要使用某个关键字,确保始终...

    实体类属性名和数据库字段名不同时的解决方案

    让字段的别名与实体类的属性名相同, 优点:操作简单,容易理解。 缺点:当这样的语句出现的次数过多的时候,到时冗余代码增多,这些别名不能重用。 select _id id, name, age from user @Select("select _id id, ...

    python mysql 字段与关键字冲突的解决方式

    在Python中操作MySQL数据库时,有时我们会遇到字段名称与MySQL的关键字冲突的问题。这主要是因为MySQL的一些保留关键字或特殊字符被用作数据表字段名,导致在执行SQL语句时出现解析错误。解决这种冲突的方法通常是在...

    MySQL中字段名和保留字冲突的解决办法

    因此,避免使用保留字作为字段名、表名或数据库名是一种良好的编程习惯,以减少潜在的冲突和混淆。 在设计数据库结构时,选择清晰、无歧义且非保留字的字段名是非常重要的。如果不得不使用保留字作为字段名,一定要...

    mybatis中使用oracle关键字出错的解决方法

    在上面的代码中,我们定义了一个名为"FullDateResultMap"的ResultMap,它将被用于将数据库中的表名和列名映射到Java对象中。 在select语句中,我们可以使用ResultMap来处理Oracle关键字: ```xml <![CDATA[ ...

    达梦和oracle的差异说明

    在处理字段名时,达梦数据库和Oracle有着显著的区别。对于字段名的大小写敏感性问题,两者采用了不同的处理方式: - **达梦数据库**:支持字段名的大小写敏感性,即在查询结果中会按照原始SQL语句中的大小写返回...

    数据库命名规范.doc

    在设计数据库时,需要避免使用保留字和关键字,避免与SQL语言中的关键字冲突。同时,应该避免使用特殊字符和符号,确保数据库的可读性和可维护性。 4. 保持字段名和类型的一致性 在设计数据库时,字段名和类型应该...

    MSSQL SERVER数据库开发规范

    字段名长度应小于40个字符,保持简洁,以减少命名冲突和提高命名的可读性。 在设计数据库时,还需要考虑一些具体场景的命名约定。例如,表的前缀应使用MIC等标识,表明这是一个特殊的数据表;历史表、临时表、备份...

    Hibernate错误及解决办法集合

    **可能原因**:该错误表示Hibernate尝试从数据库中查询一个不存在的字段,通常是由于实体类属性名与数据库字段名不一致导致的。 **解决方案**: 1. **检查实体类属性名**:确认实体类中的属性名与数据库表中的字段...

    数据库命名规范

    - 避免与数据库关键字冲突:同样,字段名也要避免使用SQL保留字。 - 使用有意义的名称:每个字段的名称应清晰地表示其存储的数据类型和意义,如`user_name`表示用户名,`email_address`表示电子邮件地址。 3. **...

    mysql创建数据库表及语法说明

    - 使用反引号(``)括起表名和字段名,避免关键字冲突。 - AUTO_INCREMENT用于设置字段的自动递增功能。 - 所有的语句后面加逗号,最后一个不加。 - 字符串使用单引号括起来。 - 主键的声明通常放在最后,便于...

    数据库开发与管理规范.docx

    - 注意MySQL的关键字,如SELECT、FROM、WHERE等,避免在表名、字段名中使用这些关键字,以免引起语法冲突。 **Oracle数据库规范** 1. **命名原则**: - 采用清晰、简洁、有意义的命名规则,以便于理解和维护。 ...

    mysql数据库学习资料

    在数据库设计中,标识符(如表名或字段名)应遵循特定的命名规则,包括只能包含数字、字母和下划线,并且必须以字母或下划线开头。同时,避免使用MySQL的关键字作为标识符,以免引起语法冲突。一些常见的MySQL关键字...

    数据库开发规范样本.doc

    - 避免使用与系统关键字冲突的字段名,如`ID`和`DATE`,可以使用`NODEID`和`BUYDATE`等替代。 - SQL语句使用大写字母编写,除了字段内容。 - 每个DDL和DML语句末尾加分号,确保语句完整。 - 对于定期增长的数据...

    数据库开发设计规范解读

    在MySQL中,所有的库名、表名和字段名应全部使用小写字母,避免使用保留字,以免引发语法错误。使用反引号来包裹对象名可以防止与关键字冲突,例如`create table `sum`(id int);`。此外,数据库名通常采用业务相关的...

Global site tag (gtag.js) - Google Analytics