关系型数据库和非关系型数据库、MySQL简介

数据库的知识点总结

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

关系型数据库(RDBMS)
  • 定义: 关系型数据库是基于关系模型的数据库,数据以表格的形式组织 ,每个表格由行和列组成,行代表记录,列代表字段

  • 特点:

    1. 结构化:数据具有固定的模式(Schema),表结构在创建时定义,后续修改较为复杂。

    2. ACID属性 :支持事务处理,确保数据操作的原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)简称:ACID

      • 原子性(Atomicity):事务中的所有操作要么全部成功,要么全部失败,不会出现部分成功的情况。

      • 一致性(Consistency):事务执行前后,数据库必须保持一致状态,不会破坏数据库的完整性约束。

      • 隔离性(Isolation):多个事务并发执行时,每个事务的执行互不干扰,事务之间是隔离的。

      • 持久性(Durability):一旦事务提交,其对数据库的更改是永久的,即使系统发生故障也不会丢失。

    3. SQL支持 :使用**结构化查询语言(SQL)**进行数据操作,语法标准统一。

    4. 强一致性:数据在任何时刻都是强一致的,适合对数据一致性要求高的场景。

  • 常见RDBMS数据库:

    MySQL、Oracle、SQL Server、PostgreSQL、SQLite

  • 功能:

    • 数据定义DDL:提供数据定义语言(DDL),用于定义数据库的结构,如创建表、索引等。

    • 数据操纵DML:提供数据操纵语言(DML),用于插入、查询、更新和删除数据。

    • 数据控制DCL:提供数据控制语言(DCL),用于管理用户的访问权限和事务控制。

    • 数据存储和检索:高效地存储和检索数据,支持索引、缓存等优化技术。

    • 事务管理:支持事务处理,确保数据的一致性和完整性。

    • 备份和恢复:提供数据备份和恢复功能,确保数据的安全性。

非关系型数据库(NoSQL)
  • 定义: 非关系型数据库(NoSQL)是指不使用关系模型的数据库数据存储方式多样 ,包括键值对、文档、列族和图形等。

  • 特点:

    1. 灵活的模式:数据模式灵活,无需预先定义表结构,可以动态添加或修改字段。

    2. 水平扩展:支持水平扩展,可以通过增加更多的节点来提升性能和容量。

    3. 高性能:在处理大规模数据和高并发场景时,性能优越。

    4. 弱一致性:部分 NoSQL 数据库采用最终一致性模型,牺牲了一定的强一致性,以换取更高的性能和可用性。

  • 常见NoSQL数据库:

    1. 键值对数据库:Redis、Riak

    2. 文档数据库:MongoDB、CouchDB

    3. 列族数据库:Cassandra、HBase

    4. 图形数据库:Neo4j、ArangoDB

SQL(结构化查询语言)
  • 定义:SQL 是一种用于管理和操作关系型数据库的标准语言。它提供了一套统一的语法,使得用户可以方便地进行数据的查询、插入、更新和删除操作。

  • 特点:

    • 声明式:SQL 是一种声明式语言,用户只需要说明想要做什么,而不需要关心具体的实现细节。

    • 标准化:SQL 是国际标准,大多数关系型数据库都支持 SQL。

    • 强大:SQL 提供了丰富的功能,可以进行复杂的查询和数据操作。

  • 主要命令:

    • 数据查询(DQL):主要完成数据查询

      sql 复制代码
      select * from table_name where condition;
    • 数据操作(DML):对数据进行基本的操作

      sql 复制代码
      insert into table_name (column1, column2) values (value1, value2);
      update table_name set column1 = value1 where condition;
      delete from table_name where condition;
    • 数据定义(DDL):操作的都是对象

      sql 复制代码
      create table table_name(column1 datatype, column2 datatype);
      alter table table_name add column3 datatype;
      drop table table_name;
    • 数据控制(DCL):是修改数据中表的结构

      sql 复制代码
      grant select, insert on table_name to user_name;
      revoke select on table_name from user_name;
    • **TCL:事务控制语言:**是 SQL 中用于管理事务的一组命令

      事务是一系列数据库操作的集合,这些操作要么全部成功执行,要么全部不执行,以确保数据的一致性和完整性。TCL 命令主要用于控制事务的开始、提交和回滚。

      sql 复制代码
       -- 开始一个新的事物
       begin transaction;
       -- 或者
       start transaction;
       ​
       -- 提交当前事务,使事务中的所有操作永久生效
       commit;
       ​
       -- 回滚当前事务,撤销事务中的所有操作,使数据库恢复到事务开始前的状态
       rollback;
       ​
       -- 在事务中设置一个保存点,可以在事务中部分回滚到这个保存点
       savepoint savepoint_name;
       ​
       -- ...
