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


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

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

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

    数据库对象名称中的空格

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

    1. use DemoDatabase
    2. go
    3. create table Employee Table
    4. (
    5. Employee_ID int,
    6. first_name varchar(50),
    7. first_name varchar(50),
    8. Dept_id int,
    9. grade char(5)
    10. )
    11. 复制代码

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

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

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

    1. use DemoDatabase
    2. go
    3. create table [Employee Table]
    4. (
    5. Employee_ID int,
    6. first_name varchar(50),
    7. last_name varchar(50),
    8. Dept_id int,
    9. grade char(5)
    10. )
    11. 复制代码

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

    1. use DemoDatabase
    2. go
    3. create table "Employee Table"
    4. (
    5. Employee_ID int,
    6. first_name varchar(50),
    7. last_name varchar(50),
    8. Dept_id int,
    9. grade char(5)
    10. )
    11. 复制代码

    列名中的空格

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

    1. create table tblCountries
    2. (
    3. Country code varchar(15),
    4. Country Name varchar(15)
    5. )
    6. 复制代码

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

    1. use DemoDatabase
    2. go
    3. create table tblCountries
    4. (
    5. [Country code] varchar(15),
    6. [Country Name] varchar(15)
    7. )
    8. 复制代码

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

    1. use DemoDatabase
    2. go
    3. create table tblCountries
    4. (
    5. "Country code" varchar(15),
    6. "Country Name" varchar(15)
    7. )
    8. 复制代码

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

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

    1. use DemoDatabase
    2. go
    3. select country code, country name
    4. from tblCountries
    5. 复制代码

    SELECT语句返回一个错误。

    1. Msg 207, Level 16, State 1, Line 2
    2. Invalid column name ‘country’.
    3. Msg 207, Level 16, State 1, Line 3
    4. Invalid column name ‘country’.
    5. 复制代码

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

    1. use DemoDatabase
    2. go
    3. /*Query with square bracket*/
    4. select [country code], [country name]
    5. from tblCountries
    6. Go
    7. /*Query with double quotes*/
    8. select "country code", "country name"
    9. from tblCountries
    10. Go
    11. 复制代码

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

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

    1. INSERT INTO tblcountries
    2. ([country code],
    3. [country name])
    4. VALUES ('AUS',
    5. 'Austrelia')
    6. 复制代码

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

    1. UPDATE tblcountries
    2. SET [country name] = 'Bharat'
    3. WHERE [country name] = 'India'
    4. 复制代码

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

    1. DELETE FROM tblcountries
    2. WHERE [country code] = 'AUS'
    3. 复制代码

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

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

    数据库对象名称中的空格

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

    1. create table film list
    2. (
    3. film_id int,
    4. title varchar(500),
    5. Certificate varchar(10),
    6. duration int,
    7. rental numeric(10,2)
    8. )
    9. 复制代码

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

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

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

    1. create table `film list`
    2. (
    3. film_id int,
    4. title varchar(500),
    5. Certificate varchar(10),
    6. duration int,
    7. rental numeric(10,2)
    8. )
    9. 复制代码

    列名中的空格

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

    1. create table tblmultiplex
    2. (
    3. ID int,
    4. Multiplex name varchar(500),
    5. Total Cinema screen int,
    6. Address varchar(500),
    7. CityID int
    8. )
    9. 复制代码

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

    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),

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

    1. create table tblmultiplex
    2. (
    3. ID int,
    4. `Multiplex name` varchar(500),
    5. `Total Cinema screen` int,
    6. Address varchar(500),
    7. CityID int
    8. )
    9. 复制代码

    列名中带有空格的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查询。它应该写成以下样子。

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

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

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

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

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

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

    1. UPDATE tblmultiplex
    2. SET `multiplex name` = 'Cinemax'
    3. WHERE `multiplex name` = 'Big Cinema Inc'
    4. 复制代码

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

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

    总结

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

    1. 创建一个SQL Server和MySQL表与。
      1. 表名中的空白
      2. 表的列名中的空格
    2. 如何在有空格的列上运行DML语句。DML语句在SQL服务器和MySQL服务器上执行。
  • 相关阅读:
    尚硅谷Vue系列教程学习笔记(12)
    java170-数据报套接字信息交互
    【Go】单例模式与Once源码
    JavaScript分支语句(if、三元表达式、switch)
    hoops编程指南:04.4用户交互突出显示
    登录注册代码模板(Vue3+SpringBoot)[邮箱发送验证码(HTML)、RSA 加密解密(支持长文本)、黑暗与亮色主题切换、AOP信息校验]
    策略枚举:消除在项目里大批量使用if-else的正确姿势
    【Linux】完美解决ubuntu18.04下vi不能使用方向键和退格键
    计算机网络:随机访问介质访问控制之令牌传递协议
    用MATLAB求解微分方程
  • 原文地址:https://blog.csdn.net/m0_71777195/article/details/128061569