mysql数据库中表的列名中含有括号等特殊字符时的处理

问题描述
数据库的字段存在斜杠或者空格的时候,怎么用sql进行insert或者select操作。

在这里插入图片描述

insert into test (SN,DATE,VINL(V)) values (‘15454’,‘2021-06-25 8:07:25’,‘8.5’)

test为表名,列SN、VINL(V)为varchar类型,DATE为datetime类型

问题解答
对于这种特殊字符,我们一般想到的是用转义符进行处理,所以试了下"/"、引号、单引号等常见的转义符,发现依然语法错误,又查了下mysql的官方说明:

特殊字符位于列名中时必须进行转义,如果列名中包含\t,(,),/,,=,<,>,+,-,*,^,",’,[,],~,#,|,&,% 则必须用中括号括起来。eg:列名为Column#,应写为[Column#];列名包括中括号,必须使用斜杠进行转义,eg:列名为Column[]的列应写为[Column]
以中括号的形式进行转义,然后又试了下中括号,发现依然还是不行。

通过搜索,最后找到需要以反引号“`”(一般键盘的左上角数字1左边的那个键)来处理。

其它反引号的用法
之前对反引号几乎没有使用过,所以借此机会搜索总结了下反引号相关的用法。

Linux反引号的作用
特殊的赋值
Shell中可以将数字或字符直接赋予变量,也可以将Linux命令的执行结果赋予变量,如下:
(1) $ count=9 #将数字赋予变量count
(2) $ name=“ming” #将字符赋予变量name
(3) $ listc=ls -la #将Linux命令赋予listc,listc的值就是该命令的执行结果

反引号的作用
反引号的作用就是将反引号内的Linux命令先执行,然后将执行结果赋予变量。尽管可以通过输入字符或者字符串来创建变量值,也可以获取来自于其他Linux命令的值。为把Linux命令的结果赋予变量,实现需要执行这个命令。如果在命令行上把Linux命令放在反引号中,这个命令会首先被执行,其结果会成为命令行的一个参数。在赋值时,通过把命令放在反引号中,以便于首先执行,命令的执行结果会被赋予一个变量。反引号可以被视为由要执行命令组成的表达式,其结果会被赋予变量。组成命令的字符本身不会被赋予。在下面的范例中,命令ls *.c被执行,其结果然后被赋予变量listc。ls *.c会生成具有.c扩展名的所有文件列表。这个文件列表随后被赋予变量listc。

总结
反引号里面的字符串必须是能执行的命令,否则会出错;它的作用是命令替换,将其中的字符串当成Shell命令执行,返回命令的执行结果。

mysql中反引号的作用
为了区分MYSQL的保留字与普通字符而引入的符号

举个例子:SELECT select FROM test WHERE select=‘字段值’
在test表中,有个select字段,如果不用反引号,MYSQL将把select视为保留字而导致出错,所以,有MYSQL保留字作为字段的,必须加上反引号来区分。

引号一般用在字段的值,如果字段值是字符或字符串,则要加引号,如:select=‘字段值’
不加反引号建的表不能包含MYSQL保留字,否则出错

反引号`,数字1左边的符号
保留字不能用于表名,比如desc,此时需要加入反引号来区别,但使用表名时可忽略反引号。

sql
create table desc报错
create table desc成功
create table test成功
drop table test成功

保留字不能用于字段名,比如desc,此时也需要加入反引号,并且insert等使用时也要加上反引号。

sql
create table testdesc varchar(255))成功
insert into test(desc) values(‘fxf’)失败
insert into test(desc) values(‘fxf’)成功

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 MySQL 新建一张表的命令是: ``` CREATE TABLE table_name ( column_1 datatype, column_2 datatype, ... column_n datatype ); ``` 其,`table_name` 为新建表的名称,`column_1` 到 `column_n` 是表列名,`datatype` 是列的数据类型。你可以根据需要自定义列名和数据类型。 ### 回答2: 在MySQL,要新建一张表可以使用"CREATE TABLE"命令。命令的基本语法如下: CREATE TABLE 表名 ( 列1 数据类型, 列2 数据类型, 列3 数据类型, ... ); 其,"表名"是要创建的表的名称,可以自定义,括号内是表的列名和对应的数据类型。每列的定义之间用逗号分隔。 例如,我们要创建一个名为"students"的表,该表包含三个列:学生ID、学生姓名和学生年龄。可以使用以下命令: CREATE TABLE students ( id INT, name VARCHAR(50), age INT ); 这样就成功创建了一个名为"students"的表,包含三个列,分别是id、name和age。 此外,还可以在CREATE TABLE命令后面添加一些其他的参数和约束条件,例如指定主键、设置自增长等。以下是一个完整的示例: CREATE TABLE students ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50), age INT ); 以上命令将创建一个名为"students"的表,id列是主键,并且设置为自增长。 ### 回答3: 要在MySQL新建一张表,可以使用CREATE TABLE命令来完成。 下面是一个示例的CREATE TABLE命令: ``` CREATE TABLE 表名 ( 列名1 数据类型1 约束, 列名2 数据类型2 约束, ... 列名N 数据类型N 约束 ); ``` 其,表名是新表的名称,列名是表每列的名称,数据类型是每列的数据类型,约束是对列进行限制或规定的条件。 举个例子,如果要创建一个名为students的新表,有三个字段:id(整数类型,主键),name(字符串类型,最大长度为50),age(整数类型)。 ``` CREATE TABLE students ( id INT PRIMARY KEY, name VARCHAR(50), age INT ); ``` 上述命令将在MySQL创建一个名为students的新表,其包含三个字段id、name和age。id字段被设置为主键,name字段的最大长度被限制为50个字符。 执行CREATE TABLE命令后,MySQL会将新表添加到当前数据库
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值