Skip to main content
MySQL Functions 函数

MySQL Functions 函数

Window functions 窗口函数

A window function performs an aggregate-like operation on a set of query rows. However, whereas an aggregate operation groups query rows into a single result row, a window function produces a result for each query row:


Yujie LiuLess than 1 minuteComputer ScienceDatabaseMySQL
SQL Exercises

SQL Exercises

T177 Nth Highest Salary

Table: Employee

+-------------+------+
| Column Name | Type |
+-------------+------+
| id          | int  |
| salary      | int  |
+-------------+------+
id is the primary key (column with unique values) for this table.
Each row of this table contains information about the salary of an employee.

Yujie LiuAbout 2 minComputer ScienceDatabaseMySQL
SQL Basic

SQL Basic

1. CRUD

SELECT

SELECT CustomerName, City FROM Customers;
SELECT * FROM Customers;

Yujie LiuAbout 9 minComputer ScienceDatabaseMySQL
MySQL

MySQL

事务

事务的四个条件(ACID)

  • 原子性(Atomicity)

    一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。

  • 一致性(Consistency):

    在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。

  • 隔离性(Isolation,又称独立性):

    数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。

    事务隔离级别包括读未提交(Read uncommitted)、读提交(Read committed)、可重复读(Repeatable read)和串行化(Serializable)。MySQL 默认为可重复度 Repeatable read。

  • 持久性(Durability):

    事务提交后数据修改是持久的。


Yujie LiuAbout 4 minComputer ScienceDatabaseMySQL
MySQL 索引 (B+ Tree)

MySQL 索引 (B+ Tree)

B+ Tree

B Tree 指的是 Balance Tree,也就是平衡树。平衡树是一颗查找树,并且所有叶子节点位于同一层。

B+ Tree 是基于 B Tree 和叶子节点顺序访问指针进行实现,它具有 B Tree 的平衡性,并且通过顺序访问指针来提高区间查询的性能。

在 B+ Tree 中,一个节点中的 key 从左到右非递减排列,如果某个指针的左右相邻 key 分别是 keyi 和 keyi+1,且不为 null,则该指针指向节点的所有 key 大于等于 keyi 且小于等于 keyi+1。即一个要查询的值比当前key大,但是比下一个key小,则该值一定在当前key的子节点中。


Yujie LiuAbout 7 minComputer ScienceDatabaseMySQL
MySQL 引擎 (Engines)

MySQL 引擎 (Engines)

MySQL 中最常见的存储引擎有:InnoDB、MyISAM 和 MEMORY,其中 InnoDB 是 MySQL 5.1 之后默认的存储引擎,它支持事务、支持外键、支持崩溃修复和自增列,它的特点是稳定(能保证业务的完整性),但数据的读写效率一般。

  • MyISAM 是 MySQL 5.1 之前默认的数据库引擎,读取效率较高,占用数据空间较少,但不支持事务、不支持行级锁、不支持外键等特性。因为不支持行级锁,因此在添加和修改操作时,会执行锁表操作,所以它的写入效率较低。
  • MEMORY 读写性能很高,但 MySQL 服务重启之后数据会丢失,它不支持事务和外键。适用场景是读写效率要求高,但对数据丢失不敏感的业务场景。

Yujie LiuAbout 1 minComputer ScienceDatabaseMySQL
MySQL 事务 (Transaction)

MySQL 事务 (Transaction)

基本条件和语法

  • 事务的四个条件(ACID):

    • 原子性(Atomicity)

      一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。

    • 一致性(Consistency):

      在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。

    • 隔离性(Isolation,又称独立性):

      数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。

      事务隔离级别包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。

    • 持久性(Durability):

      事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。

  • 事务控制语句:

    • BEGIN 或 START TRANSACTION 显式地开启一个事务;

    • COMMIT 也可以使用 COMMIT WORK,不过二者是等价的。COMMIT 会提交事务,并使已对数据库进行的所有修改成为永久性的;

    • ROLLBACK 也可以使用 ROLLBACK WORK,不过二者是等价的。回滚会结束用户的事务,并撤销正在进行的所有未提交的修改;

    • SAVEPOINT identifier,SAVEPOINT 允许在事务中创建一个保存点,一个事务中可以有多个 SAVEPOINT;

    • RELEASE SAVEPOINT identifier 删除一个事务的保存点,当没有指定的保存点时,执行该语句会抛出一个异常;

    • ROLLBACK TO identifier 把事务回滚到标记点;

    • SET TRANSACTION 用来设置事务的隔离级别。InnoDB 存储引擎提供事务的隔离级别有READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ 和 SERIALIZABLE。

  • MYSQL 事务处理的两种方法:

    • 用 BEGIN, ROLLBACK, COMMIT来实现

      BEGIN 开始一个事务,ROLLBACK 事务回滚,COMMIT 事务确认

    • 直接用 SET 来改变 MySQL 的自动提交模式:

      SET AUTOCOMMIT=0 禁止自动提交, SET AUTOCOMMIT=1 开启自动提交

  • 例子


Yujie LiuAbout 4 minComputer ScienceDatabaseMySQL