数据库

282 阅读4分钟

概述

按照数据结构来组织、存储和管理数据的仓库

分类

关系型数据库(sql):Access mySql SqlServer oracle db2等。

  1. 复杂查询 可以用SQL语句方便的在多个表之间做非常复杂的数据查询。

  2. 事务支持 使得对于安全性能很高的数据访问要求得以实现。

非关系型数据库( NoSql ): MongoDB,Redis,HBase,CouchDB等。

  1. 性能 NOSQL是基于键值对的,可以想象成表中的主键和值的对应关系,而且不需要经过SQL层的解析,所以性能非常高。

  2. 可扩展性 同样也是因为基于键值对,数据之间没有耦合性,所以非常容易水平扩展。

mysql

特点

  • 数据库软件 mysql sqlserver orcale db2 mongodb ... 存储数据的仓库 U盘 光盘 硬盘 网盘 excel

  • 存放的是 结构化(格式化)后的数据

  • 关系型数据库 如:mysql sqlserver 特点: 以表为基本单位 多个表之间可以存在一些联系

  • mysql 以表为基本结构 在数据库中 表头 叫做 字段

  • 优点

    • 开源(免费)
    • 安全
    • 稳定
    • 跨平台(OS 操作系统 Windows Linux Unix OSX)

语言

  • SQL语言

    • 不区分大小写
  • 语法

    • 创建表

    • 插入数据

      • INSERT INTO client(user_id, username, password, mail, phone) VALUES ([value-1],[value-2],[value-3],[value-4],[value-5])
      • 字段用反引号,value后的值用单引号
    • 查询数据

      • SELECT * FROM client WHERE 1
      • SELECT user_id, username, password, mail, phone FROM client WHERE 1
      • where前为查询字段, 后 为查询条件,
    • 修改数据

      • UPDATE client SET user_id=[value-1],username=[value-2],password=[value-3],mail=[value-4],phone=[value-5] WHERE 1
    • 删除数据

      • DELETE FROM client WHERE 1

mongoDB

特点

  • 用于超大规模数据的存储

  • MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写

    • 分布式算法指的是将一个大型的任务进行分解,将每一个小任务的执行结果组合起来,返回一个整体
    • 优点:给其他任务提供了可执行的机会
  • 优点:免费,开源

  • 特性

    • 面向集合存储,易存储对象类型的数据

    • 使用高效的二进制数据存储,包括大型对象(如视频等)

    • 自动处理碎片,以支持云计算层次的扩展性

    • 支持RUBY,PYTHON,JAVA,C++,PHP等多种语言

    • 文件存储格式为BSON(一种JSON的扩展)

      BSON是一种类似json的二进制形式的存储格式,简称Binary JSON,它和JSON一样,支持内嵌的文档对象和数组对象,但是BSON有JSON没有的一些数据类型,如Date和BinData类型。

命令

  • 打开程序: mongod服务开启的前提下,打开mongo

    • 查看所有数据库

      • show dbs
    • 查看所在数据库的所有集合

      • show collections
    • 查看集合中符合条件的数据

      • db.users.find() 查找集合中所有数据
      • db.users.findOne() 查找users集合中的第一条数据
      • db.users.find().pretty() 格式化查询到的数据
      • db.webs.find().sort({age: -1 }) 将查到的数据按指定字段值逆序排列
      • db.webs.find().limit( 2 ) 截取查到数据的前n条
    • 删除数据库

      • db.runCommand({"dropDatabase": 1}) 删除当前数据库,注意 此处的1没加双引号
    • 删除集合

      • db.users.drop()或db.runCommand({"drop":"users"}) 删除集合users
    • 删除数据

      • db.users.remove({}) 删除users集合下所有数据
      • db.users.remove({}) 删除users集合下所有数据
    • db.web.insert({"name":"ghost", "age":10}) 在web集合中插入一条新数据,如果没有web这个集合,mongodb会自动创建

      • 若插入的内容包含已存在的_id会报错,插入失败
    • db.web.save({"name":"老李"}) 创建了名为web的集合,并新增了一条{"name":"老李"} 的数据

      • 若插入的内容包含已存在的_id会修改该条数据内容(不是替换对应字段值,而是覆盖掉该整条数据)
    • 注意:_id是主键,主键是每条数据的唯一标识,不能重复,就像身份证是每个人唯一的编号一样

    • db.web.update({"name":"a1"}, {$set: {sex:”women”}},true,true)

      修改name=a1的数据为sex=1,第一个参数是查找条件,第二个参数是修改内容,主键不能修改,第三个参数表示匹配所有符合条件的数据,第四个参数表示修改所有匹配到的数据

基础决定未来,一步一个脚印