数据库(database)是用来组织、存储和管理数据的仓库。
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)。
数据库的架构可以大致区分为三个概括层次:内层、概念层和外层。
SQL概念 | MongoDB 概念 | 解释 |
---|---|---|
database | database | 数据库 |
table | collection | 数据库表 / 集合 |
row | document | 数据记录行 / 文档 |
column | field | 数据字段 / 域 |
index | index | 索引 |
table joins | 表连接,MongoDB不支持 | |
primary key | primary key | 主键,MongoDB自动将_id字段设置为主键 |
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
SQL(英文全称:Structured Query Language)是结构化查询语言,专门用来访问和处理数据库的编程语言。能够让我们以编程的形式,操作数据库里面的数据。
①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 | 为查询出来的列设置别名 |
①安装操作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 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
分享: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
类似于navicate 的数据库管理工具 DataGrip