MySQL客户端的进阶操作

MySQL基础知识与实践训练 MySQL Workbench是官方提供的图形界面客户端工具,它允许数据库管理员和开发人员设计、创建、管理和维护MySQL数据库。该工具具备数据建模、SQL开发和数据库管理等功能。数据定义语言(DDL)是用来定义和管理数据库结构的语言,比如数据库、表、视图、索引等。它是数据库管理中非常重要的一部分,能够让我们创建、修改、删除数据库中的各个结构。本章节将详细介绍如何使用DDL中的索引和视图存储过程。 阅读详情
  • GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。
  • GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。
  • 作者:土豆娃娃
  • 文章来源:社区投稿

引言

作为一个MySQL数据库从业者,我们最常用的工具就是mysql了,然而如何让它变的更好用,你了解吗?

mysql Client Commands

作为连接MySQL数据库的工具,mysql其实有很多非常有用的命令设置,有一些是我们日常使用的,比如\g、\G、\q,也有我们不太常用的\P、\T。今天分享一下我对这些设置的理解,希望能对大家在日常的工作中,有所帮助。

支持哪些设置

mysql提供了help命令,用以说明支持哪些命令的设置,我们先看一下

Great[(none)]> help ;

For information about Percona products and services, visit:
   http://www.percona.com/
Percona Server manual: http://www.percona.com/doc/percona-server/8.0/
For the MySQL Reference Manual: http://dev.mysql.com/
To buy Percona support, training, or other products, visit:
   https://www.percona.com/

List of all MySQL commands:
Note that all text commands must be first on line and end with ';'
?         (\?) 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.
source_decrypt Execute an encrypted script file. Takes file name, decrypt key as arguments.
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.

For server side help, type 'help contents'

?

显示帮助信息,列出所有支持的操作命令,这个最简单,就不做进一步说明了。

clear(\c)

MySQL手册介绍为清除当前输入的SQL语句,我个人更愿意理解为撤销已输入SQL的执行。看下面的例子:

Great[test]> select * from tt1;
+------+------+------+------+
| id   | dd   | c1   | c2   |
+------+------+------+------+
|    1 | aaa  | NULL | NULL |
|    2 | bbb  | NULL | NULL |
|    3 | NULL | NULL | NULL |
|    4 | 8    | NULL | NULL |
|    5 | NULL | NULL | NULL |
+------+------+------+------+
5 rows in set (0.01 sec)

Great[test]> delete from tt1 
    -> where id = 5 
    -> and c1 is not null
    -> 

当我输入完上面的SQL时,发现逻辑未考虑全,不想执行这个SQL了,怎么办呢?这里有好几种解决办法:你可以ctrl+c 终止命令的执行,也可以关闭当前的mysql客户端,甚至关闭操作命令的电脑。然后有一种标准且简单的方式,就是在命令的最后加上\c,就可以实现:

Great[test]> delete from tt1 
    -> where id = 5 
    -> and c1 is not null
    -> \c
Great[test]>

可以看到,在命令窗口最后输入\c后,SQL不会被执行,并且重新启动新的命令行接收客户端输入。需要注意的是:\c和需要取消的SQL间,不能有分隔符(默认为分号;),否则会先执行分隔符前面的SQL,然后再执行\c,这时就达不到取消已输入SQL执行的效果了。

connect(\r)

重新连接数据库服务端,支持重连过程中,指定database名字和连接主机。

这个功能看起来好像没什么新奇的,客户端执行了SQL,就算连接超时了,默认情况下,自动就会重新连接服务端。

但是在MGR、主从复制场景下,如果所有实例的维护账号都具有相同的用户名、密码、端口,那么通过\r就很方便的切换多个实例进行维护,而不需要重新输入其他连接信息

Great[test]> select @@report_host;
+---------------+
| @@report_host |
+---------------+
| 172.16.50.82  |
+---------------+
1 row in set (0.00 sec)

Great[test]> \r test 172.16.50.81
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Connection id:    911698
Current database: test

Great[test]> select @@report_host;
+---------------+
| @@report_host |
+---------------+
| 172.16.50.81  |
+---------------+
1 row in set (0.00 sec)

Great[test]> 

重连信息中的ip地址,也可以是在/etc/hosts中配置的主机名

Great[test]> select @@report_host;
+---------------+
| @@report_host |
+---------------+
| 172.16.50.81  |
+---------------+
1 row in set (0.00 sec)

Great[test]> \r test Great82
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Connection id:    2460607
Current database: test

