Docker安装
[Mac]
- 按照官方教程下载.dmg安装即可
设置国内镜像 教程,设置完后重启Docker
[Windows]
下载Docker for Windows Installer,安装
$ docker --version
查看版本号- 设置国内镜像,然后重启Docker,重启Docker
$ docker run hello-world
输出 Hello from Docker!
Docker安装MySQL
- 进入Docker上MySQL的主页
- 选择版本
- 使用docker run命令启动容器
$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
- —name后面 some-mysql 是容器的名字
- MYSQL_ROOT_PASSWORD是密码
- tag是版本号,这里选用 5.7.27
- 再加上端口映射
-p 3306:3306
- 最终命令如下
$ docker run --name mysql1 -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql:5.7.27
Docker命令
$ docker ps
查看容器运行状态$ docker kill <container name>
关闭容器$ docker container start <container name>
开启关闭的容器$ docker rm <container name>
移除容器,必要时可加 -f 强制执行$ docker run ...
启动新容器
Docker注意事项
- 用docker运行的容器默认不会持久化
- 如果容器被删除后,数据也会被删除
- 想要持久化,搜 【docker mysql 数据目录】
命令行连接MySQL
$ docker exec -it mysql1 bash
运行后会进入容器,容器中有一个Linux系统,在这个系统中运行MySQL
MySQL命令
$ mysql -u root -p
输入密码 123456进入mysql$ show databases;
查看数据库列表$ use xxx;
使用xxx数据库$ use sys;
使用sys数据库$ show tables;
查看所有表$ select * from CHARACTER;
查看CHARACTER表的内容其他命令行操作
CTRL + C 中断命令, 比如输错命令
- CTRL + D 用于退出,比如退出mysql ,bash等
数据库基础知识
什么是数据库DataBase?
将大量数据保存起来 ,通过计算机加工而成可以进行高效访问的数据集合称为数据库
一般根据数据保存格式不同,数据库一般分为
比如 MySQL、PostgreSQL、SQL Server、DB2、Oracle
DBMS结构
使用的mysql命令就是一个客户端
而mysql背后还有一个server在24小时不断运行着
Node.js连接数据库
$ yarn add mysql
- test.js ```javascript var mysql = require(‘mysql’); var connection = mysql.createConnection({ host: ‘localhost’, user: ‘root’, password: ‘123456’ });
connection.connect();
connection.query(‘CREATE DATABASE IF NOT EXISTS gouson DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_unicode_520_ci;’, function (error, results, fields) { if (error) throw error; console.log(‘创建数据库’); }); connection.query(‘use gouson’)
connection.query(CREATE TABLE IF NOT EXISTS user(
name text,
age int
)
, function (error, results, fields) {
if (error) throw error;
console.log(‘创建表’)
console.log(results);
});
connection.end();
`$ node test.js`
- 查看一下所创建的表
- `$ docker exec -it mysql1 bash`
- `$ mysql -u root -p`
- `$ show databases;`
- `$ use gouson;`
- `$ show tables;`
- `$ describe user;`
- ![image.png](https://cdn.nlark.com/yuque/0/2021/png/734550/1612166928089-ac046e97-7a99-41d3-939e-247be86b4948.png#height=138&id=sg8CC&margin=%5Bobject%20Object%5D&name=image.png&originHeight=138&originWidth=456&originalType=binary&size=8073&status=done&style=none&width=456)
- 删除一个表
- `$ DROP table user;`
- 删除一个数据库
- `$ DROP database gouson;`
- 插入一条数据
- `$ use gouson;`
- `$ insert into user (name,age) values ('frank',18);`
- 查询表内容
- `$ select * from user;`
- 更改数据
- `$ update user set age = 70 where name = 'frank';`
- 删除一条数据
- `$ delete from user where name = 'frank';`
<a name="k42d9"></a>
# MySQL数据类型
- 五大类
- 数字类型
- 字符串类型
- 时间和日期类型
- JSON类型(5.7.8以上)
- 其他特殊类型
<a name="GzcSy"></a>
## 数字类型
- bit
- tinyint
- bool,boolean
- smallint
- mediumint
- int
- bigint
- decimal
- float
- double
- serial 等级于 BIGNIT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE
<a name="ETI20"></a>
## 字符串类型
- char(100)
- varchar(100)
- binary(1024)
- varbinary(1024)
- blob
- text
- enum('v1','v2')
- set('v1','v2')
<a name="RxwRZ"></a>
## 时间和日期类型
- date
- time
- datetime
- timestamp
- yaer
<a name="UELpm"></a>
### IOS 8601
[如何把日期输出为ISO 8601格式](https://stackoverflow.com/questions/9321809/format-date-in-mysql-select-as-iso-8601)
<a name="rOxwP"></a>
# Sequelize.js
[Sequelize ORM](https://sequelize.org/)<br />`$ yarn add --save sequelize`
```javascript
const {
Sequelize,
Model,
DataTypes
} = require('sequelize');
const sequelize = new Sequelize('sqliz', 'root', '123456', {
// host:''
dialect: 'mysql'
});
//创建User模型
class User extends Model {}
//初始化User
User.init({
name: DataTypes.STRING,
age: DataTypes.INTEGER
}, {
sequelize,
modelName: 'user' //表名
});
//同步到数据库
sequelize.sync()
//创建一条记录
.then(() => User.create({
name: 'janedoe',
age: 15
}))
//打印结果
.then(jane => {
console.log(jane.toJSON());
});