MySQL高级指令

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 事务开启事务后,所有输入的 SQL 语句将被认作一个不可分割的整体,在提交时统一执行。如果在输入过程中出现问题,可以手动进行回滚。在输入过程中可以设置保存点。

高级指令

索引

  • 索引类型
索引名称 索引类型 字段类型 备注
PRIMARY KEY 主索引 主键 字段值不能重复,也不能为空。
INDEX 普通索引 自定义字段 无,效率低。
UNIQUE 唯一索引 自定义字段 字段值不能重复,效率高。
FULLTEXT 文本索引 自定义字段 无,用于文本检索。
-- 查询索引
mysql> SHOW INDEX FROM student;
-- 创建索引
mysql> CREATE [UNIQUE|FULLTEXT] INDEX idx_student_age 
    -> [USING BTREE]                                           -- 指定索引类型,默认 B+ 树
    -> ON student(age);                                        -- 指定索引属性
mysql> ALTER TABLE student ADD INDEX [idx_student_age](id,age);   
mysql> ALTER TABLE student ADD UNIQUE [uniq_student_age](age);         
mysql> ALTER TABLE student ADD FULLTEXE [ft_student_age](age);  
-- 删除索引
mysql> DROP INDEX idx_student_age ON student;
mysql> ALTER TABLE student DROP INDEX idx_student_age;                 Copy to clipboardErrorCopied
复制代码

视图

视图算法

算法 名称 含义
UNDEFINED 未定义(默认) MySQL 自主选择相应的算法。
MERGE 合并 视图的查询语句,与外部查询需要先合并再执行。
TEMPTABLE 临时表 将视图执行完毕后形成临时表,再做外层查询.

更新选项

算法 名称 含义
CACADED 级联(默认) 满足所有视图条件才能进行数据更新。
LOCAL 本地 满足本视图条件就能进行数据更新。
-- 创建视图
mysql> CREATE VIEW view_student
    -> AS (SELECT * FROM student);
mysql> CREATE ALGORITHM = MERGE
    -> VIEW view_student
    -> AS (SELECT * FROM student)
    -> WITH LOCAL CHECK OPTION;        
-- 查看结构
mysql> SHOW CREATE VIEW view_student;
-- 删除视图
mysql> DROP VIEW [IF EXISTS] view_student;
-- 修改视图结构(慎用)
mysql> ALTER VIEW view_student
    -> AS (SELECT * FROM student);Copy to clipboardErrorCopied
复制代码

事务

开启事务后,所有输入的 SQL 语句将被认作一个不可分割的整体,在提交时统一执行。

如果在输入过程中出现问题,可以手动进行回滚。在输入过程中可以设置保存点。

-- 事务开启
mysql> START TRANSACTION;
mysql> BEGIN;
-- 事务提交
mysql> COMMIT;
-- 事务回滚
mysql> ROLLBACK;
-- 保存点
mysql> SAVEPOINT mypoint;                     -- 设置保存点
mysql> ROLLBACK TO SAVEPOINT mypoint;         -- 回滚到保存点
mysql> RELEASE SAVEPOINT mypoint;             -- 删除保存点Copy to clipboardErrorCopied
复制代码

InnoDB 存储引擎支持关闭自动提交,强制开启事务:任何操作都必须要 COMMIT 提交后才能持久化数据,否则对其他客户端不可见。

mysql> SET AUTOCOMMIT = 0|1;             -- 0 表示关闭自动提交,1 表示开启自动提交。Copy to clipboardErrorCopied
复制代码

锁定

MySQL 可以手动对表/行锁定,防止其它客户端进行不正当地读取和写入。

-- 锁定
mysql> LOCK TABLES student [AS alias];          
-- 解锁
mysql> UNLOCK TABLES;Copy to clipboardErrorCopied
复制代码

触发器

触发程序是与表有关的数据库对象,监听记录的增加、修改、删除。当出现特定事件时,将激活该对象执行 SQL 语句。

  1. MySQL 数据库只支持行级触发器:如果一条 INSERT 语句插入 N 行数据,语句级触发器只执行一次,行级触发器要执行 N 次。
  2. 在触发器中,可以使用 OLDNEW 表示该行的新旧数据。删除操作只有 OLD,增加操作只有 NEW
-- 查看触发器
mysql> SHOW TRIGGERS;
-- 创建触发器
mysql> CREATE TRIGGER my_trigger 
    -> BEFORE INSERT                    -- 触发时间 BEFORE/AFTER 触发条件 INSERT/UPDATE/DELETE
    -> ON student                       -- 监听表必须是永久性表
    -> FOR EACH ROW                     -- 行级触发器
    -> BEGIN
    -> INSERT INTO student_logs(id,op,op_time,op_id) VALUES(null,'insert',now(),new.id)
    -> END;
-- 删除触发器
mysql> DROP TRIGGER [schema_name.]trigger_name;



相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
6天前
|
SQL 存储 算法
mysql常用指令操作
mysql常用指令操作
|
6天前
|
存储 SQL 关系型数据库
二、MySQL高级分享2
二、MySQL高级分享2
40 0
|
7月前
|
存储 关系型数据库 MySQL
MySQL基础详讲(高级部分)
MySQL是一种关系型数据库管理系统(RDBMS),它是一种开源数据库软件,广泛用于Web应用程序的开发和数据存储
69 3
|
7月前
|
关系型数据库 MySQL Java
MySQL高级【约束】第七章(上)
MySQL高级【约束】第七章
|
7月前
|
存储 SQL 关系型数据库
【MYSQL高级】数据生成与插入脚本编写与使用
【MYSQL高级】数据生成与插入脚本编写与使用
105 1
|
6天前
|
关系型数据库 MySQL 数据库
深入理解MySQL:从基础到高级数据库管理
深入理解MySQL:从基础到高级数据库管理
119 0
|
6天前
|
关系型数据库 MySQL PHP
MYSQL常用操作指令
MYSQL常用操作指令
57 2
|
6天前
|
SQL 关系型数据库 MySQL
Java中的MySQL高级使用手册:解锁数据库之道
Java中的MySQL高级使用手册:解锁数据库之道
53 1
|
6天前
|
存储 关系型数据库 MySQL
三、MySQL高级分享-分页
三、MySQL高级分享-分页
41 0
|
6天前
|
存储 SQL 关系型数据库
Mysql高级完整版
Mysql高级完整版
54 0