【Node.js】第九章 数据库

news2024/11/23 17:23:58

目录

1.  数据库的基本概念

1.1 数据库的概念

1.2 数据库的分类

1.3 数据组织结构

2. MySQL使用介绍

2.1 安装MySQL和MySQL Workbench

2.2 MySQL的基本使用

2.3 使用SQL管理数据库

3. 在项目中使用MySQL

3.1 安装和配置MySQL模块

3.2  操作数据


1.  数据库的基本概念

1.1 数据库的概念

数据库是用来组织、存储、管理数据的仓库。用户可以对数据库的数据进行增加、删除、修改、查询的操作。

1.2 数据库的分类

常见数据库:

  • MySQL : 流行度最高的数据库关系型数据库(社区版免费、企业版收费)
  • SQL Server:(收费)关系型数据库
  • Oracle:(收费)关系型数据库
  • Mongodb:非关系型数据库(社区版免费、企业版收费)

1.3 数据组织结构

传统型数据库的数据组织结构包括几个部分:数据库DataBase(DB)、数据表DataTable(DT)、数据行row、字段file

2. MySQL使用介绍

2.1 安装MySQL和MySQL Workbench

2.2 MySQL的基本使用

1. 连接:打开MySQL Workbench连接数据库、输入密码

2. 界面组成部分:

3. 创建数据库 

4. 创建数据表 

 

5. 向数据表插入数据

 

2.3 使用SQL管理数据库

1.SQL的概念

SQL是一门编程语言,可以用来操作数据库的数据,包括查询数据、增加数据、删除数据、修改数据。

2. SELECT语句

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

select * from 表名称 // * 代表查询所有的列

select 列名称 from 表名称 // 查询指定的列数据

把users表里面所有的数据都查询出来: 

 

从users表中查询用户名、密码:

3. INSERT INTO语句

向表中插入数据,语法格式:

insert into table_name(列名1,列名2) values (values1, values2);
// 列名和值要一一对应

4. UPDATE语句

update用于修改表中的数据

 更新多个列,用逗号分隔即可:

 5. DELETE语句

delete from 表名 where 列名 = 值 // 注意要加where条件、否则可能把整个表的数据删除了

 6. where子句

运算符: 

 

 

7. AND OR运算符

and运算符:同时满足多个条件

or: 满足条件之一即可

 

8. ORDER BY

order by升序、降序的子句,默认是升序排序,或者order by后面加 ASC,降序排序就在order by后面加desc

多重排序

 9. count(*)函数

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

select count(*) from 表名

 10. AS

使用as起别名

3. 在项目中使用MySQL

3.1 安装和配置MySQL模块

前提: 已经安装了MySQL软件、视化软件MySQL WorkBench,并且设置了用户名、密码、和创建了指定的数据库。

1.  node安装mysql第三方包

npm install mysql

2.  配置mysql模块

3. 测试配置是否正常

其中select 1这个语句没有实质作用,这里只是去测试配置是否正常

3.2  操作数据

1. 查询数据

const mysql = require('mysql');

const db = mysql.createPool({
    host: '127.0.0.1'
    user: 'root',
    password: 'admin123',
    database: 'my_db_01'
})

const sqlStr = 'select * from users';

db.query(sqlStr, (err, res) => {
    if(err){
        return err.message;
    }
    console.log(res);
})

执行结果:查询的数据数组 

如果是insert into语句,则返回的result是一个对象,可以通过result.affectRows属性值是否为1来判断插入是否成功。如果是select语句,则返回的result是个数组。

插入数据的快捷方式:

定义对象的键值对时和表的列名对应,可快速插入数据。

 2. 更新数据:

 

 3. 删除数据:

4. 标记删除:

使用DELETE语句,会把真正的数据从表中删除掉,为了保险起见,推荐使用标记删除掉形式,来模拟删除的动作,所谓的标记删除,就是在表中设置类似于status这样但状态字段,来标记当前这条数据是否被删除。

用户执行删除的动作时,我们并没有执行DELETE语句把数据删除掉,而是执行了UPDATE语句,将这条数据对应的status字段标记为删除即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/43514.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

word怎么转pdf?word转pdf借助pdf软件即可搞定!

我们在办公的时候,会有word转pdf的办公需求,但是很多人都不清楚word转pdf的方法,那么word怎么转pdf呢?其实方法很简单,利用pdf软件来进行word转pdf的操作即可,如今,市面上pdf软件应接不暇&#…

五、Javascript 空间坐标[尺寸、滑动]

一、尺寸 1.视窗尺寸 document.documentElement.clientWidth&#xff1a;视窗宽度document.documentElement.clientHeight&#xff1a;视窗高度 2.各种尺寸 举例&#xff1a;<div id"gao"></div> 前提&#xff1a;var a document.getElementById(g…

多重共线性如何分析?

判断标准 常见的直观判断方法共有四个&#xff0c;如下&#xff1a; &#xff08;1&#xff09;某些自变量的相关系数值较大&#xff08;比如大于0.8&#xff09;等&#xff0c;可以利用pearson相关系数检验法一般是利用解释变量之间的线性相关程度判断&#xff0c;一般标准是…

Java常用类(二)

目录 JDK8之前的日期时间API java.lang.System类 java.util.Date类 两个构造器的使用 两个方法的使用 java.sql.Date类 涉及两个问题&#xff1a; java.text.SimpleDateFormat类 格式化&#xff1a;日期--->字符串 解析&#xff1a;字符串--->日期&#xff08;格…

基于TM的遥感数据的叶面积指数估算解决方案及或取途径

1、背景与技术路线 叶面积指数是重要的植被结构参数&#xff0c;反演叶面积指数是植被遥感的重要研究内容之一&#xff0c;其影响生 态系统的物质和能量循环&#xff0c;成为作物生长、路面过程、水文和生态等模型的输入参数或状态变量。今 年来&#xff0c;对也铭记指数的反演…

Spark系列之Spark的RDD详解

title: Spark系列 第五章 Spark 的RDD详解 5.1 RDD概述 ​ RDD 是 Spark 的基石&#xff0c;是实现 Spark 数据处理的核心抽象。那么 RDD 为什么会产生呢&#xff1f; ​ Hadoop的MapReduce是一种基于数据集的工作模式&#xff0c;面向数据&#xff0c;这种工作模式一般是从…

Python_数据容器_集合set

一、集合set的定义 考虑使用集合的场景&#xff0c;通过已经学习的列表、元组、字符串三个数据容器特性来分析&#xff1a; 列表可以修改、支持重复元素且有序 元组、字符串、不可修改、支持重复元素且有序 局限就在于&#xff1a;它们支持重复元素 集合定义语法&#xff1…

KubeVirt with DPDK

发布于2022-11-25 15:52:32阅读 1020 Kubernetes优秀的架构设计&#xff0c;借助multus cni intel userspace cni 可以屏蔽了DPDK底层的复杂&#xff0c;让KubeVirt 支持DPDK变得比较容易。 因为 e2e验证 等原因&#xff0c;KubeVirt社区至今未加入对DPDK支持&#xff0c;本篇…

有用的CSS代码块

文章目录调试 DOM 元素的 border通用的网页样式调试 DOM 元素的 border 显示所有DOM元素的border&#xff0c;方便调试网页元素的相对布局。 * {outline: auto; }如何用javascript设置某个网页的style(复制以下代码到浏览器控制台执行即可)&#xff1f; // wuyujin1997 var …

PIC单片机5——串口 中断

//10M晶振 波特率9600 BRG8位波特率发生器 异步模式 #include "p18f458.h" #include "mydelay.h" #pragma config OSCHS,WDTOFF,LVPOFF,DEBUGON void PIC18F_High_isr(void);/*中断服务函数声明*/ void PIC18F_Low_isr(void); void usart_tx(unsigned ch…

基于javaweb房屋租赁管理系统的设计与实现

