MySQL基础篇

19

数据库三范式

第一范式

确保每列的原子性

第二范式

确保表中的每列都与主键相关。也可理解为其他列直接依赖主键。

第三范式

确保表中的每列都与主键直接相关,而不是间接相关。也可理解为不能有传递性依赖

SQL常用语句

SQL类型

DDL语句

数据库操作

查询

  • 查询所有数据库 SHOW DATABASES;
  • 查询当前数据库 SELECT DATABASE();
    创建
  • 创建数据库 CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则];,默认字符集推荐使用utf8mb4,该字符集使用4字节保存数据。utf8是3字节,一些字符表情或者中文会乱码。
    删除
  • 删除数据库 DROP DATABASE [IF EXISTS] 数据库名;
    使用
  • USE 数据库名;
表操作
  • 查询当前数据库所有表 SHOW TABLES;
  • 查询表结构 DESC 表名;
  • 查询建表语句 SHOW CREATE TABLE 表名;
  • 创建表
CREATE TABLE 表名(
	字段1 字段1类型 [COMMENT 字段1注释],
	字段2 字段2类型 [COMMENT 字段2注释],
	...
	字段n 字段n类型 [COMMENT 字段n注释]
)[COMMENT 表注释];

数据库事务

事务的定义
事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。

默认Mysql的事务是自动提交的,也就是说,当执行一条DML语句,Mysql会立即隐式的提交事务。

事务操作

事务提交方式

  • 查看 SELECT @@autocommit;
  • 设置手动提交 SET @@autocommit = 0

开启事务

  • START TRANSACTION;BEGIN;

提交事务

  • 执行 COMMIT; 命令

事务回滚

  • 执行 ROLLBACK;命令

事务的四大特性ACID

  • 原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败
  • 一致性(Consistency):事务完成时,必须使所有的数据状态保持一致
  • 隔离性(Isolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行
  • 持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变是永久的

并发事务问题

  • 脏读:一个事务读到另外一个事务未提交的数据
  • 不可重复读:一个事务先后读取同一条记录,但两次读到的数据不同,称为不可重复读
  • 幻读:一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时,又发现这行数据已经存在,就好像出现了“幻影”

事务隔离级别

Mysql默认的隔离级别为Repeatable Read,SqlServer 默认的是Read committed。

  • 查询事务隔离级别 SELECT @@TRANSACTION_ISOLATION;
  • 设置事务隔离级别 SET [SESSION | GLOBAL] TRANSACTION ISOLATION LEVEL [READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE]

事务的隔离级别越高,数据越安全,但是性能越低。