nodejs学习--06

34 篇文章 0 订阅
3 篇文章 0 订阅
MySQL数据库介绍

什么是数据库
存储数据的仓库。
常见的数据库: MySQL、 Oracle、 Sqlserver、 DB2等。

MySQL简介

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品

数据表的结构和excel一模一样:
在这里插入图片描述

  • 表结构:
    • 和excel表的结构是一样的。
    • 每一列都是一类数据 — 字段
    • 每一行代表一条数据 — 记录
SQL语句

使用SQL语句就能很方便对数据库进行增删改查操作
数据查询
语法格式:

SELECT 字段名1, 字段名2, …

FROM 表名
[ WHERE <条件表达式> ]
[ ORDER BY <字段名> [ ASC|DESC ]]
[ LIMIT START, LENGTH]

#基本的查询语法
SELECT 字段1,字段2,... FROM 表名

#查询所有的字段
SELECT * FROM 表名

#带条件的查询
SELECT * FROM 表名 WHERE 条件

....

带where子句的查询
select field1, field2… from 表名 查询表中的所有数据
where 可以使用条件来筛选查询出的结果
在这里插入图片描述
模糊查询
通配符:
%: 代表任意长度(包括0)的任意字符
_: 代表1位长度的任意字符

a%b :  ab  abb  asdfb
a_b: acb  atb 
a_b%:  acb  a&baaad

like: 在执行模糊查询时,必须使用like来作为匹配条件

查询结果排序
order by 可以对查询结果按某个字段进行升序或者降序排列
升序 asc (默认值) , 降序 desc
可进行排序的字段通常是 整型 英文字符串型 日期型 (中文字符串也行,但一般不用)
如果SQL语句中,有where和order by,where一定要放到order by之前。
限制查询结果
limit 用来限制查询结果的起始点和长度
格式: limit var1, var2
var1: 起始点。 查询结果的索引,从0开始。 0代表第一条数据
var2: 长度
where、order by、limit如果一起使用,是有顺序的,where在最前面、其次是order by、limit要放到最后。

** 添加数据**
格式: insert into 表名(字段名1,字段名2,…) values(值1,值2,…)
注意: 字段的顺序要和值的顺序是完全匹配的
自增长类型的主键,可以使用null来填充;MySQL会自动填充数据
如果每个字段都有数据,那么表名后面可以不跟字段名,但是values里面的顺序必须正确

修改数据
格式:

update 表名 set 字段1=值1, 字段2=值2,… where 修改条件
修改表中的哪一条(几条)数据的 字段1=值1…
不指定修改条件会修改所有的数据

删除数据
格式: delete from 表名 where 删除条件
注意:不指定条件将删除所有数据

node中的mysql模块

mysql模块的作用
mysql模块是一个第三方模块,专门用来操作MySQL数据库。 可以执行增删改查操作。

# 如果前面没有安装过其他模块,需要先初始化
npm i mysql

mysql基本用法
在Node中使用MySQL模块一共需要5个步骤:

  1. 加载 MySQL 模块
  2. 创建 MySQL 连接对象
  3. 连接 MySQL 服务器
  4. 执行SQL语句
  5. 关闭链接
//1. 加载 mysql 模块
const mysql = require('mysql');

//2. 创建mysql链接对象
const conn = mysql.createConnection({
    host: '127.0.0.1',  //指定mysql服务器的ip地址
    user: 'root',       //设置用户名
    password: 'root',   //用户名对应的密码
    database: 'study'
});

//3. 链接mysql服务器
conn.connect();

//4. 执行SQL语句
const sql = 'select * from student';
conn.query(sql, (err, results, fields) => {
    console.log(err); // 错误信息
    console.log(results); // 查询结果
    console.log(fields);  // 字段
})

//5. 关闭链接
conn.end();
  • 查询 — read

执行查询类型的SQL语句,查询结果(result)是一个数组,每个单元是对象,对象的属性是数据表的字段名

//1. 加载 mysql 模块
const mysql = require('mysql');

//2. 创建mysql链接对象
const conn = mysql.createConnection({
    host: '127.0.0.1',  //指定mysql服务器的ip地址
    user: 'root',       //设置用户名
    password: 'root',   //用户名对应的密码
    database: 'study'
});

//3. 链接mysql服务器
conn.connect();

//4. 执行SQL语句
const sql = 'select * from student';
conn.query(sql, (err, results, fields) => {
    console.log(err);
    console.log(results);
    console.log(fields); 
})

//5. 关闭链接
conn.end();

占位符模式:
当SQL语句中使用了占位符,则query方法需要使用参数2

//1. 加载mysql模块
const mysql = require('mysql');

//2. 创建mysql链接对象
const conn = mysql.createConnection({
    host: '127.0.0.1',
    user: 'root',
    password: 'root',
    database: 'study',
    port: 3306  // 设置mysql服务器的端口号,默认的3306可以省略
});

//3. 链接mysql服务器
conn.connect();

//4. 执行SQL语句
//在sql语句中出现的 ? 就是占位符
const sql = 'select * from student where sgender=?';
//当sql语句中有?时,就使用参数2来设置占位符代表的具体值
conn.query(sql, "男", (err, result) => {
    if (err) {
        return console.log(err);
    }
    console.log(result);
})

//5. 关闭链接
conn.end();

如果SQL中有多个占位符,则传递数组

let sql = 'select * from student where sage > ? or sgender = ?';
conn.query(sql, [20, '男'], (err, result) => {
    if (err) throw err;
    console.log(result);
}); 
  • 添加 — create

执行添加类型的SQL语句,查询结果(result)是一个对象,该对象中有两个属性需要记住

  • affectedRows: 受影响行数
  • insertID: 查询数据的主键值
const mysql = require('mysql');
const conn = mysql.createConnection({
    host: '127.0.0.1',
    user: 'root',
    password: 'root',
    database: 'study'
});
conn.connect();

//4. 执行SQL语句
let sql = "insert into student(sname, sage) values ('小明', 16)";
//当执行添加的SQL语句时,返回值是一个对象,在该对象中有两个属性需要记住
// affectedRows: 受影响函数
// insertId: 添加的新数据的主键值,此处就是 sno
conn.query(sql, (err, result) => {
    if (err) {
        return console.log(err);
    }
    console.log(result);
})

//5. 关闭链接
conn.end();
  • 修改 — update

执行修改类型的SQL语句,查询结果(result)是一个对象,该对象中有 affectedRows 属性

//1. 加载mysql模块
const mysql = require('mysql');

//2. 创建mysql链接对象
const conn = mysql.createConnection({
    host: '127.0.0.1',
    user: 'root',
    password: 'root',
    database: 'study',
    port: 3306  // 设置mysql服务器的端口号,默认的3306可以省略
});

//3. 链接mysql服务器
conn.connect();

//4. 执行SQL语句
const sql = "update student set sname='初音未来',sgender='女' where sno=6";
conn.query(sql, (err, result) => {
    if (err) {
        return console.log(err);
    }

    console.log(result);
})

//5. 关闭链接
conn.end();

占位符模式:
数据修改通常需要两个占位符。 占位符1是要修改的数据,对象形式,属性是数据表字段;占位符2是修改条件,通常是主键值

//1. 加载mysql模块
const mysql = require('mysql');

//2. 创建mysql链接对象
const conn = mysql.createConnection({
    host: '127.0.0.1',
    user: 'root',
    password: 'root',
    database: 'study',
    port: 3306  // 设置mysql服务器的端口号,默认的3306可以省略
});

//3. 链接mysql服务器
conn.connect();

//4. 执行SQL语句 --- 占位符形式
const sql = "update student set ? where sno=?";
//set 之后是要修改的数据,需要使用对象形式,下标是数据表的字段名
const obj = {
    sname: "未来战士",
    sgender: "女",
    sage: 20
}
const sno = 7;
//当sql语句中出现多个占位符时,参数可以使用数组来设置
//数组中的单元会按照顺序填充到sql语句的?位置
conn.query(sql, [obj, sno], (err, result) => {
    if (err) {
        return console.log(err);
    }

    console.log(result);
})

//5. 关闭链接
conn.end();
  • 删除 — delete

执行删除类型的SQL语句,查询结果(result)是一个对象,该对象中有 affectedRows 属性

//1. 加载mysql模块
const mysql = require('mysql');

//2. 创建mysql链接对象
const conn = mysql.createConnection({
    host: '127.0.0.1',
    user: 'root',
    password: 'root',
    database: 'study',
    port: 3306  // 设置mysql服务器的端口号,默认的3306可以省略
});

//3. 链接mysql服务器
conn.connect();

//4. 执行SQL语句
const sql = 'delete from student where sno=6';
conn.query(sql, (err, result) => {
    if (err) {
        return console.log(err);
    }

    console.log(result);
})

//5. 关闭链接
conn.end();

占位符模式:

//1. 加载mysql模块
const mysql = require('mysql');

//2. 创建mysql链接对象
const conn = mysql.createConnection({
    host: '127.0.0.1',
    user: 'root',
    password: 'root',
    database: 'study',
    port: 3306  // 设置mysql服务器的端口号,默认的3306可以省略
});

//3. 链接mysql服务器
conn.connect();

//4. 执行SQL语句 --- 占位符形式
const sql = 'delete from student where sno=?';
conn.query(sql, 7, (err, result) => {
    if (err) {
        return console.log(err);
    }

    console.log(result);
}) 


//5. 关闭链接
conn.end();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值