>웹 프론트엔드 >JS 튜토리얼 >Node 프로젝트에서 MySQL을 운영하는 방법에 대해 이야기해보겠습니다.

Node 프로젝트에서 MySQL을 운영하는 방법에 대해 이야기해보겠습니다.

青灯夜游
青灯夜游앞으로
2023-01-09 10:36:331800검색

노드 프로젝트에서 MySQL을 어떻게 운영하나요? 다음 기사에서는 데이터베이스 관리를 위한 여러 SQL 문에 대해 설명하고 Express 프로젝트에서 MySQL을 작동하는 방법을 소개합니다. 도움이 되기를 바랍니다.

Node 프로젝트에서 MySQL을 운영하는 방법에 대해 이야기해보겠습니다.

데이터베이스


데이터베이스는 데이터를 정리 , 저장 관리 하는 데 사용되는 창고입니다. 오늘날의 세계는 많은 데이터로 가득 찬 데이터로 가득한 인터넷 세상입니다. 여행 기록, 소비 기록, 검색한 웹 페이지, 보낸 메시지 등 다양한 데이터 소스가 있습니다. 텍스트 형태의 데이터 외에 이미지, 음악, 사운드 등이 모두 데이터입니다. 인터넷 세계에서는 데이터 관리를 용이하게 하기 위해 데이터베이스 관리 시스템(통칭: 데이터베이스)이라는 개념이 있습니다. 사용자는 데이터베이스의 데이터 추가, 쿼리, 업데이트 및 삭제와 같은 작업을 수행할 수 있습니다.

데이터베이스 분류 :

MySQL 데이터베이스 (현재 가장 널리 사용되고 인기 있는 오픈 소스 무료 데이터베이스, Community + Enterprise)

Oracle 데이터베이스 (유료)

SQL Server 데이터베이스(유료)

Mongodb 데이터베이스(Community + Enterprise)

비교: MySQL, Oracle 및 SQL Server는 전통적인 데이터베이스입니다(관계형 데이터베이스 또는 SQL 데이터베이스라고도 함) ) , 이 세 가지는 동일한 설계 개념과 유사한 사용법을 가지고 있습니다. MongoDB는 새로운 유형의 데이터베이스(비관계형 데이터베이스 또는 NoSQL 데이터베이스라고도 함)로 기존 데이터베이스의 단점을 어느 정도 보완합니다.

전통적인 데이터베이스의 데이터 구성 구조: 전통적인 데이터베이스에서 데이터의 구성 구조는 데이터베이스, 테이블, 행, 필드의 네 가지 범주로 구분됩니다.

실제 개발에서 라이브러리, 테이블, 행 및 필드 간의 관계: 실제 프로젝트 개발에서는 일반적인 상황에서 각 프로젝트가 독립적인 데이터베이스에 해당합니다 다른 데이터가 데이터베이스에 저장되어야 합니다. 예를 들어, 사용자 데이터는 users 테이블에 저장되고, 책 데이터는 books 테이블에 저장됩니다;각 테이블에 저장되는 특정 정보는 필드에 의해 결정됩니다. 예를 들어, ID를 디자인할 수 있습니다. 사용자 테이블의 경우 테이블의 세 가지 필드, 사용자 이름 및 비밀번호 는 각 특정 데이터를 나타냅니다.

MySQL 설치 및 구성

개발자의 경우 개발 요구 사항을 충족하기 위해 MySQL Server 및 Navicat만 설치하면 됩니다.

MySQL Server: 데이터 저장 및 서비스를 제공하는 데 특별히 사용되는 소프트웨어

Navicat: MySQL Server에 저장된 데이터를 편리하게 운영할 수 있는 시각적 MySQL 관리 도구

구체적인 설치 튜토리얼은 내 이전 항목을 참조하세요. 기사: MySQL 설치. 시각화 도구를 사용하면 테이블을 생성하고 테이블 데이터를 편집하는 것이 매우 쉬워졌습니다.

SQL 관리 데이터베이스

SQL(전체 영어 이름: Structured Query Language)은 구조적 쿼리 언어로, 특히 데이터베이스에 액세스하고 처리하는 데 사용되는 프로그래밍 언어입니다. 이를 통해 프로그래밍 형태로 데이터베이스의 데이터를 조작할 수 있습니다.

참고:

1) SQL은 데이터베이스 프로그래밍 언어입니다.

2) SQL 언어로 작성된 코드를 SQL 문이라고 합니다.

3) SQL 언어는 관계형 데이터베이스에서만 사용할 수 있습니다(예: MySQL , 오라클, SQL 서버). 비관계형 데이터베이스(예: Mongodb)는 SQL 언어를 지원하지 않습니다.

SELECT 문

