数据库的知识点总结
关系型数据库和非关系型数据库
关系型数据库(RDBMS)
-
定义: 关系型数据库是基于关系模型的数据库,数据以表格的形式组织 ,每个表格由行和列组成,行代表记录,列代表字段。
-
特点:
-
结构化:数据具有固定的模式(Schema),表结构在创建时定义,后续修改较为复杂。
-
ACID属性 :支持事务处理,确保数据操作的原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)简称:ACID。
-
原子性(Atomicity):事务中的所有操作要么全部成功,要么全部失败,不会出现部分成功的情况。
-
一致性(Consistency):事务执行前后,数据库必须保持一致状态,不会破坏数据库的完整性约束。
-
隔离性(Isolation):多个事务并发执行时,每个事务的执行互不干扰,事务之间是隔离的。
-
持久性(Durability):一旦事务提交,其对数据库的更改是永久的,即使系统发生故障也不会丢失。
-
-
SQL支持 :使用**结构化查询语言(SQL)**进行数据操作,语法标准统一。
-
强一致性:数据在任何时刻都是强一致的,适合对数据一致性要求高的场景。
-
-
常见RDBMS数据库:
MySQL、Oracle、SQL Server、PostgreSQL、SQLite
-
功能:
-
数据定义DDL:提供数据定义语言(DDL),用于定义数据库的结构,如创建表、索引等。
-
数据操纵DML:提供数据操纵语言(DML),用于插入、查询、更新和删除数据。
-
数据控制DCL:提供数据控制语言(DCL),用于管理用户的访问权限和事务控制。
-
数据存储和检索:高效地存储和检索数据,支持索引、缓存等优化技术。
-
事务管理:支持事务处理,确保数据的一致性和完整性。
-
备份和恢复:提供数据备份和恢复功能,确保数据的安全性。
-
非关系型数据库(NoSQL)
-
定义: 非关系型数据库(NoSQL)是指不使用关系模型的数据库 ,数据存储方式多样 ,包括键值对、文档、列族和图形等。
-
特点:
-
灵活的模式:数据模式灵活,无需预先定义表结构,可以动态添加或修改字段。
-
水平扩展:支持水平扩展,可以通过增加更多的节点来提升性能和容量。
-
高性能:在处理大规模数据和高并发场景时,性能优越。
-
弱一致性:部分 NoSQL 数据库采用最终一致性模型,牺牲了一定的强一致性,以换取更高的性能和可用性。
-
-
常见NoSQL数据库:
-
键值对数据库:Redis、Riak
-
文档数据库:MongoDB、CouchDB
-
列族数据库:Cassandra、HBase
-
图形数据库:Neo4j、ArangoDB
-
SQL(结构化查询语言)
-
定义:SQL 是一种用于管理和操作关系型数据库的标准语言。它提供了一套统一的语法,使得用户可以方便地进行数据的查询、插入、更新和删除操作。
-
特点:
-
声明式:SQL 是一种声明式语言,用户只需要说明想要做什么,而不需要关心具体的实现细节。
-
标准化:SQL 是国际标准,大多数关系型数据库都支持 SQL。
-
强大:SQL 提供了丰富的功能,可以进行复杂的查询和数据操作。
-
-
主要命令:
-
数据查询(DQL):主要完成数据查询
sqlselect * from table_name where condition;
-
数据操作(DML):对数据进行基本的操作
sqlinsert into table_name (column1, column2) values (value1, value2); update table_name set column1 = value1 where condition; delete from table_name where condition;
-
数据定义(DDL):操作的都是对象
sqlcreate table table_name(column1 datatype, column2 datatype); alter table table_name add column3 datatype; drop table table_name;
-
数据控制(DCL):是修改数据中表的结构
sqlgrant 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
的表,包含学生的姓名和年龄信息。
-
创建表
sqlCREATE TABLE students ( id int primary key auto_increment, name carchar(50), age int );
-
插入数据
sqlinsert into students (name, age) values ('Alice', 20), ('Bob', 22);
-
查询数据
sqlselect * from students where age > 20;
-
更新数据
sqlupdate students set age = 23 where name = 'Bob';
-
删除数据
sqldelete from students where name = 'Alice';