关系型数据库MySQL和非关系型数据库MongoDB

关系型数据库和非关系型数据库(MySQL、MongoDB)

  • 关系型数据库
    • SQL
  • 非关系型数据库(NoSQL)
  • 关系型数据库MySQL
    • 特点
    • MySQL事务四大特性
    • 隔离级别
    • 常用数据类型
    • char 和 varchar 的区别
    • 数据库操作
    • 表操作
    • 数据增删改查(CURD)
      • 增加数据
      • 修改数据
      • 查询数据
      • 删除数据
      • 数据备份和恢复
  • 非关系型数据库MongoDB
    • 特点
    • MongoDB一些概念

关系型数据库

  • 关系型数据库以表格的形式存在,以行和列的形式的存储数据,行和列这一整体组成一张表,无数张表组成了数据库。
  • 常见的关系型数据库有:Oracle,DB2,MySQL,sqlite,sql server
  • 关系型数据库能够支持复杂的SQL查询,能够体现数据之间、表之间的关联关系;
  • 关系型数据库支持事务
  • 缺点就是当数据越来越多,表的数量也会越来越多,处理数据的时候效率会显著变慢。
  • 不同引擎有不同的存储方式

SQL

SQL是结构化查询语言,是一种用来操作关系型数据库的数据库语言
SQL语句主要分为:

  • DQL:数据查询语言,select
  • DDL:数据定义语言,进行数据库、表的管理(create,drop)
  • DML:数据操作语言,对数据进行增、删、改(insert、update、delete)

非关系型数据库(NoSQL)

  • 非关系型数据库(也叫文档型数据库)不需要写一些复杂的SQL语句,内部存储方式是以key-value的形式存在
  • 常见的非关系型数据库有:Redis,MongoDB
  • 没有复杂的关系,数据之间没有耦合性,所以可扩展性较强,有比较高的读写性能

关系型数据库MySQL

特点

  • 支持多种操作系统
  • 优化的SQL查询算法,提高了查询速度
  • 提供用于管理、检查、优化数据库的管理工具
  • 支持多种存储引擎

MySQL事务四大特性

  • 原子性:事务的操作要么全不成功,要么全部失败回滚
  • 一致性:一个事务在执行前后状态一致
  • 持久性:事务一旦提交,发生的改变是永久性的
  • 隔离性:当多事务同时执行的时候,可能会出现的问题:脏读、不可重复读、幻读

隔离级别

读未提交:指的是一个事务在提交之前,所做的修改就能够被其他事务所看到
读已提交:指的是一个事务在提交之后,所做的变更才能够让其他事务看到
可重复读:指的是一个事务在执行的过程中,看到的数据和启动时看到的数据是一致的,未提交的变更对其他事务不可见
串行化:是对于同一行记录,写会加写锁,读会加读锁。当出现读写锁冲突的时候,后访问的事务必须等前一个事务执行完成,才能继续执行。

常用数据类型

  • 字符串:char,varchar
  • 浮点:decimal
  • 整数:int,bit
  • 日期时间:datetime,date,time
  • 枚举类型:enum

char 和 varchar 的区别

char:是固定长度字符串,如果输入的长度小于指定的,就会在后面补空值,如果大于指定长度,会报错。
varchar:可变长度字符串

数据库操作

查看所有数据库

show databases;

删除数据库

drop database 数据库名字;

使用数据库

use 数据库名字;

创建数据库

create database 数据库名字 charset=utf-8;

查看当前使用的数据库

select database();

表操作

创建表

CREATE TABLE table_name(
    column1 datatype contrai,
    column2 datatype,
    column3 datatype,
    .....
    columnN datatype,
    PRIMARY KEY(one or more columns)
);

修改表-添加字段

alter table 表名 add 字段 类型 约束 

修改表-修改字段-重命名版

alter table 表名 change 原名 新名 类型 约束

修改表-修改字段-不重命名版

alter table 表名 modify 列名 类型 约束

修改表-删除字段

alter table 表名 drop 列名

删除表

drop table 表名;

查看表结构

desc 表名;

查看数据库中所有表

show tables;

数据增删改查(CURD)

增加数据

全列插入

insert into 表名 values(...)

部分列插入

insert into 表名(1,...) values(1,...)

全列多行插入

insert into 表名 values(...),(...)...;

部分列多行插入

insert into 表名(1,...) values(1,...),(1,...)...;

修改数据

update 表名 set1=1,2=2... where 条件
例:
update students set gender=0,hometown='北京' where id=5;

查询数据

select * from 表名;

删除数据

delete from 表名 where 条件

数据备份和恢复

备份

mysqldump –uroot –p 数据库名 > python.sql;

恢复

mysql -uroot –p 新数据库名 < python.sql

非关系型数据库MongoDB

MongoDB,是一个基于分布式文件存储的开源数据库系统,为web应用提供可扩展高性能数据存储解决方案
MongoDB将数据存储为一个文档,数据结构由键值对组成

特点

  • 易扩展
  • 大数据量,高性能
  • 灵活的数据模型,无需为数据建立字段,随时可以存储自定义的数据模式

MongoDB一些概念

MySQL MongoDB 说明
database database 数据库
table collection 表/集合
row document 行/文档
column field 字段/域
primary_key _id 主键

你可能感兴趣的:(mongodb,mysql,sql,数据库)