테이블에서 데이터를 쿼리하는 데 사용됩니다. 실행 결과는 결과 테이블(결과 세트라고 함)에 저장됩니다. 구문은 다음과 같습니다. (참고: SQL 문의 키워드는 대/소문자를 구분하지 않으며 SELECT는 select와 동일하고 FROM은 from과 동일합니다.)

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

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

INSERT INTO 문

은 데이터 테이블에 새 데이터 행을 삽입하는 데 사용됩니다.

-- 向指定表中插入数据,列的值通过 values 一一指定
-- 列和值要一一对应,多个列和多个值之间,要使用英文逗号分隔
insert into table_name (列1,列2...) values (值1,值2,值3)

Update 문

은 테이블의 데이터를 수정하는 데 사용됩니다.

-- 用 UPDATE 指定要更新哪个表中的数据,用 SET 指定列对应的新值,用 WHERE 指定更新的条件
update 表名称 set 列名称 = 新值 where 列名称 = 某值

DELETE 문

은 테이블의 행을 삭제하는 데 사용됩니다.

rreee

WHERE

절은 선택 기준을 제한하는 데 사용됩니다. SELECT, UPDATE 및 DELETE 문에서는 WHERE 절을 사용하여 선택 기준을 제한할 수 있습니다. (일부 SQL 버전에서는 != 로 작성할 수 있습니다.)

>과 같지 않습니다. <은 >=보다 큼 은 <=작거나 같음BETWEENin a 특정 범위LIKE특정 패턴 검색

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

-- 查询 status 为 1 的所有用户
select * from users where status=1
-- 查询 id 大于 2 的所有用户
select * from users where id>2
-- 查询 username 不等于 admin 的所有用户
select * from users where username<>'admin'<h3 id="AND%E5%92%8COR"><strong>AND和OR</strong></h3>
<p>AND和OR可在WHERE子语句中把两个或多个条件结合起来。</p>
<p>AND表示必须同时满足多个条件,相当于JS中的 && 运算符</p>
<p><img alt=""    style="max-width:90%" src="https://img.php.cn/upload/article/000/000/024/3cc06dc44f0b2b5dc86f5fb3b6881a23-7.png"  style="max-width:90%"></p>
<p>OR表示只要满足任意一个条件即可,相当于JS中的 || 运算符</p>
<p><img alt=""    style="max-width:90%" src="https://img.php.cn/upload/article/000/000/024/6a919fc9198576ce31b07caef123af2d-8.png"  style="max-width:90%"></p>
<h3 id="ORDER%20BY%E5%AD%90%E5%8F%A5"><strong>ORDER BY子句</strong></h3>
<p>order by语句用于根据指定的列对结果集进行排序。order by语句默认按照升序对记录进行排序,如果想按照降序对记录进行排序,可以使用<span style="color:#be191c;"><strong> DESC </strong></span>关键字。</p>
<p><img alt=""    style="max-width:90%" src="https://img.php.cn/upload/article/000/000/024/4e55a89f9c966a3ffd3ee77fe6029c34-9.png"  style="max-width:90%"></p>
<p><img alt=""    style="max-width:90%" src="https://img.php.cn/upload/article/000/000/024/4e55a89f9c966a3ffd3ee77fe6029c34-10.png"  style="max-width:90%"></p>
<p><img alt=""    style="max-width:90%" src="https://img.php.cn/upload/article/000/000/024/2f7c5c3574ca21ce011ca58d2e53e002-11.png"  style="max-width:90%"></p>
<h3 id="COUNT(*)%E5%87%BD%E6%95%B0"><strong>COUNT(*)函数</strong></h3>
<p><span style="color:#be191c;"><strong>COUNT(*)</strong></span>函数用于<span style="color:#b95514;"><strong>返回查询结果的总数据条数</strong></span>,语法格式如下:</p>
<p><img alt=""    style="max-width:90%" src="https://img.php.cn/upload/article/000/000/024/2f7c5c3574ca21ce011ca58d2e53e002-12.png"  style="max-width:90%"></p>
<p>使用AS为列设置别名:如果希望给查询出来的列名设置别名,可以使用 AS 关键字:</p>
<p><img alt=""    style="max-width:90%" src="https://img.php.cn/upload/article/000/000/024/9b76d8432b5c57738c0bf5ccbac1cd83-13.png"  style="max-width:90%"></p>
<h2 id="%E5%9C%A8Express%E9%A1%B9%E7%9B%AE%E4%B8%AD%E6%93%8D%E4%BD%9CMySQL"><strong>在Express项目中操作MySQL</strong></h2>
<p><img alt=""    style="max-width:90%" src="https://img.php.cn/upload/article/000/000/024/9b76d8432b5c57738c0bf5ccbac1cd83-14.png"  style="max-width:90%"></p>
<p><span style="color:#be191c;"><strong>安装操作MySQL数据库的第三方模块(mysql)</strong></span>:</p>
<p>mysql模块是托管于npm上的第三方模块。它提供了在 Node.js项目中连接和操作MySQL数据库的能力。想要在项目中使用它,需要先运行如下命令,将mysql安装为项目的依赖包:(<span style="color:#be191c;"><strong>注意</strong></span>:如果数据库是8.0以后的,需安装mysql2,因为8.0+版本的加密方式改变,node目前还不支持!)【相关教程推荐:<a href="https://www.php.cn/course/list/24.html" target="_blank">nodejs视频教程</a>、<a href="https://www.php.cn/course.html" target="_blank" textvalue="编程教学">编程教学</a>】</p>
<pre class="brush:php;toolbar:false"># 我的数据库是8.0+版本,安装如下命令即可
npm install mysql2

