文章目录

  • 介绍
    • 关系型数据库
    • 关系型数据库和非关系型数据库的区别
    • 关系型数据库的优缺点
  • 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相关推荐

  1. MySQL(关系型数据库管理系统)

    MySQL 关系型数据库管理系统, 由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品. MySQL 是最流行的关系型数据库管理系统之一, 在WEB应用方面,MySQL是最好的 RDB ...

  2. mysql关系型数据库的优点和缺点_关系型数据库和非关系型数据库的区别和特点...

    关系型数据库 采用关系模型来组织数据结构的数据库(二维表) cle    DB2    SQLServer    Mysql     SQLite都是关系型数据库 优点:容易理解,它的逻辑类似常见的表 ...

  3. JDBC批处理读取指定Excel中数据到Mysql关系型数据库

    这个demo是有一个Excel中的数据,我需要读取其中的数据然后导入到关系型数据库中,但是为了向数据库中插入更多的数据,循环N次Excel中的结果. 关于JDBC的批处理还可以参考我总结的如下博文: ...

  4. MySQL关系型数据库

    MySQL JavaWeb 学习Java主要可以用来干什么 开发网站-- 让人用 办公类网站 财务系统 人事管理 娱乐性网站 ​ B站 ​ 抖音 ​ 腾讯视频 JavaWeb技术的交互 概述 使用ja ...

  5. 万字长文总结MySQL关系型数据库

    一.数据库介绍 什么是数据库? 数据库的英文单词:data base,简称DB.数据库本质就是一个文件系统,它可以按照特定的格式把数据存储起来,可以方便对存储的数据进行增删改查操作. 数据库的分类 目 ...

  6. 根据数据库表gengxin实体类_Python学习第四十八天记录打call:SQLALchemy操作MySQL关系型数据库...

    1.SQLALchemy使用 安装 pip install sqlalchemy: SQLAlchemy是Python编程语言下的一款开源软件,是PythonSQL工具包和对象关系映射器,它为应用程序 ...

  7. mysql和springboot对照_SpringBoot(六) SpirngBoot与Mysql关系型数据库

    pom.xml文件的配置 org.springframework.boot spring-boot-starter-jdbc mysql mysql-connector-java runtime 写配 ...

  8. mysql关系型数据库生成树形结构,Layui页面渲染树型结构图(详细)

    文章目录 一.学使用DTree 上代码(详细说明注释见) 引入结构 说明 dataFormat:"list" 二.使用MySQL查询结果 说明 三.效果展示 总结 # 前言 项目使 ...

  9. MySQL 关系型数据库设计范式(NF)

    摘要1:https://www.cnblogs.com/xietianjiao/p/10972285.html 摘要2:https://www.cnblogs.com/linjiqin/archive ...

  10. Mac MySQL 数据库配置(关系型数据库管理系统)

    本文已停止更新,点击此链接查看本文最新内容 !!! 前言 MySQL 关系型数据库管理系统. 1.配置准备工作 1)配置数据库准备工作 下载相关软件 mysql-5.7.21-1-macos10.13 ...

最新文章

  1. cufflinks基于QuantFig绘制高级金融图
  2. 以下哪个不是迭代算法的缺点_海量数据分库分表方案(一)算法方案
  3. python牛顿迭代法_python-来自维基百科示例的Gauss-Newton方法的实现
  4. 【深度学习】煮酒论英雄:深度学习CV领域最瞩目的top成果总结
  5. boost::mpl模块实现fold相关的测试程序
  6. sap-ui-core.js reference in Webclient ui
  7. 求助:安装程序无法创建一个DCOM用户帐号来注册.....\valec.exe
  8. 关于jedis2.4以上版本的连接池配置,及工具类
  9. oracle监听 3个配置文件,Oracle 11g 监听 配置修改 说明
  10. 第45届国际大学生程序设计竞赛(ICPC)沈阳站太原理工大学收获1枚铜牌
  11. 设置电脑右下角显示自己的大名
  12. 吐血干货,直播首屏耗时400ms以下的优化实践
  13. java web 学习计划
  14. python画心形代码大全_七夕,程序员的表白代码
  15. 36 《魔鬼数学 : 大数据时代,数学思维的力量》 -豆瓣评分8.3
  16. 硬件设计——DC-DC转换器
  17. JeecgBoot全套开发环境搭建
  18. 机器学习(二)--- KNN(K-Nearest Neighbors)
  19. python一款高颜值的词云包让我拍案叫绝
  20. 误删除文件怎么找回 数据恢复用这些方法

热门文章

  1. 2022年最新河南建筑安全员模拟题库及答案
  2. 零基础入门网络,静态LACP链路捆绑详解,带宽扩容,链路冗余备份
  3. CRM系统管理日常计划
  4. 众包专访:开源中国众包,让未来多一种可能
  5. 【java】java实现pdf根据内容定位插入图片
  6. 修改 mac 截图默认保存位置
  7. 基本技能 100316
  8. 蓝桥杯 方格问题 6x6的方格,沿着格子的边线剪开成两部分。 要求这两部分的形状完全相同
  9. pentaho资源库迁移-MySQL
  10. 层次分析法(AHP)原理_例题应用及代码