摘要 当今社会不管房屋出租、出售买卖是必不可少的&#xff0c;人们不管走到哪里都需要有一个温馨的家&#xff0c;有一个落脚之地&#xff0c;所以房源出租市场也是非常火爆&#xff01;不管是房源出租公司或者是个人都需要一套完整的管理系统来掌握整个市场信息。针对这一需求…

观察者模式在spring中的应用

作者&#xff1a;王子源 1 观察者模式简介 1.1 定义 指多个对象间存在一对多的依赖关系&#xff0c;当一个对象的状态发生改变时&#xff0c;所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式&#xff0c;它是对象行为型模式。 …

离散卡尔曼滤波实现

离散卡尔曼滤波基本理论 卡尔曼预报器、平滑器可以参考之前的博客&#xff1a;(2条消息) 卡尔曼滤波器_KPer_Yang的博客-CSDN博客 下面贴上一张图1&#xff0c;很直观&#xff1a;分成时间更新和测量更新两步&#xff0c;其中的KKK和PPP有可能随着时间推移变成常数&#xff0…

STM32实战总结:HAL之RTC

RTC基础知识参考&#xff1a; 51单片机内部外设&#xff1a;实时时钟(SPI)_路溪非溪的博客-CSDN博客 STM32中的RTC 51单片机通常是外置的RTC芯片如DS1302&#xff0c;那么STM32的RTC是什么情况呢&#xff1f; STM32芯片自带RTC&#xff0c;因此不须像其他MCU需外接RTC模块。 先…

年末盘点Android 过去一年与未来的一个走势~

随着Android的发展&#xff0c;有些人对Android未来感到茫然&#xff0c;不少人可能会产生这样的疑惑&#xff1a;“从事Android是不是没有前途&#xff0c;Android开发还有什么值得学&#xff1f;“这类话题一直让大家争论不休&#xff0c;它并没有一个确切、唯一的标准答案&a…

中介者模式

思考中介者模式 当多个类&#xff08;对象&#xff09;耦合严重时&#xff0c;通过中介者模式创建一个中介者&#xff0c;多个类不直接交互了&#xff0c;变成和中介者进行交互&#xff0c;松散耦合 1.中介者模式的本质 中介者模式的本质:封装交互。 中介者模式的目的&#xff…

关于无感刷新Token,我是这样子做的

本文正在参加「金石计划 . 瓜分6万现金大奖」 什么是JWT JWT是全称是JSON WEB TOKEN&#xff0c;是一个开放标准&#xff0c;用于将各方数据信息作为JSON格式进行对象传递&#xff0c;可以对数据进行可选的数字加密&#xff0c;可使用RSA或ECDSA进行公钥/私钥签名。 使用场景…

WPSpell将拼写检查添加到VCL应用程序

WPSpell将拼写检查添加到VCL应用程序 WPSpell包括键入功能时的拼写。拼写错误的单词带有下划线&#xff0c;可以使用上下文菜单进行更正。它还包括一个传统的拼写检查对话框&#xff0c;并支持多个词典。WPSpell特别适合与WPTools一起使用。 WPSpell功能 键入时进行拼写检查。 …

1-FreeRTOS入门指南

本专栏是根据官方提供的文档进行FreeRTOS的各个功能函数的说明&#xff0c;以及函数的使用 本专栏不涉及动手操作&#xff0c;只是对原理进行说明&#xff0c;FreeRTOS基础知识篇更新完成会对如何在开发板上进行上手实战操作。 这里不会对比其他RTOS的优缺点&#xff0c;因为每…

2、Redis中简单动态字符串的简介,也就是Redis中的键和值的字符串底层表达

简介 首先在Redis中&#xff0c;没有直接使用C语言传统字符串表示(以空字符结尾的字符数组,以下简称C字符串)&#xff0c;而是自己构建了一种名为简单动态字符串(simple dynamic string,SDS)的抽象类型(可以简单的理解为Java中的String 类)&#xff0c;并且将SDS用作Redis的默…