Great[test]> select @@report_host;
+---------------+
| @@report_host |
+---------------+
| 172.16.50.82  |
+---------------+
1 row in set (0.00 sec)

Great[test]>

delimiter(\d)

自定义分隔符,在创建、修改存储过程、函数、触发器、事件、视图都会用到,替换用于替换默认的分号分隔符。

edit(\e)

官网解释说命令用于编辑当前输入SQL命令,默认的编辑器是vi,也可以通过设置环境变量EDITOR来改变成其他的编辑器,比如调整为vim编辑器export EDITOR=$(which vim)。

有这个命令后,输出错误的SQL,就不需要再用\c终止了,而是直接在其后加上\e进行编辑,修改成正确的后,再执行。

比如我实际上想要执行的命令中tt2表不存在,那么只需要通过\e更新SQL语句中的表名字就可以继续执行,不需要再重新编辑整条SQL。

Great[test]> select * from test.tt2 \e

vi中替换表名字的操作就不再演示了,编辑后的执行情况如下:

Great[test]> select * from test.tt2 \e 
    -> ;
+------+------+------+------+
| id   | dd   | c1   | c2   |
+------+------+------+------+
|    1 | aaa  | NULL | NULL |
|    2 | bbb  | NULL | NULL |
|    3 | NULL | NULL | NULL |
|    4 | 8    | NULL | NULL |
|    5 | NULL | NULL | NULL |
+------+------+------+------+
5 rows in set (0.01 sec)

Great[test]>

另外在测试过程中,还发现\e可以对上一次执行的SQL进行编辑,即单独执行\e时,其实是对上次执行的SQL命令做编辑。

Great[test]> \e
select * from test.tt1

这里有人就会想到,我按向上的方向键,也能编辑上一条SQL呀,何必这么麻烦,这里有下面的SQL情况,有多次换行,或者结构更复杂的SQL

Great[test]> select * from test.z1
    -> join test.z2 
    -> using(id)
    -> limit 3;
+------+------+------+
| id   | name | name |
+------+------+------+
|    1 | 11   | 11   |
|    2 | 22   | 22   |
|   11 | 11   | 11   |
+------+------+------+
3 rows in set (0.00 sec)

如果按上的方向键,整个SQL语句结构就发生了变化,本来规整的SQL语句,变成了很长的一行,很难调整,但是使用\e就不会有这种情况,会保持之前的输入结构,更方便语句的调整

Great[test]> select * from test.z1
    -> join test.z2 
    -> using(id)
    -> limit 3;
+------+------+------+
| id   | name | name |
+------+------+------+
|    1 | 11   | 11   |
|    2 | 22   | 22   |
|   11 | 11   | 11   |
+------+------+------+
3 rows in set (0.00 sec)

Great[test]> \e

select * from test.z1
join test.z2
using(id)
limit 3

另外,有同学经常苦恼,我昨天才输入的SQL命令,如果需要重新执行,又得输入一遍,其实这里也有一个小技巧,通过快捷键CTRL+R,输入SQL中的关键信息(比如表名字),就能快速翻出对应的SQL,如果匹配出来的行不是想要的SQL,可以继续按CTRL+R继续上翻,直到查找到需要的SQL,当然,也有可能需要的SQL已经被清理出历史记录中,这种情况是无法被找到的。

ego(\G)

提交SQL语句到服务器,并且将返回的数据列式显示。

exit(\q)

退出mysql客户端连接。

go(\g)

提交SQL语句到服务器。

pager(\P)

设置pager规则,对查询结果执行pager规则后,再输出结果。这也是一个非常有用的设置,我们常常因为processlist结果太多而不方便查看,需要通过单行grep或者查询information_schema.processlist来实现,有这个工具后,我们看看效果

Great[test]> show processlist;
+---------+-----------------+--------------------+------+---------+---------+--------------------------------------------------------+----------------------------------+------------+-----------+---------------+
| Id      | User            | Host               | db   | Command | Time    | State                                                  | Info                             | Time_ms    | Rows_sent | Rows_examined |
+---------+-----------------+--------------------+------+---------+---------+--------------------------------------------------------+----------------------------------+------------+-----------+---------------+
|       6 | event_scheduler | localhost          | NULL | Daemon  | 5019248 | Waiting on empty queue                                 | NULL                             | 5019247326 |         0 |             0 |
|      26 | system user     |                    | NULL | Connect | 5018577 | waiting for handler commit                             | Group replication applier module | 5018576436 |         0 |             0 |
|      29 | system user     |                    | NULL | Query   |    1010 | Slave has read all relay log; waiting for more updates | NULL                             |    1010045 |         0 |             0 |
|      30 | system user     |                    | NULL | Query   |    1010 | Waiting for an event from Coordinator                  | NULL                             |    1010045 |         0 |             0 |
|      31 | system user     |                    | NULL | Query   |  100958 | Waiting for an event from Coordinator                  | NULL                             |  100956966 |         0 |             0 |
|      32 | system user     |                    | NULL | Query   |  100958 | Waiting for an event from Coordinator                  | NULL                             |  100956966 |         0 |             0 |
|      33 | system user     |                    | NULL | Connect | 5018577 | Waiting for an event from Coordinator                  | NULL                             | 5018576419 |         0 |             0 |
|      34 | system user     |                    | NULL | Connect | 5018577 | Waiting for an event from Coordinator                  | NULL                             | 5018576418 |         0 |             0 |
|      35 | system user     |                    | NULL | Connect | 5018577 | Waiting for an event from Coordinator                  | NULL                             | 5018576417 |         0 |             0 |
|      36 | system user     |                    | NULL | Connect | 5018577 | Waiting for an event from Coordinator                  | NULL                             | 5018576415 |         0 |             0 |
|      37 | system user     |                    | NULL | Connect | 5018577 | Waiting for an event from Coordinator                  | NULL                             | 5018576413 |         0 |             0 |
+---------+-----------------+--------------------+------+---------+---------+--------------------------------------------------------+----------------------------------+------------+-----------+---------------+
14 rows in set (0.00 sec)

Great[test]> \P grep -vE 'system user|Sleep'
PAGER set to 'grep -vE 'system user|Sleep''
Great[test]> show processlist;
+---------+-----------------+--------------------+------+---------+---------+--------------------------------------------------------+----------------------------------+------------+-----------+---------------+
| Id      | User            | Host               | db   | Command | Time    | State                                                  | Info                             | Time_ms    | Rows_sent | Rows_examined |
+---------+-----------------+--------------------+------+---------+---------+--------------------------------------------------------+----------------------------------+------------+-----------+---------------+
|       6 | event_scheduler | localhost          | NULL | Daemon  | 5019255 | Waiting on empty queue                                 | NULL                             | 5019255045 |         0 |             0 |
| 2460607 | Great         | 172.16.50.81:59062 | test | Query   |       0 | init                                                   | show processlist                 |          0 |         0 |             0 |
+---------+-----------------+--------------------+------+---------+---------+--------------------------------------------------------+----------------------------------+------------+-----------+---------------+
14 rows in set (0.01 sec)

Great[test]>

pager后面可以跟很多的shell命令,比如awk、grep、wc ,对结果集的处理,当SQL不方便处理而shell方便处理时,不用再使用-e参数每次都进行连接,然后处理,比如主从结构对Slave_IO_Running、Slave_SQL_Running的监控,可设置pager grep -E 'Slave_IO_Running|Slave_SQL_Running'。

pager的另外一个用途:经常有同学问,一些字段中是否有包含某些特定字符串,正常的SQL处理是需要写成col1 like '%abc%' or col2 like '%abc%'...,写出来后SQL结构相对复杂,通过pager设置pager grep -i abc; select * from tab即可方便查看。

nopager(\n)

pager的设置是整个session生命周期内都生效,通过执行nopager进行关闭设置

prompt(\R)

修改mysql客户端的命令行提示信息,支持显示的提示信息非常多,具体可以参见MySQL官网介绍。修改mysql客户端的命令行提示信息,也有好几种方式:

1、设置操作系统环境变量MYSQL_PS1 export MYSQL_PS1= " \D_\h_\p_\u > ",格式为"时间_主机_端口_用户名"

2、通过客户端的命令prompt修改 \R \D_\h_\p_\u >

3、通过my.cnf的[mysql]域进行配置

[mysql]
prompt="\R \D_\h_\p_\u > "

4、如果session中通过\R xxx临时修改了命令行提示信息,可以通过单独执行\R来恢复默认设置。

quit(\q)

退出当前session连接。

