认识 mysql 命令

2023-08-02 20:03:34

1.简介

mysql 是 MySQL 的命令行客户端,用于连接到 MySQL 服务器并执行 SQL 语句。

它支持交互式和非交互式两种使用方式。以交互方式使用时,查询结果以 ASCII 表格式呈现。 当以非交互方式使用时(例如,作为过滤器),结果以制表符分隔的格式显示。 可以使用命令选项更改输出格式。

mysql 命令格式:

mysql [OPTIONS] DB_NAME

比如

mysql -h HOST_NAME -u USER_NAME -p DB_NAME

# 或
mysql --host=HOST_NAME --user=USER_NAME --password DB_NAME

使用选项 -p 或 --password 但不指定密码,在这种情况下,需要根据提示以交互的方式输入密码。

成功连接服务器后,键入 SQL 语句并以;\g\G结尾,然后按 Enter 便可以交互方式执行 SQL 语句。退出交互会话键入 quit 或 exit 指令。

当然,你也可以直接在命令行指定密码。但是这样做不太安全,因为这样会导致密码暴露在命令历史或进程列表中,存在安全风险,所以不推荐这么做。

# 注意选项与密码之间没有空格
-pPWD

# 或
--password=PWD

我们也可以将 SQL 语句写入脚本文件(批处理文件)中,通过 mysql 解析执行。

mysql DB_NAME < script.sql > output.tab

MySQL 服务器缺省端口为 3306,如果需要指定其他端口,需要使用选项 -P 或 --port 指定。

-P PORT_NUM
# 或
--port=PORT_NUM

2.选项

除了前面介绍的连接数据库用到的相关选项外,mysql 命令有很多选项,这里列一些较为常用的选项。

--help, -?
	显示帮助信息并退出。
--auto-rehash
	启用自动重新哈希,缺省开启。当启用了--auto-rehash选项后,在输入命令时,MySQL客户端会自动为您提数据库、表和列名称的自动补全和提示,使得查询和使用数据库更加方便和高效。
-A, --no-auto-rehash
	禁用自动重新哈希。不对数据库、表与列名重新哈希,因此禁用了数据库、表和列名的自动补全功能,可以提高 mysql 启动速率。
--auto-vertical-output
	当结果集相对于当前窗口太宽时,自动转换水平输出为垂直输出。
-B, --batch
	使用制表符作为列分隔符打印结果,每行占一个新行。 使用此选项,mysql 不使用历史文件。mysql 命令交互过程会将用户的所有输入记录在一个隐藏文件 /root/.mysql_history。每次退出 mysql 交互模式时,会将交互过程中的所有命令操作一次性写入 ~/.mysql_history 隐藏文件中。下次执行 mysql 时,可以使用键盘的向上键获取历史命令。类似于 Shell 获取历史命令。该选项一般用于 Shell 脚本中执行 SQL 语句,命令行模式下需要交互指定 SQL 语句,故不使用该选项。
-N, --skip-column-names
	查询结果不输出列名。
--database, -D DB_NAME
	指定要使用的数据库。这主要在选项文件中有用。
--default-character-set=CHARSET
	设置默认的字符集。
-e, --execute=STATEMENT
	执行指定的 SQL 语句并退出。默认输出格式类似于使用 --batch 生成的格式。
-E, --vertical
	垂直打印输出行(每列值一行)。 如果没有此选项,您可以通过用 \G 终止各个语句来指定垂直输出。
-t, --table
	显示查询结果以表格形式输出。这是交互式使用的默认输出形式,但可用于以批处理模式生成表输出。
-R, --raw
	显示查询结果以原始格式输出。
--show-warnings
	如果有的话,会在每个语句后显示警告。 此选项适用于交互和批处理模式。
--tee=FILE_NAME
	将输出拷贝一份到给定文件。 此选项仅在交互模式下有效。
-v, --verbose
	显示详细的执行信息。
-V, --version
	显示版本信息并退出。

使用mysql --help可查看更加详细的选项说明。当然也可以查看 mysql 命令手册(man mysql)或官方文档 mysql Client Options

命令行交互模式下一般为了快速启动会使用-A选项不对数据库、表与列名重新哈希。在 Shell 脚本使用 mysql 执行 SQL 语句时经常使用选项-NBA

3.子命令

mysql 将您发出的每个 SQL 语句发送到服务器来执行。 还有一组mysql本身解释的命令。 要获取这些命令的列表,请在 mysql> 提示符下键入 help 或 \h。

