Mysql数据库并且结合node构建服务器


title: Mysql数据库
date: 2022-07-12 22:59:37
tags:

  • Mysql
    categories:
  • 后端

Mysql基本概念

1.什么是数据库 🤔

数据库(database)是用来组织。存储和营理数据的仓库。
当今世界是一个充满着数据的互联网世界,充斥着大量的数据。数据的来源有很多,比如出行记录、消费记录、浏览的网页、发送的消息等等.除了文本类型的数据,图像。音乐。声音都是数据。
为了方便管理互联网世界中的数据,就有了数据库管理系统的概念(简称:数据库) .用户可以对数据库中的数据进行新增、查询、更新、删除等操作。

2.常见的数据库以及分类

市面上最常见的数据库:

  • MySQL数据库(目前使用最广泛流行度最高的开源免费数据库; Community(社区版免费) + Enterprise(企业版))
  • Oracle数据库(收费)
  • SQL Server数据库(收费)
  • Mongodb数据库(Community + Enterprise)

其中,MySQL. Oracle. SQL Server 属于传统型数据库(又叫做:关系型数据库或SQL数据库),这三者的设计理念相同,用法比较类似。

而Mongodb属于新型数据库(又叫做:非关系型数据库或NoSQL数据库),它在一 定程度 上弥补了传统型数据库的缺陷。

3.传统型数据库的数据阻止结构

1.Excel的数据组织结构

每个Excel中,数据的组织结构分别为工作簿、工作表、数据行、列这4大部分组成。

image-20220712230648045

  1. 整个Excel叫做工作簿
  2. users和books是工作表
  3. users工作表中有3行数据
  4. 每行数据由6列信息组成
  5. 每列信息都有对应的数据类型

2.传统型数据库的数据组织结构

在传统型数据库中,数据的组织结构分为**数据库(database)、数据表(table). 数据行(row)、 字段(field)**这 4大部分组成。

image-20220712230855197

  1. 数据库类似于Excel的工作簿
  2. 数据表类似于Excel的工作表
  3. 数据行类似于 Excel的每一行数据
  4. 字段类似于Excel的列
  5. 每个字段都有对应的数据类型

3.实际开发中库、表、行、字段的关系

  1. 在实际项目开发中,-般情况下,每个项目都对应独立的数据库。
  2. 不同的数据,要存储到数据库的不同表中,例如:用户数据存储到users表中,图书数据存储到books表中。
  3. 每个表中具体存储哪些信息,由字段来决定,例如:我们可以为users表设计id、username、 password 这3个字段。
  4. 表中的行,代表每一条具体的数据。

安装并配置MySQL

了解需要安装哪些MySQL相关的软件

对于开发人员来说,只需要安装MySQL Server和MySQL Workbench这两个软件,就能满足开发的需要了。

  • MySQL Server:专门用来提供数据存储和服务的软件。
  • MySQL Workbench:可视化的MySQL管理工具,通过它,可以方便的操作存储在MySQL Server中的数据。

MySQL在Windows环境下的安装

跳过

使用MySQL Workbench管理数据库

1.创建数据库

image-20220713192404034

2.创建数据表

image-20220713192913904

DataType数据类型:

  1. int整数
  2. **varchar(len”长度“)**字符串
  3. **tinyint(1)**布尔值

字段的特殊标识:

  1. **PK (Primary Key)**主键、唯一标识
  2. NN (Not Null) 值不允许为空
  3. UQ (Unique) 值唯一
  4. Al (Auto Increment) 值自动增长
  5. Default/Expression默认值

3.向表中写入数据

image-20220713194136724

什么是SQL

SQL (英文全称: Structured Query Language)是结构化查询语言,专门用来访问和处理数据库的编程语言。能够让我们以编程的形式,操作数据库里面的数据。

三个关键点:

  1. SQL是一门数据库编程语言
  2. 使用SQL语言编写出来的代码,叫做SQL语句
  3. SQL语言只能在关系型数据库中使用(例如MySQL、Oracle、 SQL Server)。非关系型数据库(例如Mongodb)不支持SQL语言

SQL能做什么

  1. 从数据库中查询数据
  2. 向数据库中插入新的数据
  3. 更新数据库中的数据
  4. 从数据库删除数据
  5. 可以创建新数据库
  6. 可在数据库中创建新表
  7. 可在数据库中创建存储过程、 视图
  8. ete…

SQL的学习目标

重点掌握如何使用SQL从数据表中:

查询数据(select) 、 插入数据(insert into)、更新数据(update). 删除数据 (delete)

额外需要掌握的4种SQL语法:

where条件、and和or运算符、orderby排序、count(*) 函数

SQL语法

SQL的SELECT语句

1.语法

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

image-20220713200549136

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

2.SELECT*示例

我们希望从users表中选取所有列,可以使用符号*取代列的名称,示例如下:

image-20220713201000975

3.SELECT列名称示例

如需获取名为"username"和"password"的列的内容(从名为"users"的数据库表),请使用下面的SELECT语句:

image-20220713201821882

SQL的INSERT INTO语句

1.语句

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

image-20220713202552024

2.INSERT INTO示例

