AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 346234
Accepted
Manuel Jordan
Manuel Jordan
Asked: 2025-04-19 00:46:38 +0800 CST2025-04-19 00:46:38 +0800 CST 2025-04-19 00:46:38 +0800 CST

MySQL:为什么“use”命令不需要执行“;”?

  • 772

在 MySQL 8 服务器社区版中,下面是SQL查询和命令MySQL Shell的示例:

SELECT * FROM planet;
DESC planet;
SHOW DATABASES;
SHOW tables;

正如您所见,必须在句子末尾声明;字符(或\g根据情况声明字符)。\G

但我确实错误地意识到,无需执行use命令即可更改数据库。 ;

因此,下面两个命令可以和平地工作:

use <datababase>
use <datababase>;

只是好奇:

问题

  • 为什么use命令不需要;执行?

老实说,我不确定这是否是这种情况下的独特命令,但为什么它与其他命令不同?

mysql
  • 3 3 个回答
  • 710 Views

3 个回答

  • Voted
  1. Best Answer
    Bill Karwin
    2025-04-19T01:44:26+08:002025-04-19T01:44:26+08:00

    MySQL 客户端 ,mysql具有许多内置命令,例如clear,help,pager,quit,warnings等等。

    内置命令由客户端处理,而不是以 SQL 语句的形式发送到 MySQL 服务器。它们主要控制客户端本身的行为。

    当读取一行输入时,MySQL 客户端首先会对其进行简单的解析,检查它是否是内置命令之一。只有当它不是内置命令时,客户端才会将该语句发送到服务器。

    由于特殊的解析,所有内置命令都不需要;终止命令。它们只需读取到行尾即可。您可以添加,;但它会被忽略。

    请注意,我可以不使用分号来运行此命令:

    mysql> warnings
    Show warnings enabled.
    

    内置命令之一是use。为什么它是内置命令,当你可以作为 SQL 语句运行USE,并且这会影响服务器端的当前默认模式?

    内置命令use确实会影响mysql客户端,因为客户端支持表名和列名的 Tab 补全。使用 更改默认架构use会导致客户端读取新默认架构中的表列表,并将其添加到其自动补全哈希中。

    • 10
  2. Kondybas
    2025-04-19T01:34:04+08:002025-04-19T01:34:04+08:00

    造成这种现象的原因是,mysql 客户端不仅接受需要用分号补全的 SQL 语句,还接受其自身不属于 SQL 语法的命令。您可以运行命令?或help从 mysql 客户端查看可用命令列表。USE是客户端命令之一,因此它不需要像DELIMITER命令那样使用分号。

    • 3
  3. R9ST SEO
    2025-04-19T15:10:34+08:002025-04-19T15:10:34+08:00

    在 MySQL 中,USE命令不需要分号 ( ;) 来执行,因为它是一个完整的语句,MySQL 客户端可以解释它,而不需要依赖分号来表示命令的结束。

    但是,使用分号仍然是一种很好的做法,特别是在脚本或批处理中执行多个命令时,因为它有助于指示每个单独语句的结束。

    • -1

相关问题

  • 是否有任何 MySQL 基准测试工具?[关闭]

  • 我在哪里可以找到mysql慢日志?

  • 如何优化大型数据库的 mysqldump?

  • 什么时候是使用 MariaDB 而不是 MySQL 的合适时机,为什么?

  • 组如何跟踪数据库架构更改?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve