Comment faire fonctionner MySQL dans un projet Node ? L'article suivant vous parlera de plusieurs instructions SQL pour la gestion des bases de données et vous présentera comment faire fonctionner MySQL dans les projets Express. J'espère qu'il vous sera utile !
Base de données
Une base de données est un entrepôt utilisé pour organiser , stocker et gérer données. Le monde d'aujourd'hui est un monde Internet plein de données, plein de beaucoup de données. Il existe de nombreuses sources de données, comme les relevés de déplacements, les relevés de consommation, les pages web consultées, les messages envoyés, etc. En plus des données de type texte, les images, la musique et les sons sont tous des données. Afin de faciliter la gestion des données dans le monde Internet, il existe le concept de système de gestion de base de données (appelé : base de données). Les utilisateurs peuvent effectuer des opérations telles que l'ajout, l'interrogation, la mise à jour et la suppression de données dans la base de données.
Classification des bases de données :
Base de données MySQL (Actuellement la base de données open source gratuite la plus utilisée et la plus populaire ; Communauté + Entreprise)
Base de données Oracle (payante)
Base de données SQL Server (payante)
Base de données Mongodb(Communauté + Entreprise)
Comparaison : MySQL, Oracle et SQL Server sont des bases de données traditionnelles (également appelées : bases de données relationnelles ou bases de données SQL) ) , ces trois-là ont le même concept de conception et une utilisation similaire ; MongoDB est un nouveau type de base de données (également appelé : base de données non relationnelle ou base de données NoSQL), qui compense dans une certaine mesure les défauts des bases de données traditionnelles.
Structure d'organisation des données d'une base de données traditionnelle : Dans une base de données traditionnelle, la structure organisationnelle des données est divisée en quatre catégories : base de données, table, ligne et champ principalement composés.
La relation entre les bibliothèques, les tables, les lignes et les champs dans le développement réel : Dans le développement réel d'un projet, dans des circonstances normales, chaque projet correspond à une base de données indépendante Différentes données doivent être stockées dans la base de données Dans différentes tables, par exemple : les données utilisateur sont stockées dans la table des utilisateurs et les données du livre sont stockées dans la table des livres ;Les informations spécifiques stockées dans chaque table sont déterminées par les champs, par exemple : nous pouvons concevoir un identifiant pour la table des utilisateurs Les trois champs, nom d'utilisateur et mot de passe ; les lignes de la table représentent chaque élément de données spécifique.
Installation et configuration MySQL
Pour les développeurs, il leur suffit d'installer MySQL Server et Navicat pour répondre à leurs besoins de développement.
MySQL Server : logiciel spécialement utilisé pour fournir du stockage et des services de données
Navicat : un outil de gestion visuelle MySQL, grâce auquel vous pouvez facilement exploiter les données stockées dans MySQL Server
Pour des tutoriels d'installation spécifiques, veuillez vous référer à Mon précédent article : Installation MySQL. Avec les outils de visualisation, il devient extrêmement facile pour nous de créer des tableaux et de modifier les données des tableaux.
SQL Management Database
SQL (nom anglais complet : Structured Query Language) est langage de requête structuré , un langage de programmation spécifiquement utilisé pour accéder et traiter des bases de données . Cela nous permet de manipuler les données de la base de données sous forme de programmation.
Remarque :
1) SQL est un langage de programmation de base de données
2) Les codes écrits en langage SQL sont appelés instructions SQL
3) Le langage SQL ne peut être utilisé que dans des bases de données relationnelles (Par exemple : MySQL , Oracle, serveur SQL). Les bases de données non relationnelles (telles que Mongodb) ne prennent pas en charge le langage SQL.
Déclaration SELECT
Utilisé pour interroger les données des tables. Les résultats de l'exécution sont stockés dans une table de résultats (appelée jeu de résultats). La syntaxe est la suivante : (Remarque : les mots clés dans les instructions SQL ne sont pas sensibles à la casse, SELECT équivaut à select et FROM équivaut à from). L'instruction
-- 这是注释
-- 从 FROM 指定的【表中】,查询出【所有的】数据,* 表示【所有列】
SELECT * FROM 表名称
-- 从 FROM 指定的【表中】,查询出指定 列名称 (字段) 的数据
SELECT 列名称 FROM 表名称
Copier après la connexion
INSERT INTO
est utilisée pour insérer de nouvelles lignes de données dans la table de données.
-- 向指定表中插入数据,列的值通过 values 一一指定
-- 列和值要一一对应,多个列和多个值之间,要使用英文逗号分隔
insert into table_name (列1,列2...) values (值1,值2,值3)
Copier après la connexion
Instruction Update
est utilisée pour modifier les données dans la table
-- 用 UPDATE 指定要更新哪个表中的数据,用 SET 指定列对应的新值,用 WHERE 指定更新的条件
update 表名称 set 列名称 = 新值 where 列名称 = 某值
Copier après la connexion
Instruction DELETE
est utilisée pour supprimer des lignes dans la table
-- 从指定的表中,根据 WHERE 条件,删除对应的数据行
delete from 表名称 where 列名称 = 值
Copier après la connexion
WHERE La clause
est utilisée pour limiter les critères de sélection. Dans les instructions SELECT, UPDATE et DELETE, la clause WHERE peut être utilisée pour limiter les critères de sélection. (Dans certaines versions de SQL, il peut s'écrire != )
n'est pas égal à
> | est supérieur à |
< est inférieur à | | >=
est supérieur ou égal à |
| <=
inférieur ou égal à | | ENTRE
dans une certaine plage | | LIKE
Rechercher un certain motif | | 例如:可以通过 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
Copier après la connexion
通过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'// 指定要操作哪个数据库
})
Copier après la connexion
通过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);
})
Copier après la connexion
向 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('数据插入成功!');
}
})
Copier après la connexion
因为 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('数据更新成功!');
}
})
Copier après la connexion
删除数据时,推荐用唯一标识 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('数据删除成功!');
}
})
Copier après la connexion
标记删除:使用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('数据删除成功!');
}
})
Copier après la connexion
更多node相关知识,请访问:nodejs 教程!
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!