IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 数据库MySQL 的增删改查使用 -> 正文阅读

[大数据]数据库MySQL 的增删改查使用

1. 什么是 SQL
SQL(英文全称:Structured Query Language)是 结构化查询语言 ,专门用来 访问和处理数据库 的编程语言。能够让
我们 以编程的形式 操作数据库里面的数据
三个关键点:
SQL 是一门 数据库编程语言
使用 SQL 语言编写出来的代码,叫做 SQL 语句
SQL 语言 只能在关系型数据库中使用 (例如 MySQL、Oracle、SQL Server)。非关系型数据库(例如 Mongodb)
不支持 SQL 语言
2. SQL 能做什么
从数据库中 查询数据
向数据库中 插入新的数据
更新 数据库中的 数据
从数据库 删除数据
可以创建新数据库
可在数据库中创建新表
可在数据库中创建存储过程、视图
etc...
重点掌握如何使用 SQL 从数据表中的:
查询数据(select) 、插入数据(insert into) 、更新数据(update) 、删除数据(delete)
额外需要掌握的 4 种 SQL 语法:
where 条件and 和 or 运算符order by 排序count(*) 函数
SELECT 语句
SELECT 语句用于 从表中查询数据 。执行的结果被存储在一个 结果表 中(称为 结果集
-- 这是注释
-- 从FROM 指定的[表中],查询出[所有的]数据。* 表示[所有列]
select * from 表名称

-- 从 FROM 指定的[表中],查询出指定 列名称 (字段) 的数据。
select 列名称 from 表名称

注意:SQL语句中的关键字对大小写不敏感,效果一样,提示的为大写;

INSERT INTO 语句
INSERT INTO 语句用于 向数据表中 插入新的数据行
-- 语法解读: 向指定的表中,插入如下几列数据,列的值通过values 一一指定
-- 注意:列和值要一一对应,多个列和多个值之间,使用英文的逗号分隔
insert into username(列1,列2,...) values (值1,值2,...)
-- 注意:新的数据(values里面的值)需要加上引号,否则会报错
insert into 表名 set 字段1=值1,字段1=值1,字段1=值1;(推荐使用这种,列和值不会匹配错误)

UPDATE 语句
Update 语句用于 修改表中的数据
-- 语法解读:
-- 1.用 update 指定要更新哪个表中的数据
-- 2.用 set 指定列对应的新值
-- 3.用 where 指定更新的条件
-- 注意:初学者经常忘记提供更新的 where 条件,这样会导致整张表的数据都被更新,(一定要慎重!!!)
update 表名称 set 列名称 = 新值 where 列名称 = 某值
update users set password=654321 where id=4
-- 多个被更新的列之间,使用英文的逗号进行分隔
update users set password=888888,status=1 where id=4

DELETE 语句
DELETE 语句用于删除表中的行
-- 语法解读:
-- 从指定的表中,根据 where 条件,删除对应的数据行
delete from 表名称 where 列名称 = 值
-- 注意:初学者经常忘记提供更新的 where 条件,这样会导致整张表的数据都被更新,(一定要慎重!!!)
delete from users where id=4

WHERE 子句
WHERE 子句用于 限定选择的标准 。在 SELECT UPDATE DELETE 语句中, 皆可使用 WHERE 子句来限定选择的标准
-- 查询语句中的 where 条件
select 列名称 from 表名称 where 列 运算符 值
-- 更新语句中的 where 条件
update 表名称 set 列=新值 where 列 运算符 值
-- 删除语句中的 where 条件
delete from 表名称 where 列 运算符 值

3.可以通过 where 子句来限定 select 的查询条件

-- 查询 id 为 1 的所有用户
select * from users where id=1

-- 查询 id 大于 2 的所有用户
select * from users where id>2

-- 查询 username 不等于 admin 的所有用户
select * from users where username<>'zs'
可在 WHERE 子句中使用的 运算符
下面的运算符可在 WHERE 子句中使用,用来限定选择的标准:
注意:在某些版本的 SQL 中,操作符 <> 可以写为 !=

?

AND OR 运算符
AND 和 OR 可 在 WHERE 子语句 把两个或多个条件结合起来
AND 表示 必须同时满足多个条件 ,相当于 JavaScript 中的 && 运算符,例如 if (a !== 10 && a !== 20)
OR 表示 只要满足任意一个条件即可 ,相当于 JavaScript 中的 || 运算符,例如 if(a !== 10 || a !== 20)
-- and
-- 使用 AND 来显示所有 status 为 0,并且 id 小于 3 的用户
select * from users where status=0 and id<3
-- or
-- 使用 or 来显示所有 status 为 1,或者 username 为 zs 的用户
select * from users where status=0 or username='zs'

ORDER BY 子句
ORDER BY 语句用于 根据指定的列 对结果集进行排序
ORDER BY 语句 默认 按照 升序 对记录进行排序。
如果您希望按照 降序 对记录进行排序,可以使用 DESC 关键字。
对 users 表中的数据,按照 status 字段进行升序排序
-- 下面的这两条 SQL 语句是等价的
-- 因为 order by 默认进行升序排序
select * from users order by status
-- 其中, ASC 关键字代表升序排序
select * from users order by status asc

对 users 表中的数据,按照 id 字段进行降序排序
-- desc 代表降序排序
select * from users order by status desc

多重排序
对 users 表中的数据,先按照 status 字段进行降序排序,再按照 username 的字母顺序,进行升序排序
select * from users order by status desc, username asc

COUNT(*) 函数
COUNT(*) 函数用于返回 查询结果的 总数据条数
select count(*) from 表名称

-- 查询 users 表中 status 为 0 的总数据条线
select count(*) from users where status=0

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

-- 将列名从 count(*) 修改为 total
select count(*) as total from users where status=0

-- 将列名 username 改为 uname, password 改为upwd
select username as uname, password as upwd from users

手写 MySQL 的增删改查
项目中操作数据库的步骤:
安装操作 MySQL 数据库的第三方模块( mysql
通过 mysql 模块 连接到 MySQL 数据库
通过 mysql 模块 执行 SQL 语句

?安装 mysql 模块

mysql 模块是托管于 npm 上的 第三方模块 。它提供了在 Node.js 项目中 连接 操作 MySQL 数据库的能力。
想要在项目中使用它,需要先运行 npm i mysql 命令,将 mysql 安装为项目的依赖包:
配置 mysql 模块
在使用 mysql 模块操作 MySQL 数据库之前, 必须先对 mysql 模块进行必要的配置
// 1.导入mysql模块
const mysql = require('mysql')

// db 表示连接对象
const db = mysql.createPool({
    host: '127.0.0.1', //表示连接哪一个服务器上面的mysql数据库
    user: 'root', //数据库的用户名
    password: 'root', //数据库密码
    database:'web67' //指定操作哪个数据库
})
测试 mysql 模块能否正常工作
调用 db.query() 函数,指定要执行的 SQL 语句,通过回调函数拿到执行的结果:
1. 查询数据
查询 users 表中所有的数据:
// 查询语句 data得到是一个数组  增删改 得到是受影响的行数
db.query('select * from users', (err, data) => {
    // 如果连接失败 或者 sql语句写错
    if (err) return console.log(err.message)
    // 如果数组的长度为0 就表示表中没有数据
    if (data.length === 0) return console.log('表里面没有数据')
    console.log(data)
})

2. 插入数据
向 users 表中新增数据
// 注意:postman传递过来的参数的名 要与数据表的字段名一样
app.post('/addUser', (req, res) => {
    // 获取数据
    const data = req.body
    // 构建sql语句
    const sql = 'insert into users set ?'
    // 执行sql 使用数组的形式来给 ?
    db.query(sql, data, (err, data) => {
        // 判断dql是否执行失败
        if (err) return console.log(err.message)
        // 如何判断如果插入成功
        if (data.affectedRows !== 1) return console.log('数据写入失败')
        // 如果写入成功
        res.send({
            status: 0,
            msg:'数据写入成功'
        })
    })
})
4. 更新数据
可以通过如下方式,更新表中的数据:
// 根据id来更新username
app.post('/updateuser', (req, res) => {
    // 获取客户端提交过来的数据
    const body = req.body
    // 构造sql语句
    const sql = 'update users set ? where id = ?'
    // 执行sql
    db.query(sql, [body, body.id], (err, data) => {
        // 判断sql语句是否有错误
        if (err) return console.log(err.message)
        if (data.affectedRows !== 1) return console.log('更新失败')
        // 向客户端响应结果
        res.send({
            status: 0,
            msg:'用户更新成功'
        })
    })
})
6. 删除数据
在删除数据时,推荐根据 id 这样的唯一标识,来删除对应的数据。
// 假删除 ---> 回收站 将需要被删除的这个用户的status值设置为0
app.get('/deluser/:id', (req, res) => {
    // 1.获取客户端提交过来的数据
    const id = req.params.id
    // 2.构建sql语句
    const sql = 'update users set status = 0 where id = ?'
    // 3.执行sql
    db.query(sql, id, (err, data) => {
        // 判断sql语句是否有错误
        if (err) return console.log(err.message)
        if (data.affectedRows !== 1) return console.log('删除失败')
        // 删除成功
        res.send({
            status: 0,
            msg:'删除成功'
        })
    })
})

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-10-12 23:31:26  更:2021-10-12 23:31:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 1:04:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码