在这篇文章中,我们将学习如何写出列名中带有空格的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查询。我已经涵盖了以下内容。
- 创建一个SQL Server和MySQL表与。
- 表名中的空白
- 表的列名中的空格
- 如何在有空格的列上运行DML语句。DML语句在SQL服务器和MySQL服务器上执行。