Docker安装

注册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?

将大量数据保存起来 ,通过计算机加工而成可以进行高效访问的数据集合称为数据库

一般根据数据保存格式不同,数据库一般分为

  • 关系型数据库 (使用最为广泛)
  • 面向对象数据库、XML数据库、键值存储系统、层次数据库

    数据库管理系统

    用来管理数据库的系统称为数据库管理系统

比如 MySQL、PostgreSQL、SQL Server、DB2、Oracle

DBMS结构

image.png
使用的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();

  1. `$ node test.js`
  2. - 查看一下所创建的表
  3. - `$ docker exec -it mysql1 bash`
  4. - `$ mysql -u root -p`
  5. - `$ show databases;`
  6. - `$ use gouson;`
  7. - `$ show tables;`
  8. - `$ describe user;`
  9. - ![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)
  10. - 删除一个表
  11. - `$ DROP table user;`
  12. - 删除一个数据库
  13. - `$ DROP database gouson;`
  14. - 插入一条数据
  15. - `$ use gouson;`
  16. - `$ insert into user (name,age) values ('frank',18);`
  17. - 查询表内容
  18. - `$ select * from user;`
  19. - 更改数据
  20. - `$ update user set age = 70 where name = 'frank';`
  21. - 删除一条数据
  22. - `$ delete from user where name = 'frank';`
  23. <a name="k42d9"></a>
  24. # MySQL数据类型
  25. - 五大类
  26. - 数字类型
  27. - 字符串类型
  28. - 时间和日期类型
  29. - JSON类型(5.7.8以上)
  30. - 其他特殊类型
  31. <a name="GzcSy"></a>
  32. ## 数字类型
  33. - bit
  34. - tinyint
  35. - bool,boolean
  36. - smallint
  37. - mediumint
  38. - int
  39. - bigint
  40. - decimal
  41. - float
  42. - double
  43. - serial 等级于 BIGNIT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE
  44. <a name="ETI20"></a>
  45. ## 字符串类型
  46. - char(100)
  47. - varchar(100)
  48. - binary(1024)
  49. - varbinary(1024)
  50. - blob
  51. - text
  52. - enum('v1','v2')
  53. - set('v1','v2')
  54. <a name="RxwRZ"></a>
  55. ## 时间和日期类型
  56. - date
  57. - time
  58. - datetime
  59. - timestamp
  60. - yaer
  61. <a name="UELpm"></a>
  62. ### IOS 8601
  63. [如何把日期输出为ISO 8601格式](https://stackoverflow.com/questions/9321809/format-date-in-mysql-select-as-iso-8601)
  64. <a name="rOxwP"></a>
  65. # Sequelize.js
  66. [Sequelize ORM](https://sequelize.org/)<br />`$ yarn add --save sequelize`
  67. ```javascript
  68. const {
  69. Sequelize,
  70. Model,
  71. DataTypes
  72. } = require('sequelize');
  73. const sequelize = new Sequelize('sqliz', 'root', '123456', {
  74. // host:''
  75. dialect: 'mysql'
  76. });
  77. //创建User模型
  78. class User extends Model {}
  79. //初始化User
  80. User.init({
  81. name: DataTypes.STRING,
  82. age: DataTypes.INTEGER
  83. }, {
  84. sequelize,
  85. modelName: 'user' //表名
  86. });
  87. //同步到数据库
  88. sequelize.sync()
  89. //创建一条记录
  90. .then(() => User.create({
  91. name: 'janedoe',
  92. age: 15
  93. }))
  94. //打印结果
  95. .then(jane => {
  96. console.log(jane.toJSON());
  97. });