概述
按照数据结构来组织、存储和管理数据的仓库
分类
关系型数据库(sql):Access mySql SqlServer oracle db2等。
-
复杂查询 可以用SQL语句方便的在多个表之间做非常复杂的数据查询。
-
事务支持 使得对于安全性能很高的数据访问要求得以实现。
非关系型数据库( NoSql ): MongoDB,Redis,HBase,CouchDB等。
-
性能 NOSQL是基于键值对的,可以想象成表中的主键和值的对应关系,而且不需要经过SQL层的解析,所以性能非常高。
-
可扩展性 同样也是因为基于键值对,数据之间没有耦合性,所以非常容易水平扩展。
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后的值用单引号
- INSERT INTO
-
查询数据
- SELECT * FROM
clientWHERE 1 - SELECT
user_id,username,password,mail,phoneFROMclientWHERE 1 - where前为查询字段, 后 为查询条件,
- SELECT * FROM
-
修改数据
- UPDATE
clientSETuser_id=[value-1],username=[value-2],password=[value-3],mail=[value-4],phone=[value-5] WHERE 1
- UPDATE
-
删除数据
- DELETE FROM
clientWHERE 1
- DELETE FROM
-
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,第一个参数是查找条件,第二个参数是修改内容,主键不能修改,第三个参数表示匹配所有符合条件的数据,第四个参数表示修改所有匹配到的数据
-
基础决定未来,一步一个脚印