【Node】 MySQL的基本使用 Day3

本文为笔者学习Node笔记,待完善,欢迎一起交流学习。

一、SQL的SELECT语句

1.语法

SELECT语句用于从表中查询数据。执行的结果被存储在一个结果表中(称为结果集)。语法格式如下:

-- 这是注释

-- 从FROM指定的【表中】,查询出【所有的】数据。*表示【所有列】
SELECT * FROM 表名称

-- 从FROM指定的【表中】,查询出指定 列名称(字段)的数据。
SELECT 列名称 FROM 表名称

注意:SQL语句中的关键字对大小写不敏感。SELECT 等效于select ,FROM 等效于from

2.示例:

-- 代表查询users表中所有信息
select * from users

-- 代表查询users表中 username 和 password 字段
select username,password from users

二、SQL的INSERT INTO语句

1.语法

INSERT INFO语句用于向数据表中插入新的数据行。语法格式如下:

-- 语法解读:向指定的表中,插入如下几列数据,列的值通过values一一指定
-- 注意:列和值要一一对应,多个列和多个值之间,使用英文逗号分割

INSERT INTO table_name(1,2,...) VALUES (1,2,...)

2.示例

-- 向users表中,插入一条username为tom,password为123123的用户数据

INSERT INTO users(username,password) VALUES ('tom','123123')

三、SQL的UPDATE语句

1.语法

UPDATE语句用于修改表中的数据。语法格式如下:

-- 语法解读:
-- 1.用 UPDATE 指定要更新哪个表中的数据
-- 2.用 SET指定列对应的新值
-- 3.用 WHERE 指定更新的条件

UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

2.示例

-- 向users表中,修改id为2的用户密码,更新为888888

UPDATE users SET password = '888888' WHERE id = 2

-- 向users表中,修改id为2的用户密码为666666和用户状态为1

UPDATE users SET password = '666666' , status = 1 WHERE id = 2

四、SQL的DELETE语句

1.语法

DELETE语句用于删除表中的行。语法格式如下:

-- 语法解读:
-- 从指定的表中,根据 WHERE 条件,删除对应的数据行

DELETE FROM 表名称  WHERE 列名称 =

2.示例

-- 从users表中,删除id为3的用户
DELETE FROM users WHERE id = 3

五、SQL的WHERE子句

1.语法

WHERE语句用于限定选择的标准,在SELECT、UPDATE、DELETE语句中,皆可使用WHERE子句来限定选择的标准。

-- 查询语句中的WHERE条件
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值

-- 更新语句中的WHERE条件
UPDATE 表名称 SET= 新值 WHERE 列 运算符 值

-- 删除语句中的WHERE条件
DELETE FROM 表名称  WHERE 列名称 运算符 值

2.运算符

操作符 描述
= 等于
<> 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
BETWEEN 在某个范围内
LIKE 搜索某种模式

注意:在某些版本的SQL中,操作符<>可以写成 !=

六、SQL的AND和OR运算符

1.语法

  1. AND和OR可在WHERE子语句中把两个或多个条件结合起来
  2. AND表示必须同时满足多个条件,相当于JavaScript中的 && 运算符
  3. OR表示只要满足任意一个条件即可,相当于JavaScript中的 || 运算符

2.示例

-- 使用AND来显示所有status为0并且id小于3的用户
SELECT * FROM users WHERE status = 0 AND id < 3

-- 使用OR来显示所有status为1或者username为zs的用户
SELECT * FROM users WHERE status = 1 OR username = 'zs'

七、SQL的ORDER BY子句

1.语法

  1. ORDER BY语句用于根据指定的列对结果集进行排序
  2. ORDER BY语句默认按照升序对记录进行排序。
  3. 如果希望按照降序对记录进行排序,可以使用DESC关键字。

2.示例

升序

-- 对users表中的数据,按照status字段进行升序排序
SELECT * FROM users ORDER BY status
SELECT * FROM users ORDER BY status ASC

降序

-- 对users表中的数据,按照id字段进行降序排序
SELECT * FROM users ORDER BY id DESC

多重排序

-- 对users表中的数据,先按照status字段进行降序排序,再按照username的字母顺序进行升序排序
SELECT * FROM users ORDER BY status DESC , username ASC

八、SQL的COUNT(*)函数

1.语法

COUNT(*)函数用于返回查询结果的总数据条数,语法格式如下:

SELECT COUNT(*) FROM 表名称

2.示例

-- 查询users表中status为0的总数据条数
SELECT COUNT(*) FROM users WHERE status = 0

3.使用AS为列设置别名

如果希望给查询出来的列名称设置别名,可以使用AS关键字,示例如下:

-- 将列名从COUNT(*)改为total
SELECT COUNT(*) AS total FROM users WHERE status = 0

九、在项目中操作MySQL

1.步骤

  1. 安装操作MySQL数据库的第三方模块(mysql)
  2. 通过mysql模块连接到MySQL数据库
  3. 通过mysql模块执行SQL语句
    在这里插入图片描述

2.安装与配置mysql模块

(1)安装mysql模块

mysql模块是托管与npm上的第三方模块。它提供了在Node.js项目中链接和操作MySQL数据库的能力。
安装命令:

npm install mysql

(2)配置mysql模块

//导入模块
const mysql = require('mysql')

//建立与 MySQL 数据库的连接
const db = mysql.createPool({
    
    
  host: '127.0.0.1', // 数据库的IP地址
  user: 'root', //登录数据库的账号
  password: 'admin123', // 登录数据库的密码
  database: 'my_db_01' // 指定操作哪个数据库
})

(3)测试mysql模块能否正常工作

调用db.query()函数,指定要执行的SQL语句,通过回调函数拿到执行的结果

//检测mysql模块能否正常工作,select 1没有任何实质性作用,只是为了测试能否正常工作
db.query('select 1', (err, results) => {
    
    
  //mysql模块报错
  if (err) return console.log(err.message);
  //成功执行的SQL语句
  console.log(results);
})

3.使用mysql模块操作MySQL数据库

(1)查询数据

//查询users表中所有的数据
const sqlStr = 'select * from users'
db.query(sqlStr, (err, results) => {
    
    
   if (err) return console.log(err.message);
   //如果执行的是select查询语句,则执行的结果是数组
   console.log(results);
})

(2)插入数据

//要插入到users表中的数据对象
const user = {
    
     username: 'Jack', password: 'Jack001' }

//待执行的SQL语句,其中英文的 ? 表示占位符
const sqlStr = 'insert into users set ?'

//使用数组的形式,依次为?占位符指定具体的值
//如果执行的是insert into 插入语句 则results 是一个对象,可以通过affectedRows判断插入数据是否成功
db.query(sqlStr,user, (err, results) => {
    
    
   if (err) return console.log(err.message);
   if (results.affectedRows === 1) {
    
     console.log('插入数据成功'); }
})

(3)更新数据

//要更新的数据对象
const user = {
    
     id: 15, username: '小红', password: '000' }

//定义SQL语句
const sqlStr = 'update users set ? where id = ?'

//执行SQL语句
db.query(sqlStr, [user, user.id], (err, results) => {
    
    
	//如果执行的是update语句 则results 是一个对象,可以通过affectedRows判断插入数据是否成功
    if (err) return console.log(err.message);
    if (results.affectedRows === 1) {
    
     console.log('更新数据成功'); }
})

(4)删除数据

//删除id为12的用户
const sqlStr = 'delete from users where id = ?'
db.query(sqlStr, 12, (err, results) => {
    
    
 //如果执行的是delete语句 则results 是一个对象,可以通过affectedRows判断插入数据是否成功
 if (err) return console.log(err.message);
 if (results.affectedRows === 1) {
    
     console.log('删除数据成功'); }
})

标记删除

使用DELETE语句,会真正的把数据从表中删除。为了保险起见,推荐使用标记删除的形式,模拟删除的动作。

所谓标记删除,就是在表中设置类似于status这样的状态字段,来标记当前这条数据是否被删除。

当用户执行了删除的动作时,我们并没有执行DELETE语句把数据删除掉,而是执行了UPDATE语句,将这条数据对应的status字段标记为删除即可。

//标记删除
const sqlStr = 'update users set status = ? where id = ?'
db.query(sqlStr, [1,11], (err, results) => {
    
    
    if (err) return console.log(err.message);
    if (results.affectedRows === 1) {
    
     console.log('标记删除数据成功'); }
})

注意:如果SQL语句中有多个占位符,则必须使用数组为每个占位符指定具体的值;如果SQL语句中只有一个占位符,则可以省略数组

猜你喜欢

转载自blog.csdn.net/Macao7_W/article/details/127492874