auto-rehash(#)

在使用mysql客户端连接服务器时,默认情况下会自动收集一些元数据信息,在后续输入SQL命令时可以通过tab键补齐命令,比如补齐表名字、列名字。

Great[test]> select * from tt(此时按tab键)
tt1     tt1.c1  tt1.c2  tt1.dd  tt1.id  ttt     ttt.id

但是如果在session中新建了表,或者给表上新增了字段,是无法通过tab键补齐的,这时通过\#命令刷新元数据信息,之后就能对新的DDL结构进行补齐

Great[test]> create table tt2 as select * from tt1;
Query OK, 5 rows affected (0.09 sec)
Records: 5  Duplicates: 0  Warnings: 0

Great[test]> select * from tt(此时按tab键)
tt1     tt1.c1  tt1.c2  tt1.dd  tt1.id  ttt     ttt.id  
Great[test]> \#
Great[test]> select * from tt(此时按tab键)
tt1     tt1.c1  tt1.c2  tt1.dd  tt1.id  tt2     tt2.c1  tt2.c2  tt2.dd  tt2.id  ttt     ttt.id  
Great[test]> select * from tt

source(.)

命令后需要跟一个文件名,\. filename会对filename文件中的内容按标准SQL进行解析执行。

status(\s)

输出本次连接的相关信息及服务器的一些信息,如果连接时指定了--safe-updates,还会输出查询限制相关的信息,\s输出了很多有用的信息,可仔细阅读。

[#8#root@Great81 ~ 20:26:13]8 m5 3306 --safe-updates 
greatsql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 916197

********

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

Great[(none)]> \s
--------------
********

Connection id:  916197
Current database: 
Current user:  Great@127.0.0.1
SSL:   Cipher in use is ECDHE-RSA-AES128-GCM-SHA256
Current pager:  stdout
Using outfile:  ''
Using delimiter: ;
**********
Protocol version: 10
Connection:  127.0.0.1 via TCP/IP
Server characterset: utf8mb4
Db     characterset: utf8mb4
Client characterset: utf8mb4
Conn.  characterset: utf8mb4
TCP port:  3306
Binary data as:  Hexadecimal
Uptime:   51 days 9 hours 5 min 13 sec

Threads: 16  Questions: 4354604  Slow queries: 339  Opens: 19188  Flush tables: 3  Open tables: 6095  Queries per second avg: 0.980

Note that you are running in safe_update_mode:
UPDATEs and DELETEs that don't use a key in the WHERE clause are not allowed.
(One can force an UPDATE/DELETE by adding LIMIT # at the end of the command.)
SELECT has an automatic 'LIMIT 1000' if LIMIT is not used.
Max number of examined row combination in a join is set to: 1000000

--------------

Great[(none)]>Great

system(!)

使用默认命令解释器执行给定命令,简单的说就是返回到操作系统执行\!之后的命令,比如下面

Great[(none)]> \! date
2022年 11月 16日 星期三 20:32:34 CST
Great[(none)]> \! pwd
/root
Great[(none)]> \! cd /Great
Great[(none)]> \! vmstat -w
procs -----------------------memory---------------------- ---swap-- -----io---- -system-- --------cpu--------
 r  b         swpd         free         buff        cache   si   so    bi    bo   in   cs  us  sy  id  wa  st
 1  0            0       358508            0      3117236    0    0   486    20    0    0   5   3  92   0   0
Great[(none)]>

在8.0.19之前,只支持在unix系统中使用该命令,到8.0.19后,在windows中也支持了该命令。

tee(\T)

将所有执行的SQL命令及输出结果保存到指定文件中。这在调测、生产维护过程中,都是非常有用的一个功能,特别是一些安全要求高的环境中,控制台只能显示几十行命令时,想要查找之前执行的命令及执行的结果比较难,此时就能用上\T了。

Great[(none)]> \T /root/a.log
Logging to file '/root/a.log'
Great[(none)]> select * from test.tt1;
+------+------+------+------+
| id   | dd   | c1   | c2   |
+------+------+------+------+
|    1 | aaa  | NULL | NULL |
|    2 | bbb  | NULL | NULL |
|    3 | NULL | NULL | NULL |
|    4 | 8    | NULL | NULL |
|    5 | NULL | NULL | NULL |
+------+------+------+------+
5 rows in set (0.01 sec)

Great[(none)]> \! cat /root/a.log
Great[(none)]> select * from test.tt1;
+------+------+------+------+
| id   | dd   | c1   | c2   |
+------+------+------+------+
|    1 | aaa  | NULL | NULL |
|    2 | bbb  | NULL | NULL |
|    3 | NULL | NULL | NULL |
|    4 | 8    | NULL | NULL |
|    5 | NULL | NULL | NULL |
+------+------+------+------+
5 rows in set (0.01 sec)

Great[(none)]> 

如果想要记录每个人登录数据库,做了哪些操作,由于tee不支持根据当前时间动态产生日志文件名,我们可以这样设置

## 首先创建一个log目录
mkdir -p /Great/logs/client/

## 然后设置环境变量,为了连接安全,建议使用--login-path的方式进行登录,我这里使用的是gdb1登录。

echo "alias mlogin='mysql --login-path=gdb1 --tee /Great/logs/client/\$(date +%Y-%m-%d_%H-%M-%S).log'" >> ~/.bashrc; source ~/.bashrc

[#15#root@Great81 /Great/logs/client 20:48:53]15 echo "alias mlogin='mysql --login-path=gdb1 --tee /Great/logs/client/$(date +\"%Y-%m-%d_%H-%M\").log'" >> ~/.bashrc; source ~/.bashrc

## 通过设置的alias登录数据库

[#16#root@Great81 /Great/logs/client 20:49:43]16 mlogin 
Logging to file '/Great/logs/client/2022-11-16_20-49.log'
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 916482
Great

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.

mysql> show tables from tpcc;
+------------------+
| Tables_in_tpcc   |
+------------------+
| bmsql_config     |
| bmsql_customer   |
| bmsql_district   |
| bmsql_history    |
| bmsql_item       |
| bmsql_new_order  |
| bmsql_oorder     |
| bmsql_order_line |
| bmsql_stock      |
| bmsql_warehouse  |
| datatypes1       |
| datatypes10      |
| datatypes11      |
| datatypes2       |
| datatypes3       |
| datatypes4       |
| datatypes5       |
| datatypes6       |
| datatypes7       |
| datatypes8       |
| datatypes9       |
+------------------+
21 rows in set (0.00 sec)

mysql>

我们发现指定的日志目录中,已经有了日志文件,并且记录了所有执行的SQL及输出结果

[#9#root@Great81 ~ 20:51:43]9 cd /Great/logs/client/
[#10#root@Great81 /Great/logs/client 20:51:48]10 ll
总用量 8
-rw-r--r-- 1 root root  627 11月 16 20:48 2022-11-16_20-48.log
-rw-r--r-- 1 root root 3214 11月 16 20:50 2022-11-16_20-49.log
[#11#root@Great81 /Great/logs/client 20:51:48]11

notee(\t)

取消\T设置,不再记录操作信息到日志文件中。

use(\u)

切换当前连接的database。

warnings(\W)

在执行完SQL语句后,立即显示warning信息,不需要再手动执行show warnings;了。

nowarnings(\w)

在执行完SQL语句后,不立即显示warning信息,需要手动执行show warnings;才会显示warning信息。

resetconnection(\x)

以新连接的状态重新连接到服务器,并且进行一些信息的清理及复位,不需要再次进行权限验证。主要影响如下信息:

  1. 回滚所有活动的事务,并重置自动提交模式。
  2. 所有DML锁均已释放。
  3. 所有TEMPORARY table 均已关闭(并删除)。
  4. 会话系统变量将重新初始化。
  5. 用户变量设置丢失。
  6. 准备好的语句被释放。
  7. HANDLER关闭。
  8. LAST_INSERT_ID 置为 0。
  9. 用 GET_LOCK 释放。

可以参考8.0.26的代码libmysql.cc中4429~4444行

int STDCALL mysql_reset_connection(MYSQL *mysql) {
  DBUG_TRACE;
  if (simple_command(mysql, COM_RESET_CONNECTION, nullptr, 0, 0))
    return 1;
  else {
    mysql_detach_stmt_list(&mysql->stmts, "mysql_reset_connection");
    /* reset some of the members in mysql */
    mysql->insert_id = 0;
    mysql->affected_rows = ~(uint64_t)0;
    free_old_query(mysql);
    mysql->status = MYSQL_STATUS_READY;
    mysql_extension_bind_free(MYSQL_EXTENSION_PTR(mysql));
    return 0;
  }
}

query_attributes

通过query_attributes var1 value1 var2 value2来设置变量,然后通过mysql_query_attribute_string('var1')返回变量值value1,目前来看,并没有发现特殊的使用方法,毕竟我们也可以通过set @var1='value1'来设置。

使用体验

mysql Client Commands在某些场景下,可以极大的提高我们的操作效率,相对于完整的命令ego、pager、edit等,我更喜欢使用他们的简写命令\G、\P、\e,因为有时候完整命令不确定如何正确使用,会导致不生效,但是简写命令,是一定会生效的。

参考文章

MySQL 8.0 Reference Manual 4.5.1.2 mysql Client Commands

MySQL 8.0 Reference Manual 9.6 Query Attributes


Enjoy GreatSQL :)

关于 GreatSQL

GreatSQL是由万里数据库维护的MySQL分支,专注于提升MGR可靠性及性能,支持InnoDB并行查询特性,是适用于金融级应用的MySQL分支版本。

相关链接: GreatSQL社区 Gitee GitHub Bilibili

GreatSQL社区:

捉虫活动详情:https://greatsql.cn/thread-97-1-1.html

社区博客有奖征稿详情:https://greatsql.cn/thread-100-1-1.html

6440

Anylabeling与SAM协同:从智能标注到YOLO数据集构建的完整实践 本文详细介绍了Anylabeling与SAM协同标注的完整实践,从智能标注到YOLO数据集构建的全流程。通过结合SAM的自动分割能力和Anylabeling的交互式标注,显著提升标注效率,特别适合小样本、复杂形状和多类别标注场景。文章还提供了环境搭建、标注优化技巧以及YOLO格式转换的实用指南。 阅读详情

相关推荐

Qualcomm工具的使用

简介   由于我们公司主要是以高通平台为主,所以工具的使用是必不可少的,包括QPST、QRCT3、QXDM、QDART等。   高通工具顾名思义就是,对于高通平台的软件开发进行软件的烧录,软件的调试,软件的Log的抓取和分析过程,像我们平常用的大致就是烧版本、改NV、制作QCN、然后校准、强发强收等操作。 QPST   QPST主要是用来做一些参数的配置,包括EFS文件的编辑,QCN的导入和备份与...

Jimmy 2万+

Mysql通过system命令调用系统shell命令

CleverCode发现可以通过system + 系统shell命令。来执行一些系统方法shell命令。 1 ? 显示帮助。system (\!) Execute a system shell command. system date;系统日期。 sytem pwd;system whoami;system clear;等 技术交流 Clever...

CleverCode的博客 1万+

.ipynb文件深度解析:从JSON结构到Jupyter Notebook高效使用指南

在Python开发与数据处理领域,交互式编程正成为探索数据与验证思路的高效方式。Jupyter Notebook作为最流行的交互式环境之一,其默认文件格式.ipynb本质是一个基于JSON的文本文件,内部通过单元格组织代码、说明文字与运行结果。理解其JSON结构,不仅有助于掌握Notebook的存储原理,更能为文件损坏修复、版本控制与自动化转换提供基础。依托对单元格类型、魔法命令及输出可视化的熟练运用,数据分析和数据可视化流程可以变得更为流畅。同时,借助VS Code、nbconvert等工具,开发者能将.

weixin_28839629的博客 350

MYSQL tee的功能测试

   Mysql将结果保存到文件,从文件中执行sql语句记录操作过程(tee命令的使用)     1. 有时候我们可能需要记录用户对mysql的操作过程,这时我们可以使用mysql的tee命令 1)第一种情况是在链接数据库的时候使用tee >mysql -u root -p --tee=C:\log.txt //注意这里路径不需要加上引号 这时我们对数据库的所有操作都会记录在lo...

飘过的春风 4688

普罗米修斯监控达梦数据库集群

-----------------------------------新增文件---------------------------------------注:图上即为启动成功,如果没有问题,则使用nohup后台启动程序。官网地址:https://github.com/gy297879328/dameng_exporter。注:prometheus的对数据库的指标采集如果高于60s一次,请手动修改提供表盘中的计算值。修改dameng_exporter.config配置文件,修改账号密码的部分。

weixin_49985403的博客 1682

单机多环境部署apollo 2.3.0

理解apollo的整体架构后,对比nacos配置中心功能点,其设计的复杂度以及完整度相较nacos而言更为丰富 对于不同的环境,例如 FAT, PRO 在部署时进程已经完全物理隔离,并且每个环境config/adminservice依赖的数据也完全物理隔离(连接不同的db),在数据隔离与安全方面做的很完善,但同时也提升了架构的复杂度 而 portal 可以管理多个环境,单节点部署虽然有单点问题,但并不会影响业务从configservice读取配置, 挂掉只要重启就可以,只是在

Life is a starting point everywhere 1299

【MySQL】—— MySQL命令行客户端介绍

MySQL命令行客户端介绍

m0_56069910的博客 4209

来自工业界的知识库 RAG 服务(二),RagFlow 源码全流程深度解析

前面介绍过有道 QAnything 源码解析,通过深入了解工业界的知识库 RAG 服务,得到了不少调优 RAG 服务的新想法。因此本次趁热打铁,额外花费一点时间,深入研究了另一个火热的开源 RAG 服务RagFlow的完整实现流程,希望同样有所收获。首先依旧可以先从框架图入手,与常规的 RAG 架构进行一些比较可以看到右侧知识库被明显放大,同时最右侧详细介绍了文件解析的各种手段,比如OCR等,这些在常规的 RAG 中可能会作为一个不起眼的。

易迟的专栏 2万+

MySQL数据库学习

desc 表名 查询表的所有字段 MariaDB [mysql]> desc user -> ; +------------------------+---------------------+------+-----+----------+-------+ | Field | Type | Null | Key | Default | Extra | +------------------------+------.

qq_36542576的博客 3156

全志DRM框架下LVDS双屏异显配置实战

本文详细介绍了在全志DRM框架下配置LVDS双屏异显的实战经验。涵盖硬件连接、内核配置、设备树修改、背光控制及U-Boot适配等关键步骤,重点解析屏参转换技巧与双屏route配置,帮助开发者解决工业控制台等多屏应用中的显示适配问题,提升开发效率。

rnn9storyteller的博客 813

7.5华为OD机试真题 新系统 - 省超足球比赛获胜队伍计算 (Java/Py/C/C++/Js/Go)

7.5华为OD机试真题 新系统 - 省超足球比赛获胜队伍计算 (Java/Py/C/C++/Js/Go)

算法大师! 822

MySQL介绍及使用

MySQL 是一个关系型数据库管理系统(RDBMS),使用结构化查询语言(SQL)来管理和操作数据。“关系”在这里指的是二维表格(表 / table),每张表由行(row)和列(column)组成,数据以结构化形式存储。名称说明数据库(Database)数据的集合,一个数据库中可以有多张表表(Table)类似 Excel 表格,用来存储结构化数据行(Row)表中的一条记录,例如一个用户信息列(Column)数据的字段,比如姓名、年龄、邮箱等主键(Primary Key)

m0_67790484的博客 3686

ubuntu20.04屏幕亮度无法调节(亮度条调节无效)的简单靠谱解决方案及踩坑历程

0 前言   网上关于ubuntu系统亮度无法调节的问题的解决方法有很多,但是绝大部分并没有什么用(这也是我自己的亲身体会),或者并不靠谱。在遍尝各路方法过后,我终于解决了这一棘手的问题(毕竟最大亮度真的非常刺眼,无法长时间直视),在此记录一下踩坑历程以及最后的解决方案。 1 Naive方法   由于使用需要,最近在电脑原有的win10基础上安装了ubuntu双系统。我安装的是当前新版的ubuntu20.04.2.0,靠谱的安装教程可以参考这里。   之前师兄说双ssd安装双系统会有系统启动引导的问题出现,

zeeq的博客 4万+

MySQL 客户端的进阶操作

另外,有同学经常苦恼,我昨天才输入的SQL命令,如果需要重新执行,又得输入一遍,其实这里也有一个小技巧,通过快捷键CTRL+R,输入SQL中的关键信息(比如表名字),就能快速翻出对应的SQL,如果匹配出来的行不是想要的SQL,可以继续按CTRL+R继续上翻,直到查找到需要的SQL,当然,也有可能需要的SQL已经被清理出历史记录中,这种情况是无法被找到的。这里有人就会想到,我按向上的方向键,也能编辑上一条SQL呀,何必这么麻烦,这里有下面的SQL情况,有多次换行,或者结构更复杂的SQL。

快乐的搬砖的博客 380

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

mysql进阶,03-事务2-多个客户端一起操作时的情况

》开两个数据库的客户端 斜体样式

pyhui的技术博客 478

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

MySQL从入门到精通(三):客户端工具详解

本文详细介绍了各种MySQL客户端工具,从命令行客户端的高级用法,到图形界面工具的功能特点,再到开发环境中的数据库集成。选择合适的工具可以显著提高工作效率,不同工具适合不同的使用场景和用户习惯。掌握这些工具后,你可以根据需要灵活选择,提高数据库操作和管理效率。在下一篇文章中,我们将介绍SQL基础操作数据库和表的创建与管理数据类型详解基本的CRUD操作约束和索引SQL查询基础敬请期待!🚀关注我,不错过更多MySQL干货!🔔💬评论区留下你的问题,我们一起讨论!

m0_65382359的博客 1420

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

mysql客户端

mysql api c客户端:https://www.yuque.com/linuxer/linux_senior/rcz4xl hiredis的使用:https://www.yuque.com/linuxer/linux_senior/ofs3au

qq_35975827的博客 165

MySQL及Navicat客户端的安装及使用

一、MySQL数据库简介 mysql是一种开放源代码关系型数据库管理系统(RDBMS)。 目前很多大公司(新浪、京东、阿里等)都在使用mysql,对数据的处理非常快。 适应于所有的平台。 支持多线程,充分利用CPU资源,性能很出色。 价格便宜。 大数据库处理。–对某些包含50,000,000个记录的数据库使用MySQL完全没有问题。 使用最多的版本是5.5。二、下载安装MySQL及Na

吃果冻不吐果冻皮 4781

MySQL

安装MySql 一、引言 1.1 现有的数据存储方式有哪些? Java中存储数据(变量、对象、数组、集合),数据都是保存在内存中,属于瞬时状态存储 文件(File)存储数据,保存在硬盘上,属于持久化状态存储 1.2 以上存储方式有哪些缺点? 程序停止了,数据就没有了 文件存储的数据,没有数据类型的区分 没有访问安全限制 没有备份、恢复机制 二、数据库 2.1概念 数据库是 按照数据结构来...

Null_Kun 1318

MySQL数据库的操作(安装+语法基础+进阶)详解

** 安装部分 . 安装mysql 下载地址:https://dev.mysql.com/downloads/mysql/ 此处安装解压版的,下载对应的32/64位压缩包,解压到指定位置即可。 .mysql目录解析 """ bin 执行文件 mysqld 服务器主程序 mysql 无界面的客户端 data 数据文件 my-default.ini 配置文件模板 启动服务器 ...

我不会玩csdn,我兄弟没面子。 279

MySQL知识回顾_MySQL基础知识回顾

MarkdownPad DocumentMySQLMySQL:是用于管理文件的一个软件-服务端软件-socket服务端-本地文件操作-解析指令【SQL语句】-客户端软件(各种各样)-socket客户端-发送指令-解析指令【SQL语句】PS:-DBMS:数据库管理系统-SQL语句需要掌握的技能:-安装服务端和客户端-连接-学习SQL语句规则;指示服务端做任意操作其他类似软...

weixin_29212867的博客 66

MySQL 8.0 命令行客户端进阶:5个高效查询与管理的隐藏技巧

本文深入探讨MySQL 8.0命令行客户端的5个高级技巧,包括交互式历史命令、结果格式化输出、批量执行与脚本调试、系统状态实时监控以及高级配置与自定义提示符。这些技巧能显著提升开发者和DBA的数据库管理效率,特别适合远程服务器管理和自动化脚本开发。

weixin_32050773的博客 256

布尔教育mysql_布尔教育最新Mysql教程 Mysql入门到实战 基于php讲解 付源码

基础MySQL基础01 数据库概念.wmvMySQL基础_02 客户端概念.wmvMySQL基础_03 表与库概念.wmvMySQL基础_04 phpMyadmin操作.wmvMySQL基础_05 insert.wmvMySQL基础_06 update.wmvMySQL基础_07 delete.wmvMySQL基础_08 select(只按主键查).wmvMySQL基础_09 留言板建表实例.wm...

weixin_39993989的博客 103

【模块一】kubernetes容器编排进阶实战之containerd安装及nerdctl客户端⼯具

通过官⽅⼆进制安装containerd、runc及CNI,kubernetes从 v1.24.0开始默认使⽤containerd作为容器运⾏时,因 此需要提前安装好containerd之后在安装v1.24或更⾼版本的kubernetes(如果要继续使⽤docker,则需要单独安装 docker及cri-dockerd、

运维&陈同学的博客 1309

ubuntu mysql 使用,Ubuntu安装和使用mysql的简单示例

安装MysqL的客户端---- 来自jb51.ccsudo apt-get install -y MysqL-serversudo apt-get isntall -y MysqL-clientsudo apt-get install -y libMysqLclient-dev查看版本---- 来自jb51.ccMysqL --versionMysqL Ver 14.14 Distrib 5.5....

weixin_35101659的博客 247

MySQL基本操作(复习篇)

本文系统介绍了MySQL数据库的核心操作,涵盖客户端连接、数据库管理、表操作、CRUD增删改查、数据库约束、表设计范式、关系模型、聚合函数、分组查询以及联合查询等关键知识点。内容从基础命令到高级查询,提供了完整的MySQL操作指南,适合初学者快速掌握MySQL基本操作。

2502_92960941的博客 150
上一篇: MySQL8.0 show create view BUG解析
下一篇: MySQL如何快速恢复单表(物理方式)
GreatSQL社区
博客等级 码龄5年 1210粉丝 390原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值