一、关系型数据库的完整性约束
1、实体完整性
实体完整性是通过设置主键实现的。主键不能为空并且值必须唯一。
2、参照完整性
参照完整性是通过主外键关联实现的。
3、域完整性
域完整性通过给列设置取值范围。
4、用户自定义完整性
用户自定义完整性用户根据具体需求定义的完整性约束条件。
二、NoSQL
NoSQL,指的是非关系型的数据库。NoSQL 有时也称作 Not Only SQL 的缩写, 是对不同于传统的关系型数据库的数据库管理系统的统称。 NoSQL 用于超大规模数据的存储。(例如谷歌、Facebook 每天为他们的用户 收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以 横向扩展。
三、MongoDB
MongoDB 是由 C++语言编写的,是一个基于分布式文件存储的开源数据库系统。 在高负载的情况下,添加更多的节点,可以保证服务器性能。
-
MongoDB 旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
-
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。
-
MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
3、基本概念:
注意:MongoDB与关系型数据库的区别(特点):
MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型。
四、集合的命名规则
(1)不能含有空格
(2)不能以system.作为前缀,"system."是MongoDB的保留前缀
(3)不能含有保留字
(4).和$有特定含义,不要包含到集合名、文档名中
五 、数据类型
六、MongoDB的基本操作
1、进入MongoDB的客户端
c:\mongo
2、显示所有数据库
show databases;
或 show dbs;
3、切换数据库
use 数据库名;
--> 若数据库存在则切换;若不存在则创建
4、显示数据库下的所有集合
show collections;
5、删除当前数据库
(1)先切换到要删除的数据库中:use 数据库名
(2)删除当前数据库:db.dropDatabase();
6、在数据库下创建集合
(1)db.createCollection('集合名称');
(2)在插入文档时自动创建集合:db.集合名.insert({key:value});
7、删除集合
db.集合名.drop();
8、查询集合中的文档:
(1)查询所有:db.集合名.find();
(2)以对象的方式显示所有文档:db.集合名.find().pretty()
(3)条件查询:
A、等于:{key:value}
,例如:db.users.find({'username':'贾宝玉'}).pretty();
B、小于($lt):{<key>:{$lt:<value>}}
,例如:查询年龄小于20的记录:
db.users.find({'age':{$lt:20 }}).pretty();
C、小于或等于($lte):{<key>:{$lte:<value>}
D、大于($gt):{<key>:{$gt:<value>}}
E、大于或等于($gte):{<key>:{$gte:<value>}}
F、不等于($ne): {<key>:{$ne:<value>}}
H、'and’关键字的使用:find()方法可以传入多个键(key),每个键(key)以逗号隔开,即常规SQL的AND条件。
例如:查询性别为女,地址是南京的文档
db.employee.find({"sex":"女","address":"南京"}).pretty()
或
db.employee.find({"$and":[{"sex":"女"},{"address":"南京"}]})
I、'OR’关键字的使用:
db.集合名.find({
'$or':[
{key1:value1},
{key2:value2}
]
}).pretty()
J、AND 和 OR 联合使用
db.employee.find({
"age":{$gt:21},
$or:[
{"sex":"女"},
{"address":"南京"}
]
}).pretty()
K、模糊查询:
a、查询name中包含'乔'字的文档
db.employee.find({"name":/乔/}).pretty()
b、查询name中以'周'字开头的文档
db.employee.find({"name":/^周/}).pretty()
c、查询name中以'乔'字结尾的文档
db.employee.find({"name":/乔$/}).pretty())
9、插入文档
- 插入多个文档:
(1)创建数组
(2)将数据放入数组中
(3)将数组插入到集合中
var arr = []
for(var i=1;i<=10;i++){
arr.push({"name":i})
}
db.mytest.insert(arr);
db.employee.insertMany([
{"name":"诸葛亮","age":28,"address":"卧龙岗"},
{"name":"刘禅","age":26,"address":"成都"}])
- 插入单个文档:
db.employee.insert({})
10、更新文档
可以使用update()或save()方法进行更新 。
db.集合名.update({
<更新条件>,
{
$set:{
key1:value1,
key2:value2
}
},
multi: true //将所有满足条件的文档全部更新
})
11、删除文档
db.集合名.remove({条件},[justOne])
**注意:**参数"justOne"为1时,表示只删除找到的第一个文档。