向users表中,插入一条username为tony stark, password 为098123的用户数据,示例如下: .

image-20220713202637208

SQL的UPDATE语句

1.语句

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

image-20220713203137364

2.UPDATE示例-更新某一行中的一个列

把users表中id为7的用户密码,更新为888888.示例如下:

image-20220713203310275

3.UPDATE示例-更新某一行中的若干列

把users表中id为2的用户密码和用户状态,分别更新为admin123和1.示例如下: .

image-20220713203839910

SQL的DELETE语句

1.语法

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

image-20220713204215255

2.DELETE示例

从users表中,删除id为4的用户,示例如下:

image-20220713204302189

注意:一定要加where

SQL的WHERE子句

1.语法

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

image-20220713204639112

2.可在where子句中使用的运算符

下面的运算符可在where子句中使用,用来限定选择的标准:

image-20220713204859441

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

3.WHERE子句示例

可以通过WHERE子句来限定SELECT的查询条件:

image-20220713205003534

SQL的AND和OR运算符

1.语法

AND和OR可在WHERE子语句中把两个或多个条件结合起来。

  • AND表示必须同时满足多个条件,相当于JavaScript中的&&运算符,例如if(a!== 10&&a!== 20)
  • OR表示只要满足任意一个条件即可. 相当于JavaScript中的II运算符,例如if(a!== 10||a!== 20)
2.AND运算符示例

使用AND来显示所有status为0,并且id小于3的用户:

image-20220713205734070

3.OR运算符示例

使用OR来显示所有status为1,或者username为zs的用户:

image-20220713205927224

SQL的ORDER BY子句

1.语法
  • ORDER BY语句用于根据指定的列对结果集进行排序。
  • ORDER BY语句默认按照升序对记录进行排序。
  • 如果您希望按照降序对记录进行排序,可以使用ASC(可省略)关键字。
  • 如果您希望按照降序对记录进行排序,可以使用DESC关键字。
2.OPDER BY 子句-升序排序

对users表中的数据,按照status字段进行升序排序,示例如下:

image-20220713210340012

3.ORDER BY 子句-降序排序

对users表中的数据,按照id字段进行降序排序,示例如下:

image-20220713210729998

4.ORDER BY子句-多重排序

对users表中的数据,先按照status字段进行降序排序,再按照username的字母顺序,进行升序排序,示例如下:

image-20220713211027356

SQL的COUNT(*)函数

1.语法

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

image-20220713211522705

2.COUNT(*)实例

查询users表中status为0的总数据条数:

image-20220713211705196

2.使用AS为列设置别名

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

image-20220713211857686

image-20220713212153424

在项目中操作数据库步骤

在项目中操作mySQL的步骤

  1. 安装操作MySQL数据库的第三方模块(mysql)
  2. 通过mysql模块连接到MySQL数据库
  3. 通过mysql模块执行SQL语句

image-20220713212735747

安装与配置musql模块

1.安装mysql模块

mysql模块是托管于npm上的第三方模块。它提供了在Node.js项目中连接和操作MySQL数据库的能力。

想要在项目中使用它,需要先运行如下命令,将mysql安装为项目的依赖包:

npm install mysql

2.配置mysql模块

在使用mysq|模块操作MySQL数据库之前,必须先对mysql模块进行必要的配置,主要的配置步骤如下:

image-20220713213356159

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

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

image-20220713214251680

‘select 1’ 测试mysql这个模块能否正常工作

使用mysql模块操作mysql数据库

1.查询数据

查询users表中所有的数据:

image-20220713215003242

注意:如果执行的是select查询语句,则执行的结果是数组

2.插入数据

向users表中新增数据,其中username为Spider-Man, password 为pcc321.示例代码如下:

image-20220713215445821

?符号可以进行数据的占位

// 向users表中新增一条数据,其中username的值为Spider-Man,password的值为pcc123
const user = {
    username: 'Spider-Man',
    password: 'pcc123'
};
// 定义待执行的SQL语句
const sqlStr = 'insert into users (usernams,password) values (?,?)';

db.query(sqlStr, [user.username, user.password], (err, results) => {
    // 执行sql语句失败
    if (err) {
        return console.log(err.message);
    };
    // 执行成功
    // 注意:如果执行的是insert into插入语句,则results是一个对象
    // 可以通过affectedRows属性,来判断是否插入数据成功
    if (results.affectedRows === 1) {
        console.log('插入数据成功!');
    };
})
  1. 注意:如果执行的是insert into插入语句,则results是一个对象,可以通过affectedRows属性,来判断是否插入数据成功
  2. 注意:数据的id具有唯一性,所以添加的数据可能不是按照正确顺序添加,使用过某一id的 数据就算被删除其id也不能被替代

3.插入数据的便捷方式

向表中新增数据时,如果数据对象的每个属性和数据表的字段一一对应, 则可以通过如下方式快速插入数据:

image-20220713221320032

// 演示插入数据的便捷方式
const user = {
    usernams: 'Spider-man2',
    password: 'pcc456',
};
// 定义待执行的SQL语句
const sqlStr = 'insert into users set ?';
// 执行SQL语句
db.query(sqlStr, user, (err, results) => {
    if (err) {
        return console.log(err.message);
    };
    if (results.affectedRows === 1) {
        console.log('插入数据成功!');
    }
});

