mysql2模块,Mysql学习基础功能与Node的Mysql2模块学习了解

Mysql

是一种关系型数据库管理系统 是按照数据结构来组织、存储和管理数据的仓库。

可以对数据进行增删改查 在我们开发当中用的最多的也就这四句了不知道说的对不对哈 !

剩下对创建表等什么的操作都用可视化了的软件了 但是你得知道有这些语句

创建数据库 CREATE DATABASE 数据库名;

显示数据库 SHOW DATABASES;

查看数据库信息 SHOW CREATE DATABASE 数据库名;

修改数据库编码格式 ALTER DATABASE 数据库名 CHARACTER SET = utf8;

删除数据库 DROP DATABASE 数据库名;

接下来我们简单了解Mysql的增删改查操作

首先你要知道你往哪个表增加那些东西

INSER INTO 表名 (字段一,字段二,字段三) VALUES ("值一","值二","值三");

最好加上条件不然你就会跑路。。。

DELETE FROM 表名 WHERE 条件;

设置条件确定一个东西然后将这个东西改为新的内容

UPDATE 表名 SET 设置的内容 WHERE 条件语句;

查就比较难了 以后你会正着查倒着查 从中间查 反正是各种查 各式各样的查 都是泪

SELECT 字段 FROM 表名 WHERE 条件语句;

条件语句

ADN

这是个条件链接符号

顾名思义 就是两个条件都要 什么和什么

如:我想找到这个班 姓李的同学的成绩大于60分的

那么我们分析这是两个 条件 你得姓李 你的成绩得大于60

SELECT * FROM Class WHERE name LIKE "李%" AND achievement > 60;

OR

这是个条件链接符号

顾名思义 就是那个满足我就要那个

如: 我想找到这个班 李明 或者 成绩大于60的

SELECT * FROM Class WHERE name = "李明" OR achievement > 60;

ORDER BY(DESC/ASC)

对查询的结果进行排序 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列

典型案例如:班级的成绩 查询出来后我想按成绩从高到低进行显示(升序)

SELECT * from Class ORDER BY achievement ASC;

那我的需求改了 我就想看看 成绩最差的是谁(降序)

SELECT * from Class ORDER BY achievement DESC;

LIMIT

用于限制查询结果返回的数量,常用于分页查询;

# 查询10条数据,索引从0到9,第1条记录到第10条记录

select * from Class limit 10;

select * from Class limit 0,10;

# 查询8条数据,索引从5到12,第6条记录到第13条记录

select * from Class limit 5,8;

LIKE

可以说成是一个模糊查询

LIKE 子句中使用百分号 %字符来表示任意字符,类似于UNIX或正则表达式中的星号 *。

如果没有使用百分号 %, LIKE 子句与等号 = 的效果是一样的。

看看咱们班姓李的都是谁

这里我用了% 那么就是我不管你李后面是什么我都要

SELECT * FROM Class WHERE name LIKE "李%";

Mysql2模块

为什么Node.js已经有mysql模块,还出了mysql2呢?

为啥不用Mysql模块而是用Mysql2模块 简单的理解是mysql2对promise进行了封装

安装npm i mysql2

使用

我们要进行链接数据库只有链接上数据库才能进行更多的操作

链接

const connection = mysql.createConnection({

//数据库地址

host: '44.166.135.12',

//数据库用户名

user: 'roor',

//数据库密码

password: 'root',

//数据库表

database: 'root'

});

当我们链接后测试下

query 第一个写的是SQL语句然后跟着写上处理方法

connection.query('SELECT * FROM `user`', function (err, results, fields){

// 打印处理结果

console.log(results);

});

如果我们打印出来东西那么就说明我们的代码没有问题

我们这里还可以使用占位符号

占位符

也就是说我们的sql语句可能存在变量的问题 那么我们就可以使用 ? 就代表占位下然后用 [] 代表变量

connection.query(

//sql语句

'SELECT * FROM `table` WHERE `name` = ? AND `age` > ?',

//变量

['Page', 45],

//回调

function(err, results) {

console.log(results);

}

);

Promise

MySQL2还支持Promise API

这个也新特性 相比 mysql 更好的地方 大家可以更加深度的去学习 这里只做了解

async function main(){

// get the client

const mysql = require('mysql2/promise');

// create the connection

const connection = await mysql.createConnection({host:'localhost', user: 'root', database: 'test'});

// query database

const [rows, fields] = await connection.execute('SELECT * FROM `table` WHERE `name` = ? AND `age` > ?', ['Morty', 14]);

}

MySQL2使用Promise范围内可用的默认对象。但是您可以选择Promise要使用的实现

// get the client

const mysql = require('mysql2/promise');

// get the promise implementation, we will use bluebird

const bluebird = require('bluebird');

// create the connection, specify bluebird as Promise

const connection = await mysql.createConnection({host:'localhost', user: 'root', database: 'test', Promise: bluebird});

// query database

const [rows, fields] = await connection.execute('SELECT * FROM `table` WHERE `name` = ? AND `age` > ?', ['Morty', 14]);

MySQL2还在Pools上公开了一个.promise()函数,因此您可以从同一池中创建一个Promise / non-Promise连接。

async function main(){

// get the client

const mysql = require('mysql2');

// create the pool

const pool = mysql.createPool({host:'localhost', user: 'root', database: 'test'});

// now get a Promise wrapped instance of that pool

const promisePool = pool.promise();

// query database using promises

const [rows,fields] = await promisePool.query("SELECT 1");

MySQL2在Connections上公开了一个.promise()函数,以“升级”现有的非承诺连接以使用promise

// get the client

const mysql = require('mysql2');

// create the connection

const con = mysql.createConnection(

{host:'localhost', user: 'root', database: 'test'}

);

con.promise().query("SELECT 1")

.then( ([rows,fields]) => {

console.log(rows);

})

.catch(console.log)

.then( () => con.end());

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值