MySQL Note

References

Note 1

Note for MySQL 教程

安装

在 macOS 上的安装很简单,直接用 brew 安装:

$ brew install mysql

启动服务端:

$ mysql.server start
// 或者
$ brew services start mysql

停止服务端:

$ mysql.server stop
// 或者
$ brew services stop mysql

使用客户端连接:

$ mysql

直接用 mysql 命令,不加任何选项连接 mysql 服务端时,默认是以当前系统的用户名登录,且密码为空,比如当前系统的用户名为 boo,则 mysql 命令相当于:

$ mysql -u foo

但是用 brew 命令安装的 MySQL 并没有自动生成一个和当前系统用户同名的 user,因此登录会失败,但 MySQL 安装后自动生成了一个名为 root 且密码为空的用户,因此可以用下面的命令登录:

$ mysql -u root
mysql >

可以用 mysqladmin 命令为 root 用户设置密码,比如设置密码为 bar:

$ mysqladmin -u root password bar

为 root 设置了错误的密码后,如何修改或清除 - How to remove MySQL root password

修改:

$ mysqladmin -u root -pType_in_your_current_password_here password new_pwd

清除:

$ mysqladmin -u root -pType_in_your_current_password_here password ''

重新以用户名和密码登录:

$ mysql -u root -p
Enter password: ****
mysql >

管理

进入 mysql 命令行后如何退出,用 \q 命令:

mysql > \q

显示所有数据库:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

注意,命令遇到 ; 才会真正执行。

切换数据库:

mysql> use mysql;

mysql 是 MySQL 默认自带的数据库,里面放的是 MySQL 的管理数据,比如 user 表,存的就是所以允许登录 mysql 的用户,及其密码,权限。

显示当前数据库中的所有表:

mysql> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| ...                       |
| user                      |
+---------------------------+
31 rows in set (0.00 sec)

显示某个表的所有列:

mysql> show columns from user;

显示某个表的所有索引:

mysql> show index from user;

增加用户,管理用户权限,暂略。

创建、删除数据库

创建:

$ mysqladmin -u root -p create RUNOOB
Enter pasword: ****

如果没有密码,就不用 -p 选项。

删除:

$ mysqladmin -u root -p drop RUNOOB

选择数据库,前面讲了,先登录,再用 use 命令。

数据类型

分三大类:数值、日期 / 时间、字符串。

详略。

其它

其它,略,看 PostgreSQL Note。

包括表的创建、删除、修改,记录的 CRUD (Create / Retrieve / Update / Delete)。

  • create / drop / alter a database
  • create / drop / alter a table of a database
  • add / drop / alert / rename a column of a table
  • insert / select / update / delete records for table

Dump

导出:

$ mysqldump -u root -p database_name > dump.txt

如果没有密码,则不用 -p 选项。

如果只需要导出单个表,则用:

$ mysqldump -u root -p database_name table_name > dump.txt

导入:

$ mysql -u root -p database_name < dump.txt

应该要确保当前 database_name 中没有数据,如果有,可以先把它 drop 掉,再重新 create,然后导入。

另一种方式:

$ mysql -u root -p
mysql > use database_name;
mysql > source ~/path/dump.txt

上面只是最简单的用法,更复杂的用法需要时再看。

group_concat()

对分组后的字符串列的内容进行聚合,可以使用 group_concat() 方法,默认分隔符为 ","。

\G

将结果按列输出,比如:

mysql> select * from PERFORMANCE_SCHEMA.cluster_events_statements_summary_by_digest_history limit 1\G
*************************** 1. row ***************************
                  ADDRESS: 127.0.0.1:10080
       SUMMARY_BEGIN_TIME: 2020-03-09 22:00:00
         SUMMARY_END_TIME: 2020-03-09 22:30:00
                STMT_TYPE: select
              SCHEMA_NAME:
                   DIGEST: e0cf0e2dccc824f34e52c6341356354f77cce9342074b393bc0185304e075ea3
              DIGEST_TEXT: select original_sql , bind_sql , default_db , status , create_time , update_time , charset , collation from mysql . bind_info where update_time > ? order by update_time
              TABLE_NAMES: mysql.bind_info
              INDEX_NAMES: bind_info:time_index
              SAMPLE_USER: NULL
               EXEC_COUNT: 376

results matching ""

    No results matching ""