zoukankan      html  css  js  c++  java
  • Node_进阶_4

    Node进阶第四天

    一、传统数据库技术回顾

      数据库就是存储数据的,那么存储数据用txt就行了啊,为什么要有数据库?

      理由之一:数据库有行、列的概念,数据有关系,数据不是散的。

      老牌数据库,比如Mysql、SQL Server、Oracle、Access。这些数据库,我们管他们叫做结构型数据库。为什么?因为每个表中,都有名去的字段,每行记录,都有这些字段。不能有的行有,有的行没有。

      理由二:数据库能够提供非常方便的接口,让增删改查操作变得简单。

      我们的老牌数据库,都无一例外的使用SQL语言,管理数据库。

      SQL就是Structure Query Language。

      比如,查询所有女生: SELECT * FROM table where xingbie = ‘女’

      理由三:数据库不能自己玩儿,要想语言提供接口

      老牌数据库出了什么问题?

      比如,我们现在向往一个已经有1000条数据的数据库中增加一个字段。

      alter table add column …

      之前已经存在的数据,实际上不需要增加这个字段。因为这些用户已经填写完毕表单了,不需要再收集这个信息了。我们的意图就是在今后注册的用户,需要填写高中信息。但是,我们刚才说了,所谓的字段,是表的一个结构。所有的行都必须有,不能有的行有这个字段,有的行没有这个字段。

      可想而知,大数据时代,数据库中有100万条数据都算少的,我们如果要动字段,时间太长。

      所以,字段这个东西,太不灵活。

      数据不灵活。一个字段,需要是同样类型的数据。不能一行记录是文本,一行记录是数字。

      非结构型数据库NoSQL应运而生。

      NoSQL是个怪胎,无法挑战老牌数据库,但是在大数据时代有自己的意义。

      二、NoSQL

    非结构型数据库。没有行、列的概念。用JSON来存储数据。

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

     

    文档就是JSON,上下文语境中,也是Javascript范畴,所以我们的数据库也是JS范畴的东西,JS全栈。

    我们看,有些系统,特别需要筛选。比如,筛选出所有女生大于20岁的。那么SQL型数据库,非常擅长。因为它有行、列的概念。

      但是,有些系统,真的不需要那么多的筛选,比如站内信。站内信只要存储就好了。

    因此,我们总结NoSQL数据库在一下的这几种情况下比较适用:1、数据模型比较简单;

    2、需要灵活性更强的IT系统;3、对数据库性能要求较高;4、不需要高度的数据一致性;5、对于给定的key,比较容易映射复杂值的环境。

    NOSQL不是银弹,没有资格挑战老牌数据库,但是特定情况下还是合适的。

    三、MongoDB安装

        

    官网: https://mongodb.com

        

         mongo         使用数据库

         mongod        开机

         mongoimport   导入数据

         

    开机命令:

     mongodb数据库以.ns结尾

          --dbpath就是选择数据库文档所在的文件见:

          也就是说,mongoDB中,真的有物理文件,对应一个个数据库。U盘可以拷走。

          一定要保持,开机这个CMD不能动了,不能关,不能ctrl+C,一旦这个cmd有问题了,数据库就自动关闭了。

         所以,应该再开一个cmd,输入

         那么运行环境就是mongo语法了.

         列出所有数据库。

         show dbs

         使用某个数据库

         use 数据库名字

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

         查看当前所在数据库

         db

         student就是所谓的集合。集合中存储着很多json。

         db.一个未知的集合名字,这个集合将自动创建。

       新的mongodb使用了wt引擎,引擎文件夹可以直接拷贝。

    四、数据库使用

    要管理数据库,必须先开机,开机使用mongod –dbpath C:mo,ngo

    管理数据库:mongo(一定奥再新cmd中输入)

    清屏:

    cls

    查看所有数据库列表:

    show dbs

    使用数据库、创建数据库:

    use itcast

    如果真的想把这个数据库创建成功,那么必须插入一个数据。

    数据库中不能直接插入数据,只能往集合(collections)中插入数据。不需要创建集合,只需要写点语法:

    db.student.insert({“name”:”xiaoming”});

    db.student 系统发现student是一个陌生的集合名字,所以就自动创建了集合。

    删除数据库,删除当前所在的数据库

    db.dropDatabase();

    插入数据,随着数据的插入,数据库创建成功了,集合也创建成功了。

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

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

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

                                           (这个命令是清除)

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

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

     --drop 把集合清空

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

    4.1 CRUD

    插入一条语句:

    这样我们就能用VSCode创建一个文件,然后用mongoimport命令导入,这样学习数据库非常方便。

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

    db.student.find()

    精确匹配:

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

    多个条件:

    db.student.find({"score.shuxue":80, "age":9})

    大于条件

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

    或者:寻找所有年龄是9岁,或者11岁的男生

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

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

    db.student.find().sort({“borough”:1,”zipcode”:-1})

    在MongoDB中 输入mongod 如果不加—path 就会以下面的目录创建默认数据库。

    修改数据

    修改里面还有查询条件,你要告诉mongo

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

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

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

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

    更新多条语句

    更改所有匹配项目:

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

    完整替换,不出现$set关键字:(一般不用,因为这一条记录直接就没了)

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

    删除数据

    db.student.remove({"score.shuxue":80});

    db.student.remove({"score.shuxue":{justOne:true}},);

  • 相关阅读:
    举例阐述游戏战斗系统设计的基本规则
    角色动作控制接口的设计
    游戏动作感设计初探
    c#扩展方法
    Bundle Adjustment光束平差法概述
    Levenberg-Marquardt
    OpenCV2:Mat属性type,depth,step
    opencv surf特征点匹配拼接源码
    OpenCV仿射变换+投射变换+单应性矩阵
    在OpenCV for Android 2.4.5中使用SURF(nonfree module)
  • 原文地址:https://www.cnblogs.com/eret9616/p/9111351.html
Copyright © 2011-2022 走看看