Node.js操作数据库

141 阅读2分钟

Docker安装数据库

注册docker设置国内镜像

确保 docker --versiondocker run hello-world 输出正确

docker安装成功后,启用MySQL容器

docker run hello-world    // Hello from Docker!
docker --version
docker run --name mysql1 -e  MYSQL_ROOT_PASSWORD=12345678 -p 3306:3306 -d mysql:5.7.27

这里有坑:

  1. 如果你使用了MySQL8.0,那么在node.js连接数据库时使用的mysql客户端将不支持这个版本服务器所请求的身份验证协议。
  2. 如果你在本地已经装了MySQL其他版本,就要设置与原来MySQL不同的密码,并右键我的电脑->管理->终止原来的MySQL服务,否则会导致docker运行的和本地的MySQL冲突而无法用nodejs连接docker运行的。

Docker命令

docker ps    // 查看容器运行状态
docker kill mysql1    // 关掉容器
docker container run mysql1    // 开启刚关掉的容器
docker rm mysql1    // 删掉容器,必要时可加-f选项
docker run    // 启动新容器

Mysql命令

docker exec -it mysql1 bash    // 进入容器,运行mysql
mysql -u root -p    // 12345678
show databases;     // 查看数据库列表
use xxx;            // 使用xxx数据库
use sys;            // 使用默认的sys数据库
show tables;        // 查看所有表
select* from CHARACTER_SETS;  // 查看表内容

命令行

ctrl + d 用于退出mysql、bash

注意:

用 Docker运行的容器,默认不会持久化。 也就是说如果容器被删掉了,那么数据也没了 如果需要持久化,自行搜索「docker mysql数据目录」

MySQL数据类型

  • 数字:bit、tinyint、bool/boolean、smallint、mediumint、int、bigint、decimal、float、double、serial【等价于BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE】
  • 字符串:char(100)、varchar(100)、binary(1024)、varbinary(1024)、blob、text、enum('v1', 'v2')、set('v1', 'v2')
  • 时间和日期:data、time、datetime、timestamp、year【如何把日期输出为ISO 8601格式
  • JSON(5.7.8+)
  • 其他

nodejs连接数据库

搜mysqljs,下载mysql客户端 yarn add mysql,并用node运行下列代码

var mysql = require('mysql');
var connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '12345678',
});

connection.connect();

connection.query('CREATE DATABASE IF NOT EXISTS lu DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci;',
    function (error, results, fields) {
        if (error) throw error;
        console.log('创建健数据库');
    });
connection.query('use lu;')
connection.query(`CREATE TABLE IF NOT EXISTS user(
    name text,
    age int
)`, function (error, results, fields) {
    if (error) throw error;
    console.log('创建表');
});

connection.end();

ORM(关系映射库):Sequelize.js

像操作对象一样操作数据库:搜索sequelize

yarn add sequelize
yarn add --dev @types/sequelize      // sequelize代码提示
yarn add mysql2