如何编写列名中带有空格的SQL查询

3476 篇文章 105 订阅

在这篇文章中,我们将学习如何写出列名中带有空格的SQL查询。空格在数据库对象的名称和表的列名的命名规则中受到限制。如果你想在对象名或列名中加入空格,查询和应用代码必须以不同的方式编写。在编写动态SQL查询时,你必须小心和精确。本文解释了我们如何在SQL Server和MySQL中处理带有空白的对象名称和列。

如何在SQL Server中编写列名中有空格的SQL查询

在SQL Server中,我们可以在方括号或小括号中指定带有空格的列名。让我们通过一些例子来理解这个概念。

数据库对象名称中的空格

假设我们想创建一个名为 雇员表.我们创建以下查询来创建该表。

use DemoDatabase
go
create table Employee Table
(
Employee_ID int,
first_name varchar(50),
first_name varchar(50),
Dept_id int,
grade char(5)
)
复制代码

当我们执行该查询时,我们将收到以下错误。

Msg 156, Level 15, State 1, Line 3 Incorrect syntax near the keyword ‘Table’.

为了解决这个错误,我们可以在方括号中指定表名。

use DemoDatabase
go
create table [Employee Table]
(
Employee_ID int,
first_name varchar(50),
last_name varchar(50),
Dept_id int,
grade char(5)
)
复制代码

另外,你也可以在双引号(")之间指定表名。

use DemoDatabase
go
create table "Employee Table"
(
Employee_ID int,
first_name varchar(50),
last_name varchar(50),
Dept_id int,
grade char(5)
)
复制代码

列名中的空格

假设我们想创建一个名为 tblCountries.该表有两列,分别为国家代码国家名称。下面是创建表的语句。

create table tblCountries
(
Country code varchar(15),
Country Name varchar(15)
)
复制代码

为了解决这个错误,我们必须在方括号中指定列名。

use DemoDatabase
go
create table tblCountries
(
[Country code] varchar(15),
[Country Name] varchar(15)
)
复制代码

或者,你也可以在双引号(")之间指定列名。

use DemoDatabase
go
create table tblCountries
(
"Country code" varchar(15),
"Country Name" varchar(15)
)
复制代码

在列的名称中带有空格的SELECT语句

你可以使用方括号来填充名称中带有空格的列。假设我们想从tblCountries表中获得国家代码国家名称列。

use DemoDatabase
go
select  country code, country name
from tblCountries
复制代码

SELECT语句返回一个错误。

Msg 207, Level 16, State 1, Line 2

Invalid column name ‘country’.

Msg 207, Level 16, State 1, Line 3

Invalid column name ‘country’.
复制代码

我们必须在方括号或双引号中指定列。查询应该写成如下。

use DemoDatabase
go
/*Query with square bracket*/
select  [country code], [country name]
from tblCountries
Go
/*Query with double quotes*/
select  "country code", "country name"
from tblCountries
Go
复制代码

在列名中带有空格的DML SQL查询

当我们运行INSERT、UPDATE和DELETE语句时,我们必须使用方括号或双引号来处理带有空格的列名。在下面的例子中,我在tblCountries中插入一些记录。该表有国家代码和国家名称两列。

INSERT INTO tblcountries
 
([country code],
    [country name])
 
VALUES      ('AUS',
    'Austrelia')
复制代码

假设我们想用UPDATE语句将国名从印度改为Bharat

UPDATE tblcountries
SET    [country name] = 'Bharat'
WHERE  [country name] = 'India'
复制代码

假设我们想用DELETE语句删除代码为AUS的国家。

DELETE FROM tblcountries
    WHERE  [country code] = 'AUS'
复制代码

现在,让我们了解如何在MySQL Server 8.0中编写列名中带有空格的SQL查询。

如何在MySQL中写出列名中带有空格的SQL查询

数据库对象名称中的空格

假设我们想创建一个名为电影列表的表。我们运行以下查询来创建该表

create table film list
(
film_id int,
title varchar(500),
Certificate varchar(10),
duration int,
rental numeric(10,2)
)
复制代码

当我们执行该查询时,我们将收到以下错误。

error 1064 (42000):你的SQL语法有误;请查看与你的MySQL服务器版本相对应的手册,了解在'list'附近使用的正确语法。

为了解决这个错误,我们可以在后缀中指定表名(`)。CREATE TABLE语句可以写成以下样子。

create table `film list`
(
film_id int,
title varchar(500),
Certificate varchar(10),
duration int,
rental numeric(10,2)
)
复制代码

列名中的空格

假设我们想创建一个名为 tblmultiplex.该表有两列,分别为多路影院名称影院总屏幕。下面是创建表的语句。

create table tblmultiplex
(
ID int,
Multiplex name varchar(500),
Total Cinema screen int,
Address varchar(500),
CityID int
)
复制代码

当我们执行查询时,我们会遇到以下错误。

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 ‘name varchar(500),

为了解决这个错误,我们可以使用反斜线。创建表的语句应该写成以下样子。

create table tblmultiplex
(
ID int,
`Multiplex name` varchar(500),
`Total Cinema screen` int,
Address varchar(500),
CityID int
)
复制代码

列名中带有空格的SELECT语句

你可以使用反符号来填充名称中带有空格的列。假设我们想从tblmultiplex表中填入复式影院名称总影院屏幕列。

select multiple name, Total Cinema Screen from tblmultiplex

我们将遇到以下错误。

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 ‘screen from tblmultiplex’ at line 1

让我们使用反斜线来写SELECT查询。它应该写成以下样子。

select `multiple name`, `Total Cinema Screen` from tblmultiplex
复制代码

正如你所看到的,该查询被成功执行。

列名中带有空格的DML SQL查询

当我们在MySQL服务器上运行INSERT、UPDATE和DELETE语句时,我们必须使用背号来处理带有空格的列名。在下面的例子中,我在tblmultiplex表中插入一些记录。该表有多路电视名称和总电影屏幕列。

insert into tblmultiplex (ID, `multiplex name`, `Total cinema screen`, address, CityID )
values
(2,'Big Cinema Inc',3,'Ashram Road', 1);
 
insert into tblmultiplex (ID, `multiplex name`, `Total cinema screen`, address, CityID )
values
(3,'Wide Angal Mehsana',3,'Near Balaji township', 2);
复制代码

假设我们想用UPDATE语句将多厅影院的名称从Big Cinema Inc改为Cinemax

UPDATE tblmultiplex
SET    `multiplex name` = 'Cinemax'
WHERE  `multiplex name` = 'Big Cinema Inc'
复制代码

假设我们想用DELETE语句删除名称为PVR影院的多路影院的详细信息。

delete from tblmultiplex where `multiplex name`='PVR Multiplex';
复制代码

总结

在这篇文章中,我们学习了如何写一个列名中带有空格的SQL查询。我已经涵盖了以下内容。

  1. 创建一个SQL Server和MySQL表与。
    1. 表名中的空白
    2. 表的列名中的空格
  2. 如何在有空格的列上运行DML语句。DML语句在SQL服务器和MySQL服务器上执行。
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值