首页 > 数据库 >[转帖]【MySQL】字段名与关键字冲突解决办法

[转帖]【MySQL】字段名与关键字冲突解决办法

时间:2024-05-06 18:11:55浏览次数:14  
标签:10 maxvalue 转帖 MySQL test id 字段名

https://www.jianshu.com/p/50e59feb3e83

 

  首先,不推荐使用MySQL的关键词来作为字段名,但是有时候的确没有注意,或者因为之前就这么写了,没办法,那怎么办呢?

  • 方法1,改字段名,改了肯定就没问题了。这个就不细说了。
  • 方法2,使用引号`来处理。

  下面就详细的说明一下怎样使用方法2来处理。

1. 创建测试表

CREATE TABLE `test` (
  `maxvalue` int(10) DEFAULT NULL,
  `id` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

  上面的测试表是MySQL自动生成的DDL,其实从上面就可以看出,MySQL的引号内是说明绝对的保证大小写和当做普通字符串处理。
  这里使用了maxvalue这个不常用的关键词作为字段名,一样违反了通常常规的命名规则,MySQL无法很好的识别。


  Test表结构

2. 错误问题现象重现

  查询SQL:

SELECT t.id, t.maxvalue FROM test t
  SELECT查询结果

  在navicat中可以正常执行,没有任何问题。
  然后再运行insert语句:

INSERT INTO test(maxvalue, id) VALUES (10, 1);

  提示下面的错误:

INSERT INTO test(maxvalue, id) VALUES (10, 1)
> 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'maxvalue, id) VALUES (10, 1)' at line 1
> 时间: 0.02s

  提示错误,但是没有明显的说明是关键词不能识别。


  使用非法关键词的错误

3. SQL语句中的解决办法

  增加引号,使用MySQL的引号“`”,记住不是普通的英文单引号“'”,是倾斜的上撇,不是竖直的上撇。
  键盘输入方式为键盘英文字母键上面的数字键1最前面的那个波浪线和顿号组成的键。也就是ESC下面,TAB键上面的按键。

INSERT INTO test(`maxvalue`, id) VALUES (10, 1);
  修改后可以正常执行的测试结果

  这样就可以正常运行了。

标签:10,maxvalue,转帖,MySQL,test,id,字段名
From: https://www.cnblogs.com/jinanxiaolaohu/p/18175568

相关文章

  • 在Windows下用navicat,连接虚拟机的MySQL
    在Windows下用navicat,连接虚拟机的MySQL目录(一)防火墙1.查看防火墙状态2.关闭防火墙(二)登录MySQL1.登录2.查看MySQL端口号(三)连接navicat1.点击连接2.新建连接3.连接成功(四)修改虚拟机MySQL端口号1.打开配置文件2.修改端口号3.重启MySQL下面是报错原因总结:(下次有再补......
  • MySQL执行SQL文件的几种方式
    方式一:mysql-emysql-e"sourcebatch-file"1方式二:mysql<batch-filemysql-hhost-uuser-p<batch-file1对于这种方式,还可以查看文件执行时的输出,有如下两种方法:mysql<batch-file|moremysql<batch-file>mysql.out12方式三:mysql客户端命令行方式#先登录mysql客户......
  • Docker安装mysql
    dockerpullmysql:5.7:从DockerHub上拉取MySQL5.7的镜像。dockerimages:列出所有已下载的镜像,确认MySQL5.7是否已经成功下载。mkdir-p/home/service/mysql/data:创建一个用于存放MySQL数据的目录。mkdir-p/home/service/mysql/conf:创建一个用于存放MySQL配置文件的目录......
  • MySQL排序时, ORDER BY将空值NULL放在最后
    我们在日常工作当中;往往业务会提到一些莫名其妙的排序等规则;例如:按照某个字段升序排列,同时空值放在后面;但mysql默认升序排列时空值是在最前面;有下面几个方法:方法一:ORDERBY字段ISNULL,字段;方法二:SELECT*FROMtestORDERBYIF(ISNULL(字段),1,0),字段DESC;方法......
  • 你知道什么是 MySQL Online DDL 吗?
    前言MySQL在进行DDL操作时,可能会产生表锁导致阻塞,影响用户的DML操作,而OnlineDDL指的是在DDL期间,允许用户进行DML操作。本文将详细讲解MySQL各版本的OnlineDDL。关于什么是DDL和DML操作,详细介绍见MySQL操作命令总结。1.什么是OnlineDDLOnlineDDL......
  • mysql 的常用批量更新
    批量更新inupdatetableNamesetcolumnName=valuewherecolumnNamein(value1,value2,value3);有局限性,限制了更新的属性值必须一致。如果不一致,需要分开写多个update语句。insertinto...onduplicatekeyupdateinsertintotableName(columnName1,columnName2)......
  • [转帖]Oracle Exadata 学习笔记之核心特性Part1
    https://www.cnblogs.com/jyzhao/p/12257649.html#2 近年来,国内众多厂商都有一体机的产品,不过更多都是围绕硬件本身的堆砌和优化,那么这些产品和Oracle一体机最大的区别在哪里呢?最近读了李亚的《OracleExadata技术详解》,系统的了解了Exadata的一些核心特性,我个人认为这些特......
  • [转帖]AMD 第四代宵龙价格情况
    OfferingUnmatchedPerformance,LeadershipEnergyEfficiencyandNext-GenerationArchitecture,AMDBrings4thGenAMDEPYC™ProcessorstoTheModernDataCenter —NewAMDEPYC™processorsaretheworld’sfastestandmostenergyefficient,......
  • [转帖]数据库系列之简要对比下GaussDB和OpenGauss数据库
    GaussDB作为一款企业级的数据库产品,和开源数据库OpenGauss之间又是什么样的关系,刚开始接触的时候是一头雾水,因此本文简要对比下二者的区别,以加深了解。1、GaussDB和OpenGauss数据库简要对比GaussDB是华为基于PostgreSQL数据库内核创新研发的企业级分布式关系型数据库,支持......
  • [转帖]Unnecessary GCLocker-initiated young GCs
    https://www.cnblogs.com/zhangshengdong/p/9196128.html DetailsType: BugResolution:FixedPriority: P3FixVersion/s:14AffectsVersion/s:7u60, 8, 8u20, 8u40, 9, 11, 13Component/s:hotspotLabels:8u20-defer-SQE-OK 8u20......