通过mysql模块连接到MySQL数据库

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

// 导入 mysql 模块
const mysql = require('mysql2')
// 建立与MySQL数据库的连接
const db = mysql.createPool({
  host:'127.0.0.1',    // 数据库的 IP 地址
  port:'3306'          // 数据库的端口号
  user:'root',         // 登录数据库的账号
  password:'123456',   // 登录数据库的密码
  database:'mysql_test'// 指定要操作哪个数据库
})

通过mysql模块执行SQL语句

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

// 导入 mysql 模块
const mysql = require('mysql2')
// 建立与MySQL数据库的连接
const db = mysql.createPool({
  host:'127.0.0.1',    // 数据库的 IP 地址
  port:'3306',
  user:'root',         // 登录数据库的账号
  password:'123456',   // 登录数据库的密码
  database:'mysql_test'// 指定要操作哪个数据库
})

// 检测 mysql 模块能否正常执行
db.query('select * from users',(err,results)=>{
  if(err) return console.log(err.message);
  // 只要能打印出 [RowDataPacket {'1','1'} ]的结果,就证明数据库连接正常
  console.log(results);
})

向 users 表中新增数据,其中username为张三,password为123000,代码如下:

// 向数据库中添加数据
const thing = {username:'hh',password:123000}
// 待执行的SQL语句,其中英文 ? 表示占位符s
// const dataStr = 'insert into users (username,password) values (?,?)'

// 向表中增添数据时,如果数据对象的每个属性和数据表字段一一对应,则可以通过以下方式简单快速插入语句
const dataStr = 'insert into users set ?'

// 使用数组形式,为 ? 占位符指定具体的值
// db.query(dataStr,[thing.username,thing.password],(err,results)=>{
  
db.query(dataStr,thing,(err,results)=>{
  if(err) return console.log(err.message); // 失败
  // 注意:如果执行的是insert into插入语句,则results是一个对象
  // 可以通过affectedRows属性,来判断是否插入数据成功
  if(results.affectedRows === 1){
     console.log('数据插入成功!');
  }
})

因为 id 具有唯一性,即使你把某条id的记录删掉,它的id下一条数据是用不了的,只能自增。

更新数据对象,可以通过以下方式进行:

// 向数据库中更新数据
const thing = {id:3,username:'aaa',password:123000}
// 待执行的SQL语句,其中英文 ? 表示占位符s
const dataStr = 'update users set username=?,password=? where id=?'
// 调用db. query()执行SQL语句的同时,使用数组依次为占位符指定具体的值
db.query(dataStr,[thing.username,thing.password,thing.id],(err,results)=>{
  if(err) return console.log(err.message); // 失败
  // 可以通过affectedRows属性,来判断是否更新数据成功
  if(results.affectedRows === 1){
     console.log('数据更新成功!');
  }
})

删除数据时,推荐用唯一标识 id 去删除。

// 向数据库中删除数据
const dataStr = 'delete from users where id=?'
db.query(dataStr,4,(err,results)=>{
  if(err) return console.log(err.message); // 失败
  // 可以通过affectedRows属性,来判断是否删除数据成功
  if(results.affectedRows === 1){
     console.log('数据删除成功!');
  }
})

标记删除:使用DELETE语句,会把真正的把数据从表中删除掉。为了保险起见,推荐使用标记删除的形式,来模拟删除的动作。所谓的标记删除,就是在表中设置类似于status这样的状态字段,来标记当前这条数据是否被删除。当用户执行了删除的动作时,我们并没有执行DELETE语句把数据删除掉,而是执行了UPDATE语句,将这条数据对应的status字段标记为删除即可。

// 标记删除:使用 update 语句来替代 delete 语句,只更新数据的状态,并没有真正删除
const dataStr = 'update users set status=1 where id=?'
db.query(dataStr,11,(err,results)=>{
  if(err) return console.log(err.message); // 失败
  // 可以通过affectedRows属性,来判断是否删除数据成功
  if(results.affectedRows === 1){
     console.log('数据删除成功!');
  }
})

更多node相关知识,请访问:nodejs 教程

보다 크거나 같음

위 내용은 Node 프로젝트에서 MySQL을 운영하는 방법에 대해 이야기해보겠습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제