键盘上1左边,Esc下边那个键就是反引号键
在mysql中,desc是保留字,建表时不能用于字段名,表名:
mysql> create table desc (id varchar(255));
ERROR 1064 (42000): 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 'desc (id varchar(255))' at line 1
ERROR 1064 (42000): 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 'desc (id varchar(255))' at line 1
mysql> create table test3(desc varchar(255));
ERROR 1064 (42000): 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 'desc varchar(255))' at line 1
ERROR 1064 (42000): 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 'desc varchar(255))' at line 1
但将desc放到反引号中则正常
mysql> create table `desc` (id varchar(255));
Query OK, 0 rows affected (0.01 sec)
Query OK, 0 rows affected (0.01 sec)
mysql> create table test3 (`desc` varchar(255));
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
mysql> drop table desc;
ERROR 1064 (42000): 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 'desc' at line 1
mysql> drop table `desc`;
Query OK, 0 rows affected (0.00 sec)
ERROR 1064 (42000): 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 'desc' at line 1
mysql> drop table `desc`;
Query OK, 0 rows affected (0.00 sec)
有些管理员在建表时,为了省事,可能会选择从一个现有的表cp建表语句,修改创建.字段命名如果不规范的话,可能会用到mysql中的保留字,如上述的desc
例如从show create table xxx 或者mysqldump --no-data中取出建表语句,形式如下:
CREATE TABLE `test` (
`id` int(10) unsigned NOT NULL auto_increment,
`time` datetime NOT NULL default '0000-00-00 00:00:00',
`type` int(10) unsigned NOT NULL default '0',
`desc` varchar(255) default NULL,
primary key `i_id` (`id`)
) ENGINE=innodb DEFAULT CHARSET=latin1;
`id` int(10) unsigned NOT NULL auto_increment,
`time` datetime NOT NULL default '0000-00-00 00:00:00',
`type` int(10) unsigned NOT NULL default '0',
`desc` varchar(255) default NULL,
primary key `i_id` (`id`)
) ENGINE=innodb DEFAULT CHARSET=latin1;
创建成功后,在insert时如果不带反引号就会遇到问题
mysql> insert into test(`time`,`type`,`desc`) values(now(),5,'aa');
Query OK, 1 row affected (0.01 sec)
Query OK, 1 row affected (0.01 sec)
mysql> insert into test(time,type,desc) values(now(),5,'aa');
ERROR 1064 (42000): 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 'desc) values(now(),5,'aa')' at line 1
mysql>
ERROR 1064 (42000): 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 'desc) values(now(),5,'aa')' at line 1
mysql>
针对这个问题,有2个建议
1) 在建表时,不要用保留字作表名,字段名.可以加一个前缀标志加以区分,如在表名前加t_, 在列名前加F
2) 建表时,不要给表名/字段名/索引名加反引号,以免隐藏问题
反引号中带保留字建表时,mysql为什么不报错呢?
得先搞清楚反引号的本意,及show create table,mysqldump出来的数据带反引号的目的是什么.
有哪位知道,望不吝踢教~.~
相关资料:
mysql中的反引号与保留关键字desc问题来源网络,如有侵权请告知,即处理!
相关推荐
MySQL数据库中的保留字是指在数据库中具有特殊意义和用途的单词,它们被用于SQL语句中,以执行特定的操作或作为命令的关键字。这些保留字不能用作表名、列名或其他对象的名称。保留字通常用于执行数据查询、定义数据...
- 在创建数据库对象(如表名或列名)时应避免使用MySQL中的保留关键字,因为这些关键字具有特殊意义,可能会导致SQL语句执行错误。 - 如果无法避免使用关键字作为表名或列名,可以通过反引号(`)将它们包围起来,...
- 如果表名中包含空格或其他特殊字符,需用反引号(`)包裹起来。 - 此命令可以用来帮助恢复丢失的表结构或迁移表结构到其他数据库。 ### 4. 查看表信息:`desc xiaonei;` **知识点详解:** - **命令功能**:查看...
- 使用特殊字符命名:如需使用关键字作为数据库名称,需要使用反引号 (`) 包围名称,如 `create database `database`;` - **选择数据库**:使用 `use 数据库名称;` 选择一个已存在的数据库作为当前工作数据库。 ##...
在MySQL中,我们通常使用反引号(`)来引用表名和字段名,以避免与SQL关键字冲突。正确的写法应该是: ```sql SELECT * FROM product_con WHERE condition ORDER BY `ifbold` ASC, `update_time` DESC LIMIT page_...
数据库名称不能使用MySQL的关键字,如果确实需要,可以用反引号(`)包裹。字符集定义了数据库存储字符的能力,如UTF8支持中文字符。设定字符集可以通过创建时指定或修改配置文件实现,并且需要重启MySQL服务。 接...
- **创建包含关键字的数据库**:需要使用反引号来标识关键字。 ```sql create database `database` charset utf8; ``` - **创建包含中文名称的数据库**:虽然可行但不推荐。 ```sql create database 中国 ...
以下是无意中在网络看到的使用MySql的管理心得, 在windows中MySql以服务形式存在,在使用前应确保此服务已经启动,未启动可用net start mysql命令启动。而Linux中启动时可用“/etc/rc.d/init.d/mysqld start”...
- 使用反引号(``)括起表名和字段名,避免关键字冲突。 - AUTO_INCREMENT用于设置字段的自动递增功能。 - 所有的语句后面加逗号,最后一个不加。 - 字符串使用单引号括起来。 - 主键的声明通常放在最后,便于...
在这个例子中,`action`被反引号包围,告诉MySQL这是一个对象名而不是保留字。 验证SQL保留字的工具或方法通常包括语法分析器、编程语言的SQL解析库,或者在线的SQL检查器。这些工具可以帮助开发者检测SQL语句中...
- **知识点解析**:在SQL中,反斜杠 `\` 用于转义单引号 `'`。因此,字符串 `'hel\’lo'` 实际上输出为 `'hello'`。 #### 6. 开放式数据库互连 (ODBC) - **题目**:开放式数据库互连简称:()。 - **选项**:A、ODBC...