4.更新数据

可以通过以下方法,更新表中的数据:

image-20220713222055845

// 1.要更新的数据对象
const user = {
    id: 6,
    usernams: '张三',
    password: '000'
};
// 2.定义SQL语句
const sqlStr = 'update users set usernams=?,password=? where id=?';
// 3.执行sql语句
db.query(sqlStr, [user.usernams, user.password, user.id], (err, results) => {
    if (err) {
        return console.log(err.message);
    };
    if (results.affectedRows === 1) {
        console.log('更新数据成功!');
    };
});

注意:执行了update语句后,执行的结果,也是一个对象,可以通过affectedRows判断是否更新成功

5.更新数据的便捷方式

更新表数据时,如果数据对象的每个属性和数据表的字段一-对应, 则可以通过如下方式快速更新表数据:

image-20220713223115964

// 演示更新数据的便捷方式
const user = {
    id: 6,
    usernams: '李四',
    password: '000'
};
// 定义SQL语句
const sqlStr = 'update users set ? where id=?';
// 执行sql语句
db.query(sqlStr, [user, user.id], (err, results) => {
    if (err) {
        return console.log(err.message);
    };
    if (results.affectedRows === 1) {
        console.log('更新数据成功!');
    };
})

6.删除数据

在删除数据时,推荐根据id这样的唯一标识,来删除对应的数据。示例如下:

image-20220713223644939

// 删除id为5的用户
const sqlStr = 'delete from users where id=?';

db.query(sqlStr, 5, (err, results) => {
    if (err) {
        return console.log(err.message);
    };
    if (results.affectedRows === 1) {
        console.log('删除数据成功!');
    };
})

7.标记删除

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

所谓的标记删除,就是在表中设置类似于status这样的状态字段,来标记当前这条数据是否被删除。
当用户执行了删除的动作时,我们并没有执行DELETE语句把数据删除掉,而是执行了UPDATE语句,将这条数据对应的status字段标记为删除即可。

image-20220713224853028

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

8.获取指定数量的数据

SELECT * FROM 表名 LIMIT 0,30;

  • 获取第一个到第30个

SELECT * FROM 表名 LIMIT 30,30;

  • 获取第31个到第60个

9.关键词搜索

SELECT * FROM 表名 WHERE 表头 LIKE “%关键词%”;

10.多表查询相同参数

SELECT *
FROM shopcar,goods
WHERE shopcar.goodId = goods.id AND shopcar.username=123456;

SELECT *
FROM 表名1,表名2
WHERE 表名1.表头 = 表名2.表头 AND 表名1.表头=参数;

适用于你这个表中对应的id和另一个表中的数据对应,但是你又获取不到他们相同的所有数据,可以使用这个sql语句获取,而且还将其数据合并

注意:

results返回的是一个数组,要加上**results[0]**就可以获取到这个数组上的任意属性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue.js 是一款前端框架,主要负责构建用户界面。而 MySQL 是一款关系型数据库,主要用于存储数据。Vue.js 本身并不能直接连接 MySQL 数据库,但可以通过与后端技术(如 Node.js、PHP等)进行配合来实现连接。 以下是一个简单的示例,演示如何使用 Vue.js 和 Node.js 来连接 MySQL 数据库: 1. 创建一个 Vue.js 项目 使用 Vue CLI 来创建一个新的 Vue.js 项目: ``` vue create my-project ``` 2. 安装依赖 在项目根目录下,安装以下依赖: ``` npm install axios mysql --save ``` - `axios`:用于发送 HTTP 请求。 - `mysql`:用于连接 MySQL 数据库。 3. 编写后端代码 创建一个 Node.js 服务器,并编写一个接口用于连接 MySQL 数据库: ``` const express = require('express'); const app = express(); const mysql = require('mysql'); const connection = mysql.createConnection({ host: 'localhost', user: 'root', password: 'password', database: 'mydatabase' }); app.get('/users', (req, res) => { const query = 'SELECT * FROM users'; connection.query(query, (error, results, fields) => { if (error) throw error; res.json(results); }); }); app.listen(3000, () => { console.log('Server listening on port 3000'); }); ``` 4. 编写前端代码 在 Vue.js 的组件中,使用 `axios` 发送请求来获取从后端返回的数据: ``` <template> <div> <ul> <li v-for="user in users" :key="user.id">{{ user.name }}</li> </ul> </div> </template> <script> import axios from 'axios'; export default { data() { return { users: [] }; }, mounted() { axios.get('http://localhost:3000/users') .then(response => { this.users = response.data; }) .catch(error => { console.log(error); }); } }; </script> ``` 在以上代码中,我们通过 `axios.get()` 发送 GET 请求到服务器,获取从 MySQL 数据库返回的用户数据,并将其渲染到页面上。 以上就是一个简单的示例,演示了如何使用 Vue.js 和 Node.js 来连接 MySQL 数据库。当然,这只是一个示例,实际应用中需要更加完善和安全的代码来连接数据库

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值