?         (\?) Synonym for `help'.
clear     (\c) Clear the current input statement.
connect   (\r) Reconnect to the server. Optional arguments are db and host.
delimiter (\d) Set statement delimiter.
edit      (\e) Edit command with $EDITOR.
ego       (\G) Send command to mysql server, display result vertically.
exit      (\q) Exit mysql. Same as quit.
go        (\g) Send command to mysql server.
help      (\h) Display this help.
nopager   (\n) Disable pager, print to stdout.
notee     (\t) Don't write into outfile.
pager     (\P) Set PAGER [to_pager]. Print the query results via PAGER.
print     (\p) Print current command.
prompt    (\R) Change your mysql prompt.
quit      (\q) Quit mysql.
rehash    (\#) Rebuild completion hash.
source    (\.) Execute an SQL script file. Takes a file name as an argument.
status    (\s) Get status information from the server.
system    (\!) Execute a system shell command.
tee       (\T) Set outfile [to_outfile]. Append everything into given outfile.
use       (\u) Use another database. Takes database name as argument.
charset   (\C) Switch to another charset. Might be needed for processing binlog with multi-byte charsets.
warnings  (\W) Show warnings after every statement.
nowarning (\w) Don't show warnings after every statement.
resetconnection(\x) Clean session context.
query_attributes Sets string parameters (name1 value1 name2 value2 ...) for the next query to pick up.
ssl_session_data_print Serializes the current SSL session data to stdout or file.

如果要获取服务器端帮助,请输入“help contents”。

上面的子命令中,有几个常用的子命令需要关注一下。

  • ? 和 help 查看子命令。
  • ego (\G) 可将查询结果垂直输出,即每列单独一行输出。
  • use (\u) 切换数据库。
  • exit 和 quit 退出 mysql。

4.小结

通过本篇文章,您已经了解了 MySQL 命令行工具 mysql 的基本用法、常用选项与子命令,比如通过 mysql 轻松连接数据库。

通过 MySQL 命令行工具 mysql,我们可以以交互或非交互的方式与数据库建立连接,执行我们想要的操作。


参考文献

mysql — The MySQL Command-Line Client

更多推荐

接口自动化测试完整版(文档+视频)

1.什么是接口测试顾名思义,接口测试是对系统或组件之间的接口进行测试,主要是校验数据的交换,传递和控制管理过程,以及相互逻辑依赖关系。其中接口协议分为HTTP,WebService,Dubbo,Thrift,Socket等类型,测试类型又主要分为功能测试,性能测试,稳定性测试,安全性测试等。在分层测试的“金字塔”模型中

QT windows dpi变化导致的界面异常处理

问题:已经在UI界面中利用布局设计好界面,但是运行程序后显示的界面出现错乱,而且在做出一些修改后重新构建,运行时界面无变化。目录一、解决UI设计界面与运行时显示界面不一致的问题1、导致该现象的原因有:显示屏分辨率过高2、使用布局和设置控件sizePolicy二、解决修改界面后重构,运行无变化的问题一、解决UI设计界面与

Spring | Spring监听器使用与入门

引言在复杂的软件开发环境中,组件之间的通信和信息交流显得尤为重要。Spring框架,作为Java世界中最受欢迎的开发框架之一,提供了一种强大的事件监听器模型,使得组件间的通信变得更加灵活和解耦。本文主要探讨Spring事件监听器的原理、使用方法及其在实际开发中的应用,希望为广大开发者提供实用的参考。1.1Spring事

2023年中国研究生数学建模竞赛赛题浅析

为了更好的帮助大家第一天选题,这里首先为大家带来各个赛题的赛题浅析,分析对应赛题之后做题阶段可能会遇到的各种难点。稍后会带来D题的详细解析思路,以及相关的其他版本解题思路成品论文等资料。赛题难度评估:A、B>C>E、F>D选题人数评估:D>E、F>C>A、BA题WLAN网络信道接入机制建模B题DFT类矩阵的整数分解逼近

【Java 并发编程】CopyOnWriterArrayList 详解

CopyOnWriterArrayList详解1.ArrayList1.1ArrayList和LinkedList的区别1.2ArrayList如何保证线程安全2.CopyOnWriteArrayList原理3.CopyOnWriteArrayList的优缺点3.1优点3.2缺点4.源码分析4.1两个成员变量4.2构造

通过篡改cred结构体实现提权利用

前言在之前的HeapOverflow文章中,作者还构造了任意地址读写的操作,使用了任意地址读写去进行提权,还挺有意思的,记录一下如何利用任意地址读写进行提权。作者利用任意地址读写分别改写modprobe_path以及cred结构体去实现提权的操作,由于改写modprobe_path的方法之前已经研究过了,因此现在详细记

【Qt图形视图框架】QGraphicsScene分析

QGraphicsScene分析描述注意使用示例属性方法成员方法(较重要的)公共槽函数:信号:事件描述QGraphicsScene类提供了一个用于管理大量2D图形项的表面。该类充当QGraphicsItems的容器。它与QGraphicsView一起用于在2D表面上可视化图形项,如线条、矩形、文本,甚至自定义项。QGr

“undefined reference to XXX“问题总结

"undefinedreferencetoXXX"问题总结引言我们在Linux下用C/C++工作的时候,经常会遇到"undefinedreferencetoXXX"的问题,直白地说就是在链接(从.cpp源代码到可执行的ELF文件,要经过预处理->编译->链接三个阶段,此时预处理和编译已经通过了)的时候,链接器找不到XX

【中秋国庆】旅行公众号文章排版素材大全

中秋国庆节长假即将来临,你是否已经做好了旅行计划?在这个举国同庆的时刻,何不走出家门,去感受大自然的壮美、领略历史的厚重以及品尝地道的美食呢?随着假期的临近,各大公众号纷纷推出了相关文章,为节日的氛围增色添彩。今天小编将为宝子们分享一些旅行公众号文章排版素材,帮助你在这个假期里,呈现出一篇富有诗意和浪漫的旅行日记。在排

NSDT孪生场景编辑器系统介绍

一、产品背景数字孪生的建设流程涉及建模、美术、程序、仿真等多种人才的协同作业,人力要求高,实施成本高,建设周期长。如何让小型团队甚至一个人就可以完成数字孪生的开发,是数字孪生工具链要解决的重要问题。考虑到数字孪生复杂的生产流程,一个面向小型团队的数字孪生开发工具应该考虑以下问题:NSDT编辑器的出现很好解决了以上问题,

day29IO流(其他流)

1.缓冲流昨天学习了基本的一些流,作为IO流的入门,今天我们要见识一些更强大的流。比如能够高效读写的缓冲流,能够转换编码的转换流,能够持久化存储对象的序列化流等等。这些功能更为强大的流,都是在基本的流对象基础之上创建而来的,就像穿上铠甲的武士一样,相当于是对基本流对象的一种增强。1.1概述缓冲流,也叫高效流,是对4个基

热文推荐