当前位置:网站首页>MySQL高级指令
MySQL高级指令
2022-08-10 21:11:00 【InfoQ】
高级指令
索引
- 索引类型
-- 查询索引
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
视图
视图算法
更新选项
-- 创建视图
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 语句。
- MySQL 数据库只支持行级触发器:如果一条 INSERT 语句插入 N 行数据,语句级触发器只执行一次,行级触发器要执行 N 次。
- 在触发器中,可以使用
OLD
和 NEW
表示该行的新旧数据。删除操作只有 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;
边栏推荐
猜你喜欢
随机推荐
工程师应该怎么学习
Are you hungry - Institution tree radio
D. Game With Array
【nvm】【node多版本管理工具】使用说明和踩坑(exit status 1)
PPT的两个实用技巧
美创科技勒索病毒“零信任”防护和数据安全治理体系的探索实践
变量和它的特性——《mysql 从入门到内卷再到入土》
地理探测器Geodetector软件的下载、应用与结果解读
In 2021 China industrial Internet security competition (competition) in fujian province and the first industry of fujian province Internet innovation competition
智能方案设计——智能跳绳方案
力扣215题,数组中的第K个最大元素
扩展中国剩余定理
2022.8.9 模拟赛
Redis 性能影响 - 异步机制和响应延迟
睡前故事|用Bitmap与AST做一个配置化时长系统
The evolution history of Go programmers
饿了么-机构树单选
2022.8.8好题选讲(数论场)
2022.8.9 Mock Competition
Likou 221 questions, the largest square