数据库的基本介绍

2022-09-28 13:27:00 浏览数 (1)

数据库的基本介绍

关系型数据库

创建在关系模型基础上的数据库, 用来存储和管理结构化的数据.

关系模型

代码语言: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

在关系型数据库当中, 可以用三张数据表来表示

  1. 学生表
  2. 图书表
  3. 借阅表(记录行为)

关系型数据库的特点(也就是事务的特点)

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;
  • 设置字符集
    • utf8utf8mb4 mysqlutf8字符是不全的, 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 表名

0 人点赞