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

258 阅读3分钟

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

运行容器

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

docker pull mysql:5.7

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

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

进入容器:

docker exec -it hi-mysql bash

如用docker-compose,可在 command 中指定变量:

command: ['mysqld', '--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci', '--explicit_defaults_for_timestamp=false', '--lower_case_table_names=1']

连接 mysql

容器内:

mysql -uroot -p123456

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

apt install mysql-client-core-5.7

连接容器:

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

远程:

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

操作

连接成功提示:

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命令行:

exit

查看数据库:

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

创建数据库,名称为mydb:

mysql> CREATE DATABASE mydb;

选择mydb数据库:

mysql> USE mydb;

创建数据表user:

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数据表字段内容:

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表插入数据:

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,但测试未发现

查看已经插入了的数据:

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)

更新数据:

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表所有数据:

mysql> DELETE FROM user;

删除user数据表:

mysql> DROP TABLE user;

删除数据库mydb:

mysql> DROP DATABASE mydb;

查询倒数10条记录:

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

中文:

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)