MySql关系型数据库——node
文章目录
- 介绍
- 关系型数据库
- 关系型数据库和非关系型数据库的区别
- 关系型数据库的优缺点
- Sql语句
- 基本操作
- 多表查询
- 外键约束
- nodejs操作数据库(mysql)
- 一般查询
- 带参数的查询
- 插入操作
- 更新操作
- 删除操作
介绍
关系型数据库
- 付费:Oracle、SQL Server、DB2、Sybase
- 开源免费:MySql、PostgreSQL
关系型数据库和非关系型数据库的区别
关系型和非关系型数据库的主要差异是数据存储的方式。
- 关系型数据天然就是表格式的,因此存储在数据表的行和列中。数据表可以彼此关联协作存储,也很容易提取数据。
- 与其相反,非关系型数据不适合存储在数据表的行和列中,而是大块组合在一起。非关系型数据通常存储在数据集中,就像文档、键值对或者图结构。你的数据及其特性是选择数据存储和提取方式的首要影响因素。
- 关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织
- 非关系型数据库严格.上不是一种数据库,应该是- -种数据结构化存储方法的集合,可以是文档或者键值对等。
关系型数据库的优缺点
优点:
1、易于维护:都是使用表结构,格式-致;
2、使用方便: SQL语言通用,可用于复杂查询;
3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。
缺点:
1、读写性能比较差,尤其是海量数据的高效率读写;
2、固定的表结构,灵活度稍欠;
3、高并发读写需求,传统关系型数据库来说,硬盘I/O是-个很大的瓶颈。
Sql语句
基本操作
- 插入:
insert into students (name,score,gender,class_id)values('yang',100,1,1)
- 更新:
update students set score = 80 where name ='yang'
- 删除:
delete from students where id =1
- 查询
select * from students
select name,score from students
select * from students where gender =1
select * from students where gender =1 and score >=100
查找名字中包含a的(%表示一个或多个字符)
select * from students where name like '%a%'
排序查询(从小到大)
select * from students order by score
排序查询(从大到小)
select * from students order by score desc
分页查询(要偏移量为0的两条数据)
select * from students limit 2 offset 0
查找数据条数(num表示数据书,可以自己起名字)
select count(*) num from students
多表查询
- 笛卡尔查询
select * from students,classes
- 连表查询
select students.name,students.class_id,classes.name from students inner join classes on students.class_id = classes.id
可以给表起别名
select s.name,s.class_id,c.name from students s inner join classes c on s.class_id = c.id
对于两个表相同的列在连表查询时也可以将列重命名
select s.name sname,s.class_id,c.name cname from students s inner join classes c on s.class_id = c.id
- 内连接:(
inner join
)
单写join
默认是inner join
表示两表公共字段取相同的部分
select s.name sname,s.class_id,c.name cname from students s inner join classes c on s.class_id = c.id
- 左外连接
left join
select s.name sname,s.class_id,c.name cname from students s left join classes c on s.class_id = c.id
- 右外连接
right join
select s.name sname,s.class_id,c.name cname from students s right join classes c on s.class_id = c.id
- 全外连接
外键约束
外键
如果公共关键字在一个关系中是主关键字(这个表是父表
),那么这个公共关键字被称为另一个关系的外键(这个表是子表
)。
- CASCADE(级联)
在父表上update/delete记录时,同步update/delete掉子 表的匹配记录 - SET NULL
在父表上update/delete记录时,将子表上匹配记录的列设为null (要注意子表的外键列不能为not null) - NO ACTION
如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作
RESTRICT - 同no action,都是立即检查外键约束
图像化设置外键
sql语句建表时设置外键
constraint student_class foreign key (class_id) references classes(id),
nodejs操作数据库(mysql)
一般查询
- 下载模块:
npm i --save mysql2
(这里以express框架演示:npm i --save express
) - 数据库查询
index.js
const express = require("express")
const app = express()
const mysql2 = require("mysql2")app.get("/", async (req, res) => {// 创建连接池,进行操作const config = getDBConfig()const promisePool = mysql2.createPool(config).promise()var users = await promisePool.query("select * from students")console.log(users[0])res.send({ok: 1,data:users[0]})
})app.listen(3000)function getDBConfig(){return {host: '127.0.0.1',port: 3306,user: "数据库用户名",password: "密码",database: "数据库名",connectionLimit:1}
}
查询结果:
带参数的查询
- 使用
${变量名}
格式
const express = require("express")
const app = express()
const mysql2 = require("mysql2")app.get("/", async (req, res) => {// 创建连接池,进行操作const config = getDBConfig()const promisePool = mysql2.createPool(config).promise()var name ="yang"var users = await promisePool.query(`select * from students where name="${name}"`)console.log(users[0])res.send({ok: 1,data:users[0]})
})app.listen(3000)function getDBConfig(){return {host: '127.0.0.1',port: 3306,user: "root",password: "0303.yang",database: "yang_text",connectionLimit:1}
}
查询结果:
- 使用占位符(建议)
var users = await promisePool.query(`select * from students where name=?`,[name])
输出:
插入操作
const express = require("express")
const app = express()
const mysql2 = require("mysql2")app.get("/", async (req, res) => {// 创建连接池,进行操作const config = getDBConfig()const promisePool = mysql2.createPool(config).promise()var name ="yang"var users = await promisePool.query(`insert into students (name,score,gender,class_id)values(?,?,?,?)`,[name,120,1,2])console.log(users[0])res.send({ok: 1,data:users[0]})
})app.listen(3000)function getDBConfig(){return {host: '127.0.0.1',port: 3306,user: "root",password: "0303.yang",database: "yang_text",connectionLimit:1}
}
输出:
更新操作
const express = require("express")
const app = express()
const mysql2 = require("mysql2")app.get("/", async (req, res) => {// 创建连接池,进行操作const config = getDBConfig()const promisePool = mysql2.createPool(config).promise()var name ="xiaoba"var users = await promisePool.query(`update students set name=?,gender=2 where id=?`,[name,9])console.log(users[0])res.send({ok: 1,data:users[0]})
})app.listen(3000)function getDBConfig(){return {host: '127.0.0.1',port: 3306,user: "root",password: "0303.yang",database: "yang_text",connectionLimit:1}
}
删除操作
const express = require("express")
const app = express()
const mysql2 = require("mysql2")app.get("/", async (req, res) => {// 创建连接池,进行操作const config = getDBConfig()const promisePool = mysql2.createPool(config).promise()var name ="xiaoba"var users = await promisePool.query(`delete from students where id=?`,[9])console.log(users[0])res.send({ok: 1,data:users[0]})
})app.listen(3000)function getDBConfig(){return {host: '127.0.0.1',port: 3306,user: "root",password: "0303.yang",database: "yang_text",connectionLimit:1}
}
MySql关系型数据库——node相关推荐
- MySQL(关系型数据库管理系统)
MySQL 关系型数据库管理系统, 由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品. MySQL 是最流行的关系型数据库管理系统之一, 在WEB应用方面,MySQL是最好的 RDB ...
- mysql关系型数据库的优点和缺点_关系型数据库和非关系型数据库的区别和特点...
关系型数据库 采用关系模型来组织数据结构的数据库(二维表) cle DB2 SQLServer Mysql SQLite都是关系型数据库 优点:容易理解,它的逻辑类似常见的表 ...
- JDBC批处理读取指定Excel中数据到Mysql关系型数据库
这个demo是有一个Excel中的数据,我需要读取其中的数据然后导入到关系型数据库中,但是为了向数据库中插入更多的数据,循环N次Excel中的结果. 关于JDBC的批处理还可以参考我总结的如下博文: ...
- MySQL关系型数据库
MySQL JavaWeb 学习Java主要可以用来干什么 开发网站-- 让人用 办公类网站 财务系统 人事管理 娱乐性网站 B站 抖音 腾讯视频 JavaWeb技术的交互 概述 使用ja ...
- 万字长文总结MySQL关系型数据库
一.数据库介绍 什么是数据库? 数据库的英文单词:data base,简称DB.数据库本质就是一个文件系统,它可以按照特定的格式把数据存储起来,可以方便对存储的数据进行增删改查操作. 数据库的分类 目 ...
- 根据数据库表gengxin实体类_Python学习第四十八天记录打call:SQLALchemy操作MySQL关系型数据库...
1.SQLALchemy使用 安装 pip install sqlalchemy: SQLAlchemy是Python编程语言下的一款开源软件,是PythonSQL工具包和对象关系映射器,它为应用程序 ...
- mysql和springboot对照_SpringBoot(六) SpirngBoot与Mysql关系型数据库
pom.xml文件的配置 org.springframework.boot spring-boot-starter-jdbc mysql mysql-connector-java runtime 写配 ...
- mysql关系型数据库生成树形结构,Layui页面渲染树型结构图(详细)
文章目录 一.学使用DTree 上代码(详细说明注释见) 引入结构 说明 dataFormat:"list" 二.使用MySQL查询结果 说明 三.效果展示 总结 # 前言 项目使 ...
- MySQL 关系型数据库设计范式(NF)
摘要1:https://www.cnblogs.com/xietianjiao/p/10972285.html 摘要2:https://www.cnblogs.com/linjiqin/archive ...
- Mac MySQL 数据库配置(关系型数据库管理系统)
本文已停止更新,点击此链接查看本文最新内容 !!! 前言 MySQL 关系型数据库管理系统. 1.配置准备工作 1)配置数据库准备工作 下载相关软件 mysql-5.7.21-1-macos10.13 ...
最新文章
- cufflinks基于QuantFig绘制高级金融图
- 以下哪个不是迭代算法的缺点_海量数据分库分表方案(一)算法方案
- python牛顿迭代法_python-来自维基百科示例的Gauss-Newton方法的实现
- 【深度学习】煮酒论英雄:深度学习CV领域最瞩目的top成果总结
- boost::mpl模块实现fold相关的测试程序
- sap-ui-core.js reference in Webclient ui
- 求助:安装程序无法创建一个DCOM用户帐号来注册.....\valec.exe
- 关于jedis2.4以上版本的连接池配置,及工具类
- oracle监听 3个配置文件,Oracle 11g 监听 配置修改 说明
- 第45届国际大学生程序设计竞赛(ICPC)沈阳站太原理工大学收获1枚铜牌
- 设置电脑右下角显示自己的大名
- 吐血干货,直播首屏耗时400ms以下的优化实践
- java web 学习计划
- python画心形代码大全_七夕,程序员的表白代码
- 36 《魔鬼数学 : 大数据时代,数学思维的力量》 -豆瓣评分8.3
- 硬件设计——DC-DC转换器
- JeecgBoot全套开发环境搭建
- 机器学习(二)--- KNN(K-Nearest Neighbors)
- python一款高颜值的词云包让我拍案叫绝
- 误删除文件怎么找回 数据恢复用这些方法