Rumah >hujung hadapan web >tutorial js >Mari kita bincangkan tentang cara mengendalikan MySQL dalam projek Node

Mari kita bincangkan tentang cara mengendalikan MySQL dalam projek Node

青灯夜游
青灯夜游ke hadapan
2023-01-09 10:36:331775semak imbas

Bagaimana untuk mengendalikan MySQL dalam projek Node? Artikel berikut akan bercakap dengan anda tentang beberapa pernyataan SQL untuk mengurus pangkalan data, dan memperkenalkan cara mengendalikan MySQL dalam projek Express Saya harap ia akan membantu anda!

Mari kita bincangkan tentang cara mengendalikan MySQL dalam projek Node

Pangkalan Data


Pangkalan data digunakan untuk menyusun , Gudang yang menyimpan dan mengurus data. Dunia hari ini ialah dunia Internet yang penuh dengan data, penuh dengan banyak data. Terdapat banyak sumber data, seperti rekod perjalanan, rekod penggunaan, halaman web yang dilayari, mesej dihantar, dsb. Selain data jenis teks, imej, muzik dan bunyi adalah semua data. Bagi memudahkan pengurusan data dalam dunia Internet, terdapat konsep sistem pengurusan pangkalan data (singkatan: pangkalan data). Pengguna boleh melakukan operasi seperti menambah, bertanya, mengemas kini dan memadam data dalam pangkalan data.

Klasifikasi pangkalan data :

Pangkalan data MySQL (pada masa ini Pangkalan data percuma sumber terbuka yang paling banyak digunakan dan popular; Komuniti + Perusahaan)

Pangkalan Data Oracle (dikenakan bayaran)

Pangkalan data SQL Server (dicaj)

Pangkalan data Mongodb(Komuniti + Perusahaan)

Perbandingan : MySQL, Oracle, dan SQL Server ialah pangkalan data tradisional (juga dipanggil: pangkalan data hubungan atau pangkalan data SQL Ketiga-tiganya mempunyai konsep reka bentuk yang sama dan penggunaan yang serupa manakala MongoDB ialah jenis pangkalan data baharu (juga dipanggil: pangkalan data bukan perhubungan). pangkalan data SQL). pangkalan data NoSQL), yang menampung kekurangan pangkalan data tradisional pada tahap tertentu.

Struktur organisasi data pangkalan data tradisional : Dalam pangkalan data tradisional, struktur organisasi data dibahagikan kepada pangkalan data (pangkalan data), jadual data (jadual) ) , baris data (baris), dan medan (medan).

Hubungan antara perpustakaan, jadual, baris dan medan dalam pembangunan sebenar: Dalam pembangunan projek sebenar, secara amnya, setiap projek sepadan dengan pangkalan data bebas ;Data yang berbeza harus disimpan dalam jadual pangkalan data yang berbeza, contohnya: data pengguna disimpan dalam jadual pengguna, data buku disimpan dalam jadual buku;Maklumat khusus yang disimpan dalam setiap jadual ditentukan oleh medan Contohnya: kita boleh mereka bentuk tiga medan id, nama pengguna dan kata laluan untuk jadual pengguna ; > jadual Baris dalam mewakili setiap sekeping data tertentu.

Pemasangan dan konfigurasi MySQL

Untuk pembangun, mereka hanya perlu memasang Pelayan MySQL dan Navicat untuk memenuhi keperluan pembangunan mereka.

MySQL Server: perisian yang digunakan khas untuk menyediakan penyimpanan data dan perkhidmatan

Navicat: alat pengurusan MySQL visual yang melaluinya anda boleh mengendalikan data yang disimpan dalam MySQL Server dengan mudah

Untuk tutorial pemasangan khusus, anda boleh merujuk artikel saya sebelum ini:
Pemasangan MySQL

. Dengan alat visualisasi, menjadi sangat mudah bagi kami untuk membuat jadual dan mengedit data jadual.

Pangkalan data pengurusan SQL

SQL (nama penuh Inggeris: Structured Query Language) ialah

Bahasa Pertanyaan Berstruktur, bahasa pengaturcaraan khusus digunakan untuk mengakses dan memproses pangkalan data. Ia membolehkan kita memanipulasi data dalam pangkalan data dalam bentuk pengaturcaraan.

Nota: 1) SQL ialah bahasa pengaturcaraan pangkalan data

2) Ditulis dalam bahasa SQL kod yang keluar dipanggil pernyataan SQL

3) Bahasa SQL hanya boleh digunakan dalam pangkalan data hubungan (contohnya: MySQL, Oracle, pelayan SQL). Pangkalan data bukan perhubungan (seperti Mongodb) tidak menyokong bahasa SQL.

PILIH kenyataan

digunakan untuk menanyakan data daripada jadual. Keputusan pelaksanaan disimpan dalam jadual keputusan (dipanggil set hasil). Sintaksnya adalah seperti berikut: (Nota: Kata kunci dalam pernyataan SQL tidak sensitif huruf besar-besaran, SELECT bersamaan dengan pilih dan FROM bersamaan dengan dari).

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

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

INSERT INTO statement

digunakan Masukkan baris data baharu ke dalam jadual data.

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

Kemas kini pernyataan

digunakan untuk mengubah suai data dalam jadual

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

DELETE statement

digunakan untuk memadamkan baris dalam jadual

-- 从指定的表中,根据 WHERE 条件,删除对应的数据行
delete from 表名称 where 列名称 = 值

Klausa WHERE

digunakan untuk mengehadkan kriteria pemilihan Dalam pernyataan SELECT, UPDATE dan DELETE, klausa WHERE boleh digunakan untuk mengehadkan kriteria pemilihan.

-- 查询语句中的 WHERE 条件
select 列名称 from 表名称 where 列 运算符 值
-- 更新语句中的 WHERE 条件
update 表名称 set 列=新值 where 列 运算符 值
-- 删除语句中的 WHERE 条件
delete from 表名称 where 列 运算符 值

Pengendali berikut boleh digunakan dalam klausa WHERE untuk mengehadkan kriteria pemilihan:

操作符 描述
= 等于
<>(在某些版本的SQL中可以写为 != ) 不等于
> 大于
<小于
>= 大于等于
<=小于等于
BETWEEN在某个范围内
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 教程

Atas ialah kandungan terperinci Mari kita bincangkan tentang cara mengendalikan MySQL dalam projek Node. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:csdn.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam