mysql 、MongoDB 概念 及 在Express中的使用

文章目录

        • 第一章、数据库的基本概念及MySQL安装并配置
          • 1.1、数据库概念
            • 1)分类
            • 数据库分类
            • 2)关系型数据库的组织结构
            • 3)配置mysql环境
        • 第二章、MySQL的基本使用
          • 2.1、基本语法
          • 2.2、在Express中操作MySQL
        • 第三章、MongoDB

第一章、数据库的基本概念及MySQL安装并配置

1.1、数据库概念

数据库(database)是用来组织、存储和管理数据的仓库。

1)分类
  • 关系型数据库

mysql、sqlserver、db2、oracle
特点:Atomic原子性,Consistency一致性,Isolation隔离性,Durability持久性

  • 非关系型数据库:轻量、高效、自由

mongpDB、Hbase、Redis

其中,MySQL、Oracle、SQL Server 属于传统型数据库(又叫做:关系型数据库或SQL数据库),这三者的设计理念相同,用法比较类似。

数据库分类
关系数据库 MySQL、MariaDB(MySQL的代替品,英文维基百科从MySQL转向MariaDB);数据库管理系统都配备了一个开放式数据库连接(ODBC)驱动程序,令各个数据库之间得以互相集成。
非关系型数据库(NoSQL) 非关系型数据库一般不支持ACID特性(Atomic原子性,Consistency一致性,Isolation隔离性,Durability持久性。)。严格上它不是一种数据库,应该是一种数据结构化存储方法的集合。;BigTable(Google)、Cassandra、MongoDB、CouchDB。
Redis,Tokyo Cabinet,Flare:面向高性能并发读写的key-value数据库:key-value数据库的主要特点即使具有极高的并发读写性能,
MongoDB以及CouchDB:面向海量数据访问的面向文档数据库:这类数据库的特点是,可以在海量的数据中快速的查询数据
键值(key-value)数据库 Apache Cassandra(为Facebook所使用):高度可扩展、Dynamo、LevelDB(Google)。

数据库模型:对象模型、层次模型(轻量级数据访问协议)、网状模型(大型数据储存)、关系模型、面向对象模型、半结构化模型、平面模型(表格模型,一般在形式上是一个二维数组。如表格模型数据Excel)。

数据库的架构可以大致区分为三个概括层次:内层、概念层和外层。

2)关系型数据库的组织结构
SQL概念 MongoDB 概念 解释
database database 数据库
table collection 数据库表 / 集合
row document 数据记录行 / 文档
column field 数据字段 / 域
index index 索引
table joins 表连接,MongoDB不支持
primary key primary key 主键,MongoDB自动将_id字段设置为主键
3)配置mysql环境

mysql版本号有

1、【3.X-5.1.X】这是最早期的MySQL版本;

2、【5.4.X-5.7.X】是现在主流的版本;

3、 【6.0.X-7.1.X【是为了更好推广MySQL Cluster版本以及提高性能的版本。

MySQL Server:专门用来提供数据存储和服务的软件。

MySQL Workbench:可视化的MySQL 管理工具,通过它,可以方便的操作存储在MySQL Server中的数据。

查看是否安装

services.msc    //看里面是否有mysql  我的 mysql57

第二章、MySQL的基本使用

2.1、基本语法

SQL(英文全称:Structured Query Language)是结构化查询语言,专门用来访问和处理数据库的编程语言。能够让我们以编程的形式,操作数据库里面的数据。

  1. 三个关键点:

①SQL是一门数据库编程语言

②使用SQL语言编写出来的代码,叫做SQL语句

③SQl 语言只能在关系型数据库中使用(例如MysQL、Oracle、SQL Server).非关系型数据库(例如 Mongodb) 不支持SQL语言

2)4种SQL语法:

where条件、and和or运算符、order by 排序、count(*)函数

在Navicat中的SQL语句

INSERT INTO useinfo(id,userName,password) values (3,'sss','gg')
select * from useinfo
select userName from useinfo
update useinfo set userName = 'lll' where userName = 'wl'
update useinfo set userName = 'wlwl', passWord = '123' where id = 5
delete from useinfo where id=5
SELECT * FROM useinfo order by status ASC   //升序
select * from useinfo order by status DESC   //降序
select * from useinfo order by status DESC ,userName ASC
select COUNT(*) FROM useinfo where status>6
select COUNT(*) as total from useinfo 
=
<> , 可以写为 != 不等于
>
<
>=
<=
BETWEEN 在某个范围内
LIKE 搜索某种模式
AND 同时满足多个条件
OR 只要满足一个条件
ORDER BY 根据指定的列对结果进行排序,默认是升序,降序使用DESC
COUNT(*) 返回查询结果的总数条数
AS 为查询出来的列设置别名
2.2、在Express中操作MySQL

①安装操作MySQL数据库的第三方模块(mysql)

②通过mysql模块连接到MySQL 数据库

③通过mysql模块执行SQL语句

npm install mysql    //安装模块
const mysql = require('mysql')
const db = mysql.createPool({
    host:'127.0.0.1',  //数据库ip,操作自己电脑
    user:'root',
    password:'admin',
    database:'xx'  //指定操作哪个数据库
})
const all = 'select * from useinfo'    //查
const delstr = 'delete from useinfo where id=9'   //删
const updatestr = 'update useinfo set passWord = ? where id = ?'  //改,使用占位符,query中使用数组表示
const useUpdate = {userName:'张三',passWord:'123321',status:4}
const updateNewSTR = 'update useinfo set ? where id=3'    //改的简便写法
const insrtstr = 'insert into useinfo (userName,passWord) values (?,?)'   //使用?占位,使用数组形式为?占位符制定具体的值   增
const user1 = {userName:'oooo',passWord:'111',status:10}
const insetall = 'insert into useinfo set ?'
//db.query(insetall,user1,(err,result)=>{    //简便写法
db.query(insrtstr,['wsx','23'],(err,results)=>{
  if(err) return console.log(err.message)
  console.log(results)
  if(results.affectedRows === 1){
    console.log('插入成功')
  }
})

注:

①insert语句,可使用?占位符,在query中用数组表示具体的值;也可将要插入的完整数组定义为变量,用变量代替数组

②如果执行的是insert、delete、update语句,则执行的result是对象,可根据对象的affectedRows是否为1判断成功,

③如果执行的是select查询语句,则执行的result是数组

④标记删除

使用DELETE语句,会把真正的数据从表中删除掉。为了保险起见,

在表中设置类似于status这样的状态字段,来标记当前这条数据是否被删除。执行了删除动作,其实执行的是update语句,把status字段标记为删除

①ER_ACCESS_DENIED_ERROR: Access denied for user ‘root’@‘localhost’ (using password: YES)
3306被占用

netstat -ano |findstr 3306
taskkill /f /t /im 3316    //成功: 已终止 PID 3316 (属于 PID 828 子进程)的进程。
taskkill /pid 3316 /f

② connect ECONNREFUSED 127.0.0.1:3306

services.msc      //查看安装的服务
NET STOP MySql57  //停止mysql57
net start mysql57   //启动mysql57

第三章、MongoDB

MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
分享:https://www.yuque.com/docs/share/b2605956-6003-4247-bc99-823c6cf5aac9

https://www.mongodb.com/
下载地址 : https://www.mongodb.com/try/download/community?tck=docs_server
安装的5.0.9

mongod --dbpatch E:\collect_file_wl\Node\MongoDB1\db   //启动服务器,并在后面的文件夹下保存内容
mongo   //启动客户端

常用命令

help
//数据库的操作
use wl_test  //创建数据库   ===切换或创建
db.createCollection ("user")   //创建一个user表
show dbs  //显示所有的数据库
db.dropDatabase()   //删除数据库
//表的操作
db.getCollectionNames()   //获取所有的表名称   [ "news", "people", "user" ]
db.people.drop()    //删除people这个表

db.user.save([{uaername:'ww',age:33},{uaername:'wss',age:31}])  //WriteResult({ "nInserted" : 1 })
db.user.find()   //{ "_id" : ObjectId("62ad766be8abbba7790809ad"), "uaername" : "ww", "age" : 33 }
还可存不同字段名的域,在js中需要添加限制

 db.user.remove({username:"张三"}))   //WriteResult({ "nRemoved" : 1 })

db.user.update({uaername:"ww"},{$set:{age:333}})
 db.user.update({uaername:"ww"},{$inc:{age:88}})   //增加88  { "_id" : ObjectId("62ad766be8abbba7790809ad"), "uaername" : "ww", "age" : 421 }

db.user.find({uaername:"ww",age:421})
db.user.find({age:{$gt:300}})   //$gt:大于   $gte:大于等于
db.user.find({age:{$lt:500}})   //$lt:小于    $lte:小于等于
db.user.find({},{"age":1})   //查出来的只显示age
db.user.find({},{age:1},{_id:0}) 
db.user.find({}).sort({age:1})  //按age顺序或逆序排
db.user.find().skip(1).limit(3)   //跳过一条,显示条   用于分页
db.user.find().count()   //总数

可视化工具
windows不适合使用mongodb,

Robomongo Robo3T adminMongo

  • stdio 3T :收费
  • Robo 3T:开源免费 ;被3T收购前被称为Robomongo,它是适用于Windows、MacOS和Linux的跨平台MongoDB GUI管理工具 https://robomongo.org/download

类似于navicate 的数据库管理工具 DataGrip

你可能感兴趣的:(Express,mysql,数据库,sql)