Heim  >  Artikel  >  Web-Frontend  >  Lassen Sie uns darüber sprechen, wie MySQL in einem Node-Projekt betrieben wird

Lassen Sie uns darüber sprechen, wie MySQL in einem Node-Projekt betrieben wird

青灯夜游
青灯夜游nach vorne
2023-01-09 10:36:331667Durchsuche

Wie betreibe ich MySQL im Node-Projekt? Der folgende Artikel wird Ihnen verschiedene SQL-Anweisungen zum Verwalten von Datenbanken vorstellen und Ihnen den Betrieb von MySQL in Express-Projekten vorstellen. Ich hoffe, er wird Ihnen hilfreich sein!

Lassen Sie uns darüber sprechen, wie MySQL in einem Node-Projekt betrieben wird

Datenbank


Eine Datenbank ist ein Lager, in dem Daten organisiert , gespeichert und verwaltet werden. Die heutige Welt ist eine Internetwelt voller Daten, voller vieler Daten. Es gibt viele Datenquellen, wie Reiseaufzeichnungen, Verbrauchsaufzeichnungen, durchsuchte Webseiten, gesendete Nachrichten usw. Neben Texttypdaten sind auch Bilder, Musik und Töne Daten. Um die Verwaltung von Daten in der Internetwelt zu erleichtern, gibt es das Konzept des Datenbankverwaltungssystems (bezeichnet als: Datenbank). Benutzer können Vorgänge wie das Hinzufügen, Abfragen, Aktualisieren und Löschen von Daten in der Datenbank ausführen.

Klassifizierung von Datenbanken :

MySQL-Datenbank (Derzeit die am weitesten verbreitete und beliebteste Open-Source-Datenbank; Community + Enterprise)

Oracle-Datenbank )

SQL Server-Datenbank (kostenpflichtig)

Mongodb-Datenbank(Community + Enterprise)

Vergleich: MySQL, Oracle und SQL Server sind traditionelle Datenbanken (auch: relationale Datenbanken oder SQL-Datenbanken genannt)) Diese drei haben das gleiche Designkonzept und eine ähnliche Verwendung. MongoDB ist ein neuer Datenbanktyp (auch als nicht relationale Datenbank oder NoSQL-Datenbank bezeichnet), der die Mängel herkömmlicher Datenbanken in gewissem Maße ausgleicht.

Datenorganisationsstruktur einer herkömmlichen Datenbank: In einer herkömmlichen Datenbank ist die Organisationsstruktur der Daten in vier Kategorien unterteilt: Datenbank, Tabelle, Zeile und Feld.

Die Beziehung zwischen Bibliotheken, Tabellen, Zeilen und Feldern in der tatsächlichen Entwicklung: In der tatsächlichen Projektentwicklung entspricht unter normalen Umständen jedes Projekt einer unabhängigen Datenbank; In der Datenbank müssen verschiedene Daten gespeichert werden verschiedene Tabellen, zum Beispiel: Benutzerdaten werden in der Benutzertabelle gespeichert, Buchdaten werden in der Büchertabelle gespeichert Die in jeder Tabelle gespeicherten spezifischen Informationen werden durch die Felder bestimmt, zum Beispiel: Wir können ID für entwerfen Benutzertabelle Die drei Felder Benutzername und Passwort ; die Zeilen in der -Tabelle repräsentieren jedes spezifische Datenelement.

MySQL-Installation und -Konfiguration

Für Entwickler müssen sie nur MySQL Server und Navicat installieren, um ihre Entwicklungsanforderungen zu erfüllen.

MySQL Server: Software, die speziell für die Bereitstellung von Datenspeicherung und -diensten verwendet wird.

Navicat: ein visuelles MySQL-Verwaltungstool, mit dem Sie die in MySQL Server gespeicherten Daten bequem verwalten können.

Spezifische Installationsanleitungen finden Sie in Meine vorherigen Artikel:
MySQL-Installation

. Mit Visualisierungstools wird es für uns extrem einfach, Tabellen zu erstellen und Tabellendaten zu bearbeiten.

SQL-Verwaltungsdatenbank

SQL (vollständiger englischer Name: Structured Query Language) ist

strukturierte Abfragesprache , eine Programmiersprache, die speziell für den Zugriff auf und die Verarbeitung von Datenbanken verwendet wird . Es ermöglicht uns, die Daten in der Datenbank in Form von Programmierung zu manipulieren.

Hinweis:1) SQL ist eine Datenbankprogrammiersprache

2) In der SQL-Sprache geschriebene Codes werden SQL-Anweisungen genannt

3) Die SQL-Sprache kann nur in relationalen Datenbanken verwendet werden (Beispiel: MySQL , Oracle, SQL-Server). Nicht relationale Datenbanken (wie Mongodb) unterstützen die SQL-Sprache nicht.

SELECT-Anweisung

Wird zum Abfragen von Daten aus Tabellen verwendet. Die Ergebnisse der Ausführung werden in einer Ergebnistabelle (Ergebnismenge genannt) gespeichert. Die Syntax lautet wie folgt: (Hinweis: Bei Schlüsselwörtern in SQL-Anweisungen wird die Groß-/Kleinschreibung nicht beachtet. SELECT entspricht select und FROM entspricht from.) Die INSERT INTO-Anweisung

wird zum Einfügen neuer Datenzeilen in die Datentabelle verwendet.

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

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

Update-Anweisung

wird zum Ändern der Daten in der Tabelle verwendet.

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

DELETE-Anweisung

wird zum Löschen von Zeilen verwendet s in der Tabelle

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

WHERE Die Klausel

wird verwendet, um die Auswahlkriterien einzuschränken. In SELECT-, UPDATE- und DELETE-Anweisungen kann die WHERE-Klausel verwendet werden, um die Auswahlkriterien einzuschränken. (In einigen SQL-Versionen kann es als != geschrieben werden)

ist nicht gleich

> ist größer als

<

ist kleiner als >=

ist größer oder gleich <=kleiner oder gleich ZWISCHENin einem bestimmten BereichLIKESuche nach einem bestimmten Muster

例如:可以通过 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 教程

Das obige ist der detaillierte Inhalt vonLassen Sie uns darüber sprechen, wie MySQL in einem Node-Projekt betrieben wird. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen