文章目录
- 1. 名称
- 2. 语法
- 3. 描述
- 4. 选项
1. 名称
mysql
:MySQL数据库的命令行客户端。
2. 语法
mysql [
options
] $db_name
3. 描述
mysql
是一个简单的 SQL shell ,该 shell 具有输入行编辑功能。 mysql
支持交互和非交互两种使用方式。在交互模式下,查询的结果以 ASCII 码的形式展示。在非交互模式下,查询的结果以制表符分割,当然输出格式也可以通过命令选项具体指定。
如果你在查询大数据集时遇到内存不足的问题,你可以使用 --quick
这一选项。该选项不会在展示前一次性获取所有的结果集并放到内存中;相反,该选项强制 mysql
一次性只从服务端获取一行数据。
使用 mysql
命令也非常简单,可以在命令行中通过下列方式使用:
shell> mysql $db_name
或者:
shell> mysql --user=$user_name --password $db_name
Enter password: $your_password
接着,你可以在后面接着写所需进行操作的 SQL 语句:
[root@centos ~]# mysql --user=root --password --database=mysql -t -e "select * from help_keyword limit 5;" > output.txt
Enter password:
[root@centos ~]# cat output.txt
+-----------------+-------------+
| help_keyword_id | name |
+-----------------+-------------+
| 226 | (JSON |
| 227 | -> |
| 229 | ->> |
| 46 | <> |
| 637 | ACCOUNT |
+-----------------+-------------+
如果你想执行在脚本文件中的SQL语句,你可以像下面命令这么做:
shell> mysql $db_name < script.sql > output.tab
Enter password: $your_password
4. 选项
--auto-vertical-output
使用该选项后,如果结果集的显示超过了当前窗口的大小,则以垂直的方式来显示结果集;否则,还是通过表格的方式进行结果集展示。
-
--batch
等价于-B
打印结果时使用制表符作为列分隔符。使用这个选项时, mysql
命令不使用历史文件(history file),例如:
[root@centos ~]# mysql --user=root --password --database=mysql --batch -e "select * from help_keyword limit 5;"
Enter password:
help_keyword_id name
226 (JSON
227 ->
229 ->>
46 <>
637 ACCOUNT
-
--bind-address=
ip_address
在一台有多张网卡的电脑上,则可以通过该选项指定使用哪一个网卡来连接到 MySQL 服务器。
-
--database=
db_name
等价于-D
db_name
用于指定所使用的数据库名称。
-
--delimiter=
str
设置语句的分隔符,默认为 ;
。
-
--execute=
statement
等价于-e
statement
执行完语句 statement
后退出,默认的输出格式和指定选项 --batch
时一致。
关于上述该选项使用案例可见脚本 sql_test.sh 中的第51、53和54行。
-
--html
等价于-H
表示以 HTML 格式输出结果集,例如:
[root@centos ~]# mysql --user=root --password --database=mysql --html -t -e "select * from help_keyword limit 5;"
Enter password:
<TABLE BORDER=1><TR><TH>help_keyword_id</TH><TH>name</TH></TR><TR><TD>226</TD><TD>(JSON</TD></TR><TR><TD>227</TD><TD>-></TD></TR><TR><TD>229</TD><TD>->></TD></TR><TR><TD>46</TD><TD><></TD></TR><TR><TD>637</TD><TD>ACCOUNT</TD></TR></TABLE>
-
--host=
host_name
等价于-h
host_name
表示 MySQL 服务端所在机器的 IP 地址。
-
--init-command=
str
指定连接至 MySQL 服务器之后所需执行的 SQL 语句。
-
--max-allowed-packet=
value
MySQL 的客户端和服务端之间通讯时缓冲区的最大值,默认 16MB , 最大 1GB 。
-
--password[=
password
]
等价于-p[
password
]
如果希望不指定密码且不希望收到输入密码的提示,可使用 --skip-password
选项。
-
--port=
port_num
等价于-P
port_num
指定连接服务器时使用的端口号。
-
--prompt=
format_str
将客户端的命令行提示符设置为 format_str
,默认是 mysql>
。
[root@centos ~]# mysql --prompt='upmysql>'
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 8.0.21 Source distribution
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
upmysql>
-
--skip-column-names
等价于-N
不将列名称写入结果中。例如:
[root@centos ~]# mysql --user=root --password --database=mysql -N -e "select * from help_keyword limit 5;"
Enter password:
+-----+---------+
| 226 | (JSON |
| 227 | -> |
| 229 | ->> |
| 46 | <> |
| 637 | ACCOUNT |
+-----+---------+
-
--table
等价于-t
以表格的形式显示输出。这是交互式使用方式的默认选项,但是也可以在批量的模式下用于指定输出的显示方式。
关于该选项的使用案例,在【MySQL数据库入门】安装MySQL示例数据库中
mysql -t < employees.sql
命令就是该选项在mysql
命令非交互式使用下展示输出的一种方式。
-
--xml
等价于-X
以 XML 的格式显示查询结果,例如:
[root@centos ~]# mysql --user=root --database=mysql --xml -t -e "select * from help_keyword limit 5;"
<?xml version="1.0"?>
<resultset statement="select * from help_keyword limit 5" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<row>
<field name="help_keyword_id">226</field>
<field name="name">(JSON</field>
</row>
<row>
<field name="help_keyword_id">227</field>
<field name="name">-">></field>
</row>
<row>
<field name="help_keyword_id">229</field>
<field name="name">-">>">></field>
</row>
<row>
<field name="help_keyword_id">46</field>
<field name="name"><">></field>
</row>
<row>
<field name="help_keyword_id">637</field>
<field name="name">ACCOUNT</field>
</row>
</resultset>
在 Linux 的命令行中执行 sql 脚本,然后将结果输出重定向至某脚本下:
mysql -h $host -P $port -u $user -D $dbname -p -t < script.sql > result.txt
未完待续…