数据库的基本介绍
关系型数据库
创建在关系模型基础上的数据库, 用来存储和管理结构化的数据.
关系模型
代码语言:javascript复制类似python中类
class Student:
def __init__(self, name, classes ...):
self.name = name
self.classes = classes
def borrow(self, book):
print(f"student {self.name} borrow {book.name}")
class Book:
pass
在关系型数据库当中, 可以用三张数据表来表示
- 学生表
- 图书表
- 借阅表(记录行为)
关系型数据库的特点(也就是事务的特点)
ACID
Atomic(原子性)
指事务的操作是不可分割的, 要么完成, 要么不完成. 不存在其他的中间态
代码语言:javascript复制A -> B 转账, 如果中途中断, 那么整个银行系统就会崩溃.
Consistence(一致性)
事务A和事务B同时运行, 无论谁先结束, 数据库都会到达一致.
代码语言:javascript复制集合点在东方明珠, 同学A从静安出发, 同学B从黄埔出发.
一致性不关心A和B谁先到达, 只关心最终两者都在东方明珠汇合.
Isolation(隔离性)
解决多个事务同时对数据进行读写和修改的能力.
Duration(持久性)
当某个事务一旦提交, 无论数据库崩溃还是其他原因, 该事务的结果都能够被持久化地保存下来.
代码语言:javascript复制事务的所有操作都是有记录的, 即使数据库中途崩溃, 仍然可以通过记录恢复
适用场景
考虑到事务和日志
- 对数据完整性有要求.
- 存储的数据结构化完整.
- 单个数据库服务实例可以满足需求. 建立集群方案, 大多需要适用企业版, 企业版收费高昂.
- 读表操作远远大于写表操作.
非关系型数据库(Nosql, not noly sql
)
创建在Nosql
系统存储(键对值)基础上的数据库, 既可以存储结构化的数据, 也可以存储非结构化的数据.
Mysql数据库的安装(服务端)
数据库分为服务端和客户端
windows
代码语言:javascript复制https://jingyan.baidu.com/article/9f7e7ec0ebac9a6f281554dd.html
ubuntu
代码语言:javascript复制apt-get install mysql-server
# 登录
mysql -u root -p
mac
代码语言:javascript复制https://jingyan.baidu.com/article/b7001fe1c7cc260e7382dd66.html
Navicat的安装和使用(客户端)
windows&ubuntu
代码语言:javascript复制http://www.navicat.com.cn/
mac
代码语言:javascript复制SequelPro
Mysql数据库的基本使用
连接
- localhost
填写主机的时候就是填写ip地址
localhost对应的地址约等于
127.0.0.1
数据库(database)
Create
代码语言:javascript复制create database tunan_class_2;
- 设置字符集
utf8
和utf8mb4
mysql
中utf8
字符是不全的,utf8mb4
才是和我们python中的utf-8
字符集一致.- 排序规则
选择默认的
utf8mb4_general_ci
Retrieve
代码语言:javascript复制show databases;
Update
代码语言:javascript复制ALTER database tunan_class_2 DEFAULT CHARACTER SET 'utf8mb4'
Delete
代码语言:javascript复制drop database 库名
数据表(table)
Create
代码语言:javascript复制use tunan_class;
CREATE TABLE class_2(
id int PRIMARY KEY auto_increment,
student_name varchar(255)
)DEFAULT charset=utf8mb4;
Retrieve
代码语言:javascript复制show tables;
Update
代码语言:javascript复制ALTER TABLE class_2 RENAME class_3;
Delete
代码语言:javascript复制drop table 表名
只删除数据, 不删除表
代码语言:javascript复制truncate 表名