NodeJs06

数据库 databases

--------------------------------------------

1.1 数据库的作用

# 存储数据

1.2 数据库的分类

1.2.1 结构型数据库也叫关系型数据库

MySQL、SQL Server、Oracle、Access等等

采用SQL语言,管理数据库

结构型数据库的特点

# 数据库里面有表,表有行和列的概念,每个表中,都有明确的字段,每行记录,都有这些字段。不能有的行有,有的行没有。

1.2.2 非结构型数据库

mongodb

非结构型数据库的特点

# 没有行、列的概念。用JSON来存储数据

# 集合就相当于“表”,文档就相当于“行”

# 文档就是json 可以通过javascript进行操作

为什么不用txt文档或者excell来存储数据

# 当数据比较大的时候,对文档的读取是一次性读取,内存不够,而数据库读取是分段读取的

# 增删改查不方便

结构型数据库和非结构型数据库的不同点

结构型数据库存储数据不灵活,一个字段,需要是同样类型的数据。不能一行记录字符串,一行记录是数字。

非结构型数据库的特点:

# 数据模型比较简单

# 对数据库性能要求较高

# 不需要高度的数据一致性

----------------------------

mongodb 安装

1. 下载 https://www.mongodb.com/download-center#community

安装过程中可以对安装路径进行更改,建议不更改

# 数据库的运行文件的位置和数据库存储的位置不是一回事

2. 安装成功后添加环境变量

eg:将mongo的bin目录 C:\Program Files\MongoDB\Server\3.0\bin  加入到系统的path环境变量中

为什么要添加环境变量

# 可以在不同的目录下执行mongodb的相关应用操作

3. 环境变量添加成功后,可以在系统的任何盘符,使用mongo的命令了

4. 常用命令操作

mongod 开启数据库

mongo 操作数据库

mongoimport 导入数据库

5. 开启数据库

在32位操作系统中 执行以下操作

mongod --dbpath C:\data  --storageEngine=mmapv1

在64位系统中

mongod --dbpath C:\data

注意:

# 如果光标挂起,说明数据库开启成功

# --dbpath就是选择数据库文档所在的文件夹

# --storageEngine=mmapv1 指定存储格式,64位不需要指定

# 在mongoDB中,有物理文件对应一个个数据库,U盘可以拷走  以ns结尾的文件即为数据库。

6. 操作数据库 执行mongo 命令

# 一定要确保在操作数据库之前数据库已经开启了,不能关,不能ctrl+c。 一旦这个cmd有问题了,数据库就自动关闭了。

######################

以上操作步骤,可以创建n个不同目录下的数据库存储的地方,每次开始数据库都要执行以上操作,比较麻烦,为了简化操作,可以让mongodb成为电脑的服务,那么采用开始mongodb服务每次都能快速启动数据库,并且进入到指定的数据库存储的地方  注意以管理员的方式进行安装

32位操作系统:

mongod --dbpath "D:\Data\db" --logpath "D:\Data\log\log.txt" --serviceName "MongoDb" --serviceDisplayName "mongodb" --journal --storageEngine=mmapv1  --install

64位:

mongod --dbpath "C:\data\db" --logpath "C:\data\log\log.txt" --serviceName MongoDB --install

# --serviceName 服务名称 建议MongoDB

# --serviceDisplayName window组件的显示名称 可以跟服务名称不一致

# 移除服务 将install改为remove即可

2.然后启动  必须在管理员的权限下启动

net start MongoDB  启动mongodb

net stop MongoDB  关闭mongodb

##############################

7. 操作数据库的相关指令 以下操作是mongodb的语法

7.1 show dbs

# 列出所有的数据库

7.2 use 数据库名字

# 使用某个数据库

# 如果use一个不存在的,就是新建一个数据库

7.3 db

# 查看当前所在数据库

7.4 db.students.insert({"name":"laowang","age":100});

# 向当前数据库所在的集合中插入一条数据

# db 表示当前所在的数据库

# students 代表是一个集合,一个数据库里面可以有很多个集合

# students第一次使用,集合将自动创建,集合中存储的每一条json数据叫做文档

7.5 show collections

显示当前数据中的集合

7.6 db.students.find()

查看当前集合中的所有文档

7.7 db.dropDatabase()

删除当前所在的数据库

7.8 db.studetns.drop()

删除数据库中的指定集合

7.9 db.studetns.count()

查看当前集合中有多少条数据

8. 插入数据

插入一条文档

eg:db.student.insert({"name":"xiaoming"});

插入多条文档

eg: db.student.insert([{"name":"laowang"},{"name":"laozhang"}]);

# 我们不可能一条一条的insert。所以,我们希望用sublime在外部写好数据库的形式,然后导入数据库:

mongoimport --db test --collection restaurants --drop --file primer-dataset.json

--db test  想往哪个数据库里面导入

--collection restaurants  想往哪个集合中导入

--drop 把集合清空

--file primer-dataset.json  哪个文件

9. 查找数据

查找数据,用find。find中没有参数,那么将列出这个集合的所有文档:

db.restaurants.find()

精确匹配:

db.student.find({"score.shuxue":70});

多个条件:

db.student.find({"score.shuxue":70 , "age":12})

大于条件:

db.student.find({"score.yuwen":{$gt:50}});

或者。寻找所有年龄是9岁,或者11岁的学生

db.student.find({$or:[{"age":9},{"age":11}]});

查找完毕之后,打点调用sort,表示升降排序。

db.restaurants.find().sort( { "borough": 1, "address.zipcode": 1 } )

10. 修改数据

查找名字叫做小明的,把年龄更改为16岁:

db.student.update({"name":"小明"},{$set:{"age":16}});

查找数学成绩是70,把年龄更改为33岁:

db.student.update({"score.shuxue":70},{$set:{"age":33}});

更改所有匹配项目:

db.student.update({"sex":"男"},{$set:{"age":33}},{multi: true});

完整替换,不出现$set关键字了:

db.student.update({"name":"小明"},{"name":"大明","age":16});

10. 删除数据

只要匹配成功,就会删除

db.restaurants.remove( { "borough": "Manhattan" } )

删除一条

db.restaurants.remove( { "borough": "Queens" }, { justOne: true } )

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,682评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,277评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,083评论 0 355
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,763评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,785评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,624评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,358评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,261评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,722评论 1 315
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,900评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,030评论 1 350
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,737评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,360评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,941评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,057评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,237评论 3 371
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,976评论 2 355

推荐阅读更多精彩内容

  • NoSql数据库优缺点 在优势方面主要体现在下面几点: 简单的扩展 快速的读写 低廉的成本 灵活的数据模型 在不足...
    dreamer_lk阅读 2,730评论 0 6
  • 励志成为全栈工程师的我今天了解了下Mongodb这种非结构性数据库。接下来我会尽量详细的介绍这种数据库的基础用法(...
    编程小飞侠阅读 838评论 6 10
  • 徐云霞三人在漆黑的山洞中艰难地摸索着向前行进,越向前走脚下的白骨就越少,一盏茶的时间过后已经再也看不见任何白骨的影...
    长白居士阅读 127评论 0 0
  • new 基本上等同与 alloc/init 唯一的区别就是alloc在分配内存的时候使用了zone --使用Zon...
    Ever_Blacks阅读 227评论 0 0
  • 之前写了一篇自省文,回头看看面目狰狞的自己是对孩子进行了怎样的摧残。既然自己已经意识到错误,并且正在改正...
    记得祝福阅读 202评论 4 5