数据库
目录
数据库 1
一, Mysql: 1
1, 基本概念: 1
2, 安装: 2
3, Sql的概念: 2
4, DDL操作:定义数据库对象 3
5, Python与MySQL交互: 5
二, MongDB: 6
1. 非关系型数据库 6
2. MongoDB安装启动 6
3. MongoDB数据库操作 7
4. MongoDB集合(table)操作 8
5. MongoDB文档操作 9
6. MongoDB数据库与python交互 10
三, Redis: 10
- Redis简介: 10
- Redis基本命令: 10
- redis数据结构: 11
四, 补充: 13
1. mysql的数据类型和约束: 13
(1) 数据类型: 13
(2) 约束: 14
关系型数据库
(1)数据库:
数据库依靠一定的数据结构来组织存储数据,以实现高效的数据存储与查询
(2)关系型数据库:
指用二维表格关系模型组织数据的数据库,通过行和列形式表示和存储数据。
数据库有行和列组成的表格构成
(3)优点:
Mysql是一款开源关系型数据库管理系统,具备体积小,速度快,部署成本低的优点(受中小型企业欢迎)
(1)安装mysql和navicat可视化工具
(2)Mysql数据库的服务和停止
手动–> 服务
命令行–> cmd里面:
net start mysql:启动MySQL服务;
net stop mysql: 停止mysql服务;
(3)登录与退出:
登录: mysql -uroot -proot
退出:exit/quit
(1)Sql的定义:
Sql(Structured Query Language):结构化查询语言,定义了操作所有关系型数据库的规则,每一种数据库操作的方式有不一样的地方,可以想象成‘方言’,sql可以想象成‘普通话’。
(2)Sql分类:
DDL,DML,DQL
(1)DDL操作数据库:
1,创建数据库:
Create database studb;
2,查看数据库:
Show databases;
3,选择数据库:
Use studb;
4,删除数据库:
Drop databases studb;
(2)DDL操作数据表:
1,显示表:
Show tables;
2,创建表:
Create table stu(
列名1 数据类型1,
……
字段名1 类型[(宽度) 约束条件],
字段名1 类型[(宽度) 约束条件]
);
1)数据类型:
数值类型:(重点关注)float,int,double
字符串类型:Char,carchar
事件日期类型:Date,time,year,datetime,timestamp
2)Mysql中的常见约束:
非空约束(not null)
唯一性约束(unique)
主键约束(primary key,pk)
外键约束(foregin key,fk)
缺省约束(default)
3)注意点:
最后一个字段之后不能加逗号;
在同一张表中,字段名不能相同;
字段名和类型必须有,宽度和约束条件可以选择。
4)例子:
Drop table stu;
(3)DDL操作数据:
(1)库的介绍和安装:
1,安装pymysql:pip3 install pymysql
2,
(2)Pymysql的使用(重点):
实际应用中存在很多非结构化的数据,例如文本、图像、可扩展的树形结构数据等,这些不规则或不完整,没有预定义的数据模型,难以使用关系型数据库的二维表格模型进行表示和存储。
非关系型数据库(NoSQL)作用:解决传统数据库处理非结构化数据的局限。
非关系型数据库优点:可扩展性,大数据量,高性能
(2)安装:
//1,显示数据库
show dbs;
show databases;
//show databases;
//2,切换数据库
use database1; //切换到一个不存在的数据库
db.database1.insert({id:1,“name”:“xiaoming”})
show dbs;
//3,查看当前数据库的信息
//可以知道自己当前在哪个数据库
db.stats();
//4,删除数据库
db.dropDatabase();
//向不存在的数据库/集合中添加数据等于创建数据库
//创建数据库:
use database1;
db.database1.insert({id:1,“name”:“xiaoming”});
//1,创建集合
db.createCollection(“collection1”);
//创建集合时设立参数
db.createCollection(“collection2”,{capped:true,size:,max:});
//2,显示集合
//show tables;
show collections;
//3,向不存在的集合中写入数据
db.collection3.insert({id:1111, “name”:“xiaohong” })
//4,删除集合
db.collection3.drop();
创建集合参数说明:
1,capped:是否创建固定集合。
如参数值为 true,则创建固定集合。固定集合指的是事先创建,并且大小固定的集合。(假设一个集合设置了固定大小为100,再添加一条文档的时候,会把最前面的文档剔除,永远只保留100条数据)
一般来说,固定集合适用于任何想要自动淘汰过期属性的场景。比如日志
文件,聊天记录,通话信息记录等只需保留最近某段时间内的应用场景,都会使用到MongoDB的固定集合。
2,size,最大字节数;
3,max,最大文档数。
MongoDB支持自动创建集合,向尚不存在集合写入记录后,在数据库中自动创建该集合。
use database1;
//1,插入文档
db.collection3.insert(
{id:2222,
“name”:“阿花”,
age :18,
“address”:[‘成都高新’],
‘score’:{“ch”:100,“en”:100,“math”:100,“grade”:“A”}
}
)
//2,参数方式插入文档
doc1 = {id:6666,
“name”:“genius”,
age:20,
“address”:[‘成都高新’],
‘score’:{“ch”:100,“en”:100,“math”:100,“grade”:“A”}
}
db.collection3.insert(doc1)
//4,修改文档
db.collection3.update(
{“name”:“大花”},
{$set:{“name”:“小明”}},
{upsert:true}
)
//5,,查询文档
//db.collection3.find({“age”:18})
db.collection3.find()
修改文档参数:
除了rename(修改字段名)等操作符。
可选参数upsert表示如果查询不存在是否插入指定修改内容为新的记录,默认为false,
可选参数multi表示是否修改多条记录,默认为false。
Redis是一个非关系型数据库
Redis(REmote DIctionary Server)是一个key-value存储系统,是跨平台的非关系型数据库。
Redis通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等类型。
Redis提供基于单线程的内存数据结构存储(运行在内存中,说明redis支持多种数据结构的高速读写操作,性能号,速度快)
Redis支持内存数据的磁盘持久化存储,并支持主从模式的数据备份
1.PING
PING命令用于测试服务器是否连接成功,如果没有参数,服务器返回“PONG”,如果带参数,则返回参 数
2.KEYS
Keys 命令用于查找所有符合给定模式 pattern 的 key
3.SELECT
SELECT命令用于选择当前数据库,Redis默认有16个数据库,SELECT使用参数 0~15切换当前工作数据库。
4.DBSIZE
DBSIZE 命令用于查看当前数据库的记录数
5.FLUSHDB与FLUSHALL
FLUSHDB(flushdb)命令清除当前数据库记录
FLUSHALL(flushall)命令清除所有数据库记录
6.TYPE
TYPE命令查看Key的存储类型
注意:Redis不区分命令大小写
(1)String:
Resid字符串命令:
设置键和值(set):set keyname value:
通过键得到值(get):get keyname:
追加字符串(append):append keyname value:
修改字符串字串(setrange):setrange keyname offset value
其中offset代表要修改的keyname所对应的value值得下标
(2)List:
List是Redis基于链表实现的一种基本数据结构,用于存储有序集合。List支持从左右两端入栈,出栈,索引等操作,使用非常灵活,可以作为队列,栈等数据结构使用。
基本命令:
1.LPUSH和RPUSH :
Lpush,rpush:从左端或右端添加新元素
LPUSH ListName Value1 Value2…
RPUSH ListName Value1 Value2…
其中,ListName为列表名,Value1、Value2…为指定的元素值,至少指定一个添加的元素值
2.LRANGE :
Lrange:读取指定范围的元素。
LRANGE ListName Start End
其中,ListName为列表名,Start、End分别为开始与结束范围,End值指定为-1时,表示取值范围到列表尾部。
lrange list01 0 -1 表示查看list01这个list里面的所有元素
3.LPOP和RPOP
Lpop,rpop:从左端或右端删除一个元素,并返回该元素值,如果列表为空,则返回nil
LPOP ListName
RPOP ListName
4.LLEN
llen:获取列表长度。
LEN ListName
5.LINDEX
lindex:获取列表指定元素值。
LINDEX ListName index
其中,ListName为列表名,Index为位置。Index为正值表示从表头开始向表尾搜索,为负值表示从表尾向表头搜索
Redis中list常用命令
Lpush,rpush 从左端或右端添加新元素
Lrange 读取指定范围的元素
Lpop,rpop 从左端或右端删除一个元素,并返回该元素值
llen 获取列表长度
lindex 获取列表指定元素值
(3)Hash:
Hash是Redis的一种字典存储数据结构,一个Hash对象可以存储多个键-值对元素,底层由哈希表实现。
Hash包括HSET、HGET和HMST等基本操作,分别实现字典的添加、获取、删除等操作。
相当于python中的字典
(4)Set:
Set是Redis用于存储无序非重复元素的一种数据结构。集合最多可存储232-1个元素成员,由于集合
元素是不重复的,通过哈希实现的Set的读写和查找操作非常快,时间复杂度仅为(O/1)。Set包括
SADD、SCARD、SMEMBER、SDIFF、SINTER和SUNION等基本操作。
可以用于去重
1.mysql的数据类型和约束:
(1)数据类型:
1.数值类型:
重点关注float,int,double
2.字符串类型:
3.事件日期类型:
参考:MySQL教程之MySQL数据类型详解 (baidu.com)
(2) 约束:
约束:数据库设计过程中为保证数据完整性,一致性,有效性的限制规则。
Mysql中的常见约束:
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/sjkxydsj/80746.html