数据库-mysql、第三方模块
2021/6/22 2:26:56
本文主要是介绍数据库-mysql、第三方模块,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
数据库
1.数据库的基本概念
1.1什么是数据库
数据库(database)是用来组织、存储和管理数据的仓库。
用户可以对数据库中的数据迚行新增、查询、更新、删除等操作。
1.2常见的数据库及分类
1.MySQL 数据库(目前使用最广泛、流行度最高的开源免费数据库;Community + Enterprise)
2.Oracle 数据库(收费)
3.SQL Server 数据库(收费)
4.Mongodb 数据库(Community + Enterprise)
其中,MySQL、Oracle、SQL Server 属于传统型数据库(又叨做:关系型数据库 戒 SQL 数据库),这三者的设计理念相同,用法比较类似
而 Mongodb 属于新型数据库(又叨做:非关系型数据库 戒 NoSQL 数据库),它在一定程度上弥补了传统型数据库的缺陷。
1.3传统型数据库的数据组织结构
数据的组织结构:指的就是数据以什么样的结构迚行存储
在传统型数据库中,数据的组织结构分为**数据库(database)、数据表(table)、数据行(row)、字段(field)**这 4 大部分组成
实际开发中库、表、行、字段的关系
① 在实际项目开发中,一般情况下,每个项目都对应独立的数据库。
② 不同的数据,要存储到数据库的不同表中。
③ 每个表中具体存储哪些信息,由字段来决定,例如:我们可以为 users 表设计 id、username、password 这 3 个
字段。
④ 表中的行,代表每一条具体的数据。
2.安装并配置 MySQL(已安装的可以忽略这里的)
对于开发人员来说,叧需要安装 MySQL Server 和 MySQL Workbench 这两个软件,就能满足开发的需要了。
1.MySQL Server:与门用来提供数据存储和服务的软件。
2.MySQL Workbench:可视化的 MySQL 管理工具,通过它,可以方便的操作存储在 MySQL Server 中的数据
MySQL 在 Mac 环境下的安装
在 Mac 环境下安装 MySQL 的过程比 Windows 环境下的步骤简单很多:
① 先运行 mysql-8.0.19-macos10.15-x86_64.dmg 这个安装包,将 MySQL Server 安装到 Mac 系统
② 再运行 mysql-workbench-community-8.0.19-macos-x86_64.dmg 这个安装包,将可视化的 MySQL Workbench 工具安装到 Mac 系统
MySQL 在 Windows 环境下的安装
在 Windows 环境下安装 MySQL,叧需要运行 mysql-installer-community-8.0.19.0.msi 这个安装包,就能一次
性将 MySQL Server 和 MySQL Workbench 安装到自己的电脑上。
3.MySQL 的基本使用
-
什么是 SQL
SQL(英文全称:Structured Query Language)是结构化查询语言,与门用来访问和处理数据库的编程语言。能够让我们以编程的形式,操作数据库里面的数据。
三个关键点:
① SQL 是一门数据库编程语言
② 使用 SQL 语言编写出来的代码,叫做 SQL 语句
③ SQL 语言只能在关系型数据库中使用(例如 MySQL、Oracle、SQL Server)。非关系型数据库(例如 Mongodb)不支持 SQL 语言
-
SQL 能做什么
① 从数据库中查询数据
② 向数据库中插入新的数据
③ 更新数据库中的数据
④ 从数据库删除数据
⑤ 可以创建新数据库
⑥ 可在数据库中创建新表
⑦ 可在数据库中创建存储过程、视图
⑧ etc…
注意:SQL 语句中的关键字对大小写不敏感。SELECT 等效于 select,FROM 等效于 from。
简单学习增删查改:
查询数据(select):select语句用于从表中查询数据,执行结果被存储字啊一个结果表中(称为结果集)
//从from指定的“表”中,查询出“所有的”数据,*是选取所有列的快捷方式 select * from 表名称 select * from users //从from指定的“表”中,查询出指定的列名称(字段)的数据 select 列名称/字段 from 表名称 select username,userpwd from users
插入数据(insert into):insert into语句用于向数据表中插入新的数据行
//向指定的表中,插入几列数据,列的值通过values一一指定 //字段名和值要一一对应 insert into 表名(字段名1,字段名2...) values(值1,值2...) insert into users(username,userpwd) values('admin','123456')
更新数据(update):update语句用于修改表中的数据
//用update指定要更新哪个表的数据:users //set指定列(字段)对应的新值:username='zs' //用where指定更新的条件:userid=1 //更新userid为1的那行数据的username的值为zs,userage的值为20,两个数据用,隔开 update users set username='zs',userage=20 where userid=1
删除数据(delete):delete语句用于删除表中的数据
//删除users中userid值为1的那条数据 delete from users where userid=1
SQL 的 WHERE 子句
WHERE 子句用于限定选择的标准
操作符 | 描述 |
---|---|
= | 等于 |
<>(!=) | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
between | 在某个范围内 |
like | 搜索某种模式 |
SQL 的 AND 和 OR 运算符
AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。
AND 表示必须同时满足多个条件,相当于 JavaScript 中的 && 运算符,例如 if (a !== 10 && a !== 20)
//查询users表中status值为0,并且userid小于5的所有符合条件的数据 select * from users where status=0 and userid<5
OR 表示叧要满足任意一个条件即可,相当于 JavaScript 中的 || 运算符,例如 if(a !== 10 || a !== 20)
//查询users表中status值为0或者username值为zs的所有符合条件的数据 select * from users where status=0 or username=zs
SQL 的 ORDER BY 子句
ORDER BY 语句用于根据指定的列对结果集进行排序。
ORDER BY 语句默认按照升序(ASC)对记录迚行排序
按照降序对记录迚行排序,可以使用 DESC 关键字。
排序可以根据数值大小排序也可以根据字母顺序排序
//结果集按照升序排序 select * from users order by userid select * from users order by userid ASC
//结果集按照userid进行降序排序 select * from users order by userid DESC
ORDER BY 子句—多重排序
//结果集中数据先按照status进行降序排序,再按照userid进行升序排序 select * from users order by status DESC,userid ASC
SQL 的 COUNT(*) 函数
COUNT(*)函数用于返回查询结果的总数据条数
select count(*) from 表名 //查询表中status为0的总数据条数 select count(*) from users where status=0
使用 AS 为列设置别名
//将列名称从count(*)修改为total select count(*) as total from suers where status=0
在项目中操作 MySQL
在项目中操作数据库的步骤
① 安装操作 MySQL 数据库的第三方模块(mysql)
② 通过 mysql 模块连接到 MySQL 数据库
③ 通过 mysql 模块执行 SQL 语句
安装 mysql 模块
mysql 模块是托管于npm上的第三方模块,它提供了在 Node.js 项目中连接和操作 MySQL 数据库的能力。
npm i mysql
配置 mysql 模块
在使用 mysql 模块操作 MySQL 数据库乊前,必须先对 mysql 模块迚行必要的配置
// 导入mysql模块 const mysql = require("mysql") // 创建与数据的库的连接关系 const db = mysql.createPool({ // 数据库的域名,默认都是localhost host: 'localhost', //数据库ip地址 // phpstudy里面默认的 user: 'root', //数据库账号 password: 'root', //数据库密码 database: 'student' //所操作的数据库 })
测试 mysql 模块能否正常工作
调用 db.query() 函数,指定要执行的 SQL 语句,通过回调函数拿到执行的结果
// 测试mysql模块是都能正常工作(数据库连接是否成功) /* db.query("select 1", function (err, res) { // 有错误err就是true if (err) { return console.log(err.message); } // res为[ RowDataPacket { '1': 1 } ],表示连接数据库成功 console.log(res); }) */
-
查询数据
// 查询userlist表中的数据 // 查询语句 db.query('select * from userlist', (err, res) => { // 查询失败返回失败信息 if (err) return console.log(err.message); // 查询成功 console.log(res); }) const sql = "select * from userlist" // da.query(x,y,z):x是查询语句,y是占位符?的值,z是回调函数 db.query(sql, (err, res) => { console.log(res); })
2.插入数据
// 插入数据 // 要插入到数据库中的userlist表中的数据对象 const user = { uname: '周六', age: 30 } // 要执行的sql语句,其中的英文符?表示占位符 const sql = "insert into userlist(username,userage) values(?,?)" // 使用数组的形式[],依次为?占位符指定具体的值 db.query(sql, [user.uname, user.age], (err, res) => { // 查询失败 if (err) return console.log(err.message); console.log(res); }) //向表中新增数据时,如果数据对象中的每个属性和数据表的字段一一对应时,就可以使用便捷方式 // 插入数据的便捷方式 const user = { uname: '田七', age: 25 } const sql = 'insert into userlist set ?' db.query(sql, user, (err, res) => { // res中的affectedRows属性值为1,说明命令执行成功 if (res.affectedRows === 1) { console.log("插入数据成功"); } })
3.更新数据
// 更改数据, // 1.要更新的数据对象 const users = { userid: 5, username: '大黄', userage: 33 } // 要执行的sql语句 const sql = 'update userlist set username=?,userage=? where userid=?' // 调用db.query()执行sql语句的同时,为占位符指定具体的值,因为有多个占位符,所以用数组存放 db.query(sql, [ users.username, users.userage,users.userid], (err,res) => { console.log(res); }) // 便捷方式 // 要更新的数据对象 /* const user = { userid: 6, username: '二狗子', userage: 26 } // 要执行的sql语句 const sql = 'update userlist set ? where userid=?' // 调用db.query()执行sql语句 db.query(sql, [user, 6],(err,res)=> { console.log(res); }) */
4.删除数据
// 删除数据,删除对应的id值的那条数据 // 1.要执行的sql语句 /* const sql = 'delete from userlist where userid=?' // 调用db.query()执行sql语句的同时,为占位符指定具体的值 db.query(sql, 8, (err,res) => { console.log(res); }) */
注意:如果sql语句中有多个占位符,则必须使用数组来为每一个占位符指定具体的值;
如果sql语句中只有一个占位符,则可以直接省略数组,直接放值;
5.标记删除
使用 DELETE 语句,会把真正的把数据从表中删除掉。为了保险起见,推荐使用标记删除的形式,来模拟删除的劢作。
所谓的标记删除,就是在表中设置类似于 status 这样的状态字段,来标记当前这条数据是否被删除
```css // 1.要执行的sql语句 const sql = 'update users set status=1 where id=?' // 调用db.query()执行sql语句的同时,为占位符指定具体的值 db.query(sql, 5, (err, res) => { // 删除失败 if (err) return console.log(err.message); // 删除成功 if (res.affectedRows === 1) { console.log('删除成功'); } })
这篇关于数据库-mysql、第三方模块的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-20部署MySQL集群入门:新手必读指南
- 2024-11-20部署MySQL集群教程:初学者指南
- 2024-11-20部署MySQL集群项目实战:新手教程
- 2024-11-20部署MySQL集群资料:新手入门教程
- 2024-11-20MySQL集群部署教程:入门级详解
- 2024-11-20MySQL集群教程:入门与实践指南
- 2024-11-20部署MySQL集群教程:新手入门指南
- 2024-11-20MySQL读写分离教程:轻松入门
- 2024-11-20部署MySQL集群入门:一步一步搭建你的数据库集群
- 2024-11-19部署MySQL集群学习:入门教程