我的docker随笔14:MySQL操作实例

本文使用docker运行MySQL,并进行简单的操作。

运行容器

本文使用的MySQL为官方镜像,版本为5.7。下载镜像命令:

1
docker pull mysql:5.7

使用下面的命令运行容器,并设置root密码为123456。

1
2
3
run --name hi-mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql
映射端口:
run --name hi-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql

进入容器:

1
docker exec -it hi-mysql bash

连接 mysql

容器内:

1
mysql -uroot -p123456

宿主机:
先安装 mysql 客户端:

1
apt install mysql-client-core-5.7

连接容器:

1
mysql -h 127.0.0.1 -P 3306 -u root -p123456

远程:

1
mysql -h 120.97.3.9 -P 3305 -u root -p123456

操作

连接成功提示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
mysql: [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 11
Server version: 5.7.20 MySQL Community Server (GPL)

Copyright (c) 2000, 2017, 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>

mysql>后即可输入sql语句。sql语句使用分号“;”作为结束符号。

退出mysql命令行:

1
exit

查看数据库:

1
2
3
4
5
6
7
8
9
10
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)

创建数据库,名称为mydb:

1
mysql> CREATE DATABASE mydb;

选择mydb数据库:

1
mysql> USE mydb;

创建数据表user:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
mysql> CREATE TABLE `user` (
`id` bigint(20) NOT NULL,
`email` varchar(255) DEFAULT NULL,
`first_name` varchar(255) DEFAULT NULL,
`last_name` varchar(255) DEFAULT NULL,
`username` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

// id值为自增
mysql> CREATE TABLE `user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`email` varchar(255) DEFAULT NULL,
`first_name` varchar(255) DEFAULT NULL,
`last_name` varchar(255) DEFAULT NULL,
`username` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

查看user数据表字段内容:

1
2
3
4
5
6
7
8
9
10
11
mysql> DESC user;
+------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| id | bigint(20) | NO | PRI | NULL | |
| email | varchar(255) | YES | | NULL | |
| first_name | varchar(255) | YES | | NULL | |
| last_name | varchar(255) | YES | | NULL | |
| username | varchar(255) | YES | | NULL | |
+------------+--------------+------+-----+---------+-------+
5 rows in set (0.02 sec)

往user表插入数据:

1
2
3
4
5
6
7
mysql> INSERT INTO `user` (`id`, `email`, `first_name`, `last_name`, `username`)
VALUES(0,'li@latelee.org','Late','Lee','latelee');

// 自增情况下,不输入ID
mysql> INSERT INTO `user` (`email`, `first_name`, `last_name`, `username`)
VALUES('li@latelee.org','Late','Lee','foobar');
// 注:网上有说法id默认自增为2,但测试未发现

查看已经插入了的数据:

1
2
3
4
5
6
7
mysql>  SELECT * FROM user;
+----+----------------+------------+-----------+----------+
| id | email | first_name | last_name | username |
+----+----------------+------------+-----------+----------+
| 0 | li@latelee.org | Late | Lee | latelee |
+----+----------------+------------+-----------+----------+
1 row in set (0.00 sec)

更新数据:

1
2
3
mysql>  UPDATE user SET email='you@163.com' WHERE username='foobar';

mysql> UPDATE user SET email='you11@163.com', first_name='Kent' WHERE username='foobar';

删除user表所有数据:

1
mysql> DELETE FROM user;

删除user数据表:

1
mysql> DROP TABLE user;

删除数据库mydb:

1
mysql> DROP DATABASE mydb;

查询倒数10条记录:

1
2
SELECT top 10 * FROM [dbo].[RealTimeData] ORDER BY i desc;  // sqlserver
SELECT * FROM RealTimeData ORDER BY id desc limit 10; // mysql

中文:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
mysql> CREATE TABLE `userc` (
`信息id` bigint(20) NOT NULL AUTO_INCREMENT,
`邮箱地址` varchar(255) DEFAULT NULL,
`名` varchar(255) DEFAULT NULL,
`姓` varchar(255) DEFAULT NULL,
`姓名` varchar(255) DEFAULT NULL,
PRIMARY KEY (`信息id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

mysql> desc userc;
+--------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+----------------+
| 信息id | bigint(20) | NO | PRI | NULL | auto_increment |
| 邮箱地址 | varchar(255) | YES | | NULL | |
| 名 | varchar(255) | YES | | NULL | |
| 姓 | varchar(255) | YES | | NULL | |
| 姓名 | varchar(255) | YES | | NULL | |
+--------------+--------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)