数据库、数据库管理系统、结构化查询语言三者之间的关系
  • DB(数据库) 是实际存储数据的地方。

  • DBMS(数据库管理系统) 是管理和操作数据库的软件系统,提供了用户与数据库之间的接口。

  • SQL(结构化查询语言) 是一种标准语言,用于与 DBMS 进行交互,进行数据的查询和操作。

下面主要介绍关系型数据库中的MySQL数据库

MySQL简介

  • 定义:MySQL 是一个开源的关系型数据库管理系统(RDBMS),使用 SQL 作为查询和管理数据的语言。

  • 特点:

    • 开源免费

    • 性能高、稳定性好

    • 支持多种操作系统(如 Windows、Linux、Mac OS 等)

    • 社区活跃,支持资源丰富

MySQL的主要功能
  • 数据存储:支持多种数据类型,包括数字、字符串、日期时间等。

  • 事务处理 :支持 ACID(原子性、一致性、隔离性、持久性)特性,确保数据操作的安全性和可靠性。

  • 索引:通过创建索引提高查询效率。

  • 视图:可以创建虚拟表,简化复杂查询。

  • 存储过程和函数:支持编写复杂的业务逻辑。

  • 触发器:可以在特定事件发生时自动执行预定义的操作。

MySQL的常用命令
  • 连接数据库:

    sql 复制代码
     -- 使⽤root⽤户登录
     mysql -u root -p
     -- 输⼊密码成功登录
     root
  • 创建数据库并切换到该数据库

    sql 复制代码
     -- 创建⼀个名为 `test` 的数据库,要求如下:
     -- 1.并将其字符集设置为 `utf8mb4`
     -- 2.排序规则设置为 `utf8mb4_unicode_ci`
     create database test character set utf8mb4 collate utf8mb4_unicode_ci;
     create database test charset=utf8mb4 
     -- 切换到 test数据库中
     use test;

    上述步骤完成后,你已成功创建并切换到 test 数据库。后续就可以在该数据库执⾏具体操作,⽐如:创建表格、插⼊数据等。

使用 MySQL 作为 DBMS,存储了一个名为 students 的表,包含学生的姓名和年龄信息。

  • 创建表

    sql 复制代码
     CREATE TABLE students (
         id int primary key auto_increment,
         name carchar(50),
         age int
     );
  • 插入数据

    sql 复制代码
     insert into students (name, age) values ('Alice', 20), ('Bob', 22);
  • 查询数据

    sql 复制代码
     select * from students where age > 20;
  • 更新数据

    sql 复制代码
     update students set age = 23 where name = 'Bob';
  • 删除数据

    sql 复制代码
     delete from students where name = 'Alice';
相关推荐
开心工作室_kaic15 分钟前
ssm161基于web的资源共享平台的共享与开发+jsp(论文+源码)_kaic
java·开发语言·前端
懒洋洋大魔王17 分钟前
RocketMQ的使⽤
java·rocketmq·java-rocketmq
i道i17 分钟前
MySQL win安装 和 pymysql使用示例
数据库·mysql
小怪兽ysl17 分钟前
【PostgreSQL使用pg_filedump工具解析数据文件以恢复数据】
数据库·postgresql
武子康22 分钟前
Java-06 深入浅出 MyBatis - 一对一模型 SqlMapConfig 与 Mapper 详细讲解测试
java·开发语言·数据仓库·sql·mybatis·springboot·springcloud
wqq_9922502771 小时前
springboot基于微信小程序的食堂预约点餐系统
数据库·微信小程序·小程序
爱上口袋的天空1 小时前
09 - Clickhouse的SQL操作
数据库·sql·clickhouse
转世成为计算机大神1 小时前
易考八股文之Java中的设计模式?
java·开发语言·设计模式
qq_327342731 小时前
Java实现离线身份证号码OCR识别
java·开发语言
Oak Zhang2 小时前
sharding-jdbc自定义分片算法,表对应关系存储在mysql中,缓存到redis或者本地
redis·mysql·缓存