一、DDL:数据定义语言

1. 库的相关操作

  1. # 创建库
  2. create database [if not exists] 库名;
  3. # 删除库
  4. drop database [if exists] 库名;
  5. # 设置字符集
  6. CREATE DATABASE [if not exists] 库名 DEFAULT CHARACTER SET utf8;
  7. # 修改库的字符集
  8. ALTER DATABASE 库名 DEFAULT CHARACTER SET GBK
  9. # 查看建表详情语句
  10. SHOW CREATE DATABASE rj2014_1;
  11. # 切换数据库
  12. use 库名;

2. 表的相关操作

创建表

  1. create table 表名(
  2. 字段名1 类型[(宽度)] [约束条件] [comment '字段说明'],
  3. 字段名2 类型[(宽度)] [约束条件] [comment '字段说明'],
  4. 字段名3 类型[(宽度)] [约束条件] [comment '字段说明']
  5. )[表的一些设置];

二、DQL:数据查询语言

三、DML:数据操作语言

四、TCL:事务控制语言

**行成功,要么全部失败,不会存在部分成功的情况。

4.1 事务的四大特性(ACID)

原子性(Atomicity)

事务的整个过程如原子操作一样,最终要么全部成功,或者全部失败,这个原子性是从最终结果来看的,从最终结果来看这个过程是不可分割的。

一致性(Consistency)

事务开始之前、执行中、执行完毕,这些时间点,多个人去观察事务操作的数据的时候,看到的数据都是一致的,比如在事务操作过程中,A连接看到的是100,那么B此时也去看的时候也是100,不会说AB看到的数据不一样,他们在某个时间点看到的数据是一致的。

隔离性(Isolation)

一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。

持久性(Durability)

一个事务一旦提交,他对数据库中数据的改变就应该是永久性的。当事务提交之后,数据会持久化到硬盘,修改是永久性的。

4.2 Mysql中的事务操作

mysql中事务默认是隐式事务,执行insert、update、delete操作的时候,数据库自动开启事务、提交或回滚事务。

是否开启隐式事务是由变量autocommit控制的。

所以事务分为隐式事务显式事务

隐式事务

事务自动开启、提交或回滚,比如insert、update、delete语句,事务的开启、提交或回滚由mysql内部自动控制的。

查看变量autocommit是否开启了自动提交

  1. mysql> show variables like 'autocommit';
  2. +---------------+-------+
  3. | Variable_name | Value |
  4. +---------------+-------+
  5. | autocommit | ON |
  6. +---------------+-------+
  7. 1 row in set, 1 warning (0.00 sec)

autocommit为ON表示开启了自动提交。

显式事务

4.3 事务的隔离级别

五、索引

5.1 索引介绍

索引是依靠某些数据结构和算法来组织数据,最终引导用户快速检索出所需要的数据。
MYSQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构,所以说索引的本质是:数据结构。索引的目的在于提高查询效率。
优点:

  • 索引大大减小了服务器需要扫描的数据量,从而大大加快数据的检索速度,这也是创建索引的最主要的原因。
  • 索引可以帮助服务器避免排序和创建临时表
  • 索引可以将随机IO变成顺序IO

缺点:

  • 创建索引和维护索引要耗费时间
  • 索引需要占物理空间,除了数据表占用数据空间之外,每一个索引还要占用一定的物理空间,如果需要建立聚簇索引,那么需要占用的空间会更大
  • 对表中的数据进行增、删、改的时候,索引也要动态的维护,这就降低了整数的维护速度

    5.2 索引的分类🤏🏻


    主键索引:建立在主键上的索引被称为主键索引,一张数据表只能有一个主键索引,索引列值不允许有空值

普通索引 / 单列索引:每个索引只包含单个列,一个表可以有多个单列索引;

复合索引(多列索引、联合索引):复合索引指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。使用复合索引时遵循最左前缀集合;

唯一索引:限制值必须唯一,可以有一个NULL值;

全文索引:空间索引是对空间数据类型的字段建立的索引;

5.3 索引的基本操作

① 查看索引

  1. SHOW INDEX from `表名`

② 删除索引

  1. drop index index_name on table2

③ 创建索引

  1. # 创建主键索引
  2. CREATE TABLE `table` (
  3. `id` int(11) PRIMARY KEY ,
  4. `title` char(255)
  5. );
  6. # 创建普通索引
  7. CREATE TABLE `table2` (
  8. `id` int(11) PRIMARY KEY ,
  9. `title` char(255),
  10. KEY(title)
  11. );
  12. CREATE INDEX index_name on test_int(t1);
  13. #创建唯一索引
  14. CREATE TABLE t_user (
  15. `id` INT ( 11 ) PRIMARY KEY,
  16. `name` VARCHAR(20),
  17. UNIQUE ( name )
  18. )
  19. CREATE unique INDEX index_name on t_user(t1);
  20. #创建复合索引
  21. CREATE TABLE t_user2 (
  22. `id` INT ( 11 ) PRIMARY KEY,
  23. `name` VARCHAR(20),
  24. age INT ( 11 ),
  25. key ( name ,age)
  26. )
  27. CREATE INDEX index_name on t_user2(name,age);

5.4 索引失效场景

六、视图


参考文章

1
2