Jtoss Jtoss
首页
  • 数据结构与算法

    • 数据结构与算法 - 概述
    • 数据结构与算法 - 复杂度分析
    • 数据结构 - 线性表
    • 算法 - 常见排序算法
  • 代码规范

    • 代码简洁之道
    • 阿里巴巴开发手册
    • 谷歌Java编程风格指南
  • 设计模式

    • 编写高质量代码概述
    • 面向对象
    • 设计原则
    • 设计模式-创建型
    • 设计模式-结构型
    • 设计模式-行为型(上)
    • 设计模式-行为型(下)
    • 浅析框架源码中的设计模式
    • 业务框架实战案例
  • MySQL 基础

    • MySQL - 数据库设计规范
    • MySQL - 必知必会
  • MySQL 进阶

    • MySQL - 基础架构
    • MySQL - InnoDB存储引擎
    • MySQL - InnoDB缓冲池
    • MySQL - 事务与锁
    • MySQL - 索引
    • MySQL - 查询执行计划
    • MySQL - 性能优化
  • Redis 系列

    • Redis入门 - 基础相关
    • Redis进阶 - 数据结构
    • Redis进阶 - 持久化RDB和AOF
    • Redis进阶 - 事件机制
    • Redis进阶 - 事务
    • Redis进阶 - 高可用高可扩展
    • Redis进阶 - 缓存问题
    • Redis进阶 - 性能调优
  • Java 基础

    • Java 基础 - 知识点
    • Java 基础 - 面向对象
    • Java 基础 - Q/A
  • Java 进阶 - 集合框架

    • Java 集合框架详解
  • Java 进阶 - 多线程与并发

    • Java 并发 - 理论基础
    • Java 并发 - 线程基础
    • Java 并发 - 各种锁
    • Java 并发 - 关键字 volatile
    • Java 并发 - 关键字 synchronized
    • JUC - CAS与原子操作
    • JUC - 锁核心类AQS
    • JUC - 锁接口和类简介
    • JUC - 并发容器简介
    • JUC - 通信工具类
    • JUC - Fork-Join框架
    • JUC - 线程池
  • Java 进阶 - JVM

    • JVM - 概述
    • JVM - 类加载机制
    • JVM - 内存结构
    • JVM - 垃圾回收机制
    • JVM - 性能调优
  • Maven系列

    • Maven基础知识
    • Maven项目构建
    • Maven多模块配置
  • Spring 框架

    • Spring 框架 - 框架介绍
    • Spring 框架 - IOC详解
    • Spring 框架 - AOP详解
    • Spring 框架 - SpringMVC详解
  • Spring Boot 系列

    • Spring Boot - 开发入门
    • Spring Boot - 接口相关
  • Spring Cloud 系列
  • Mybatis 系列

    • Mybatis - 总体框架设计
    • Mybatis - 初始化基本过程
    • Mybatis - sqlSession执行过程
    • Mybatis - 插件机制
    • Mybatis - 事务管理机制
    • Mybatis - 缓存机制
  • 业务常见问题

    • Java 业务开发常见错误(一)
    • Java 业务开发常见错误(二)
    • Java 业务开发常见错误(三)
    • Java 业务开发常见错误(四)
    • Java 业务开发常见错误(五)
    • Java 业务开发常见错误(六)
  • IDEA系列

    • IDEA 2021开发环境配置
    • IDEA 快捷键
  • Git系列

    • git status中文乱码
  • 其他

    • Typora+Picgo 自动上传图片
    • hsdis 和 jitwatch
  • 实用技巧
  • 收藏
  • 摄影
  • 学习
  • 标签
  • 归档

Jason Huang

后端程序猿
首页
  • 数据结构与算法

    • 数据结构与算法 - 概述
    • 数据结构与算法 - 复杂度分析
    • 数据结构 - 线性表
    • 算法 - 常见排序算法
  • 代码规范

    • 代码简洁之道
    • 阿里巴巴开发手册
    • 谷歌Java编程风格指南
  • 设计模式

    • 编写高质量代码概述
    • 面向对象
    • 设计原则
    • 设计模式-创建型
    • 设计模式-结构型
    • 设计模式-行为型(上)
    • 设计模式-行为型(下)
    • 浅析框架源码中的设计模式
    • 业务框架实战案例
  • MySQL 基础

    • MySQL - 数据库设计规范
    • MySQL - 必知必会
  • MySQL 进阶

    • MySQL - 基础架构
    • MySQL - InnoDB存储引擎
    • MySQL - InnoDB缓冲池
    • MySQL - 事务与锁
    • MySQL - 索引
    • MySQL - 查询执行计划
    • MySQL - 性能优化
  • Redis 系列

    • Redis入门 - 基础相关
    • Redis进阶 - 数据结构
    • Redis进阶 - 持久化RDB和AOF
    • Redis进阶 - 事件机制
    • Redis进阶 - 事务
    • Redis进阶 - 高可用高可扩展
    • Redis进阶 - 缓存问题
    • Redis进阶 - 性能调优
  • Java 基础

    • Java 基础 - 知识点
    • Java 基础 - 面向对象
    • Java 基础 - Q/A
  • Java 进阶 - 集合框架

    • Java 集合框架详解
  • Java 进阶 - 多线程与并发

    • Java 并发 - 理论基础
    • Java 并发 - 线程基础
    • Java 并发 - 各种锁
    • Java 并发 - 关键字 volatile
    • Java 并发 - 关键字 synchronized
    • JUC - CAS与原子操作
    • JUC - 锁核心类AQS
    • JUC - 锁接口和类简介
    • JUC - 并发容器简介
    • JUC - 通信工具类
    • JUC - Fork-Join框架
    • JUC - 线程池
  • Java 进阶 - JVM

    • JVM - 概述
    • JVM - 类加载机制
    • JVM - 内存结构
    • JVM - 垃圾回收机制
    • JVM - 性能调优
  • Maven系列

    • Maven基础知识
    • Maven项目构建
    • Maven多模块配置
  • Spring 框架

    • Spring 框架 - 框架介绍
    • Spring 框架 - IOC详解
    • Spring 框架 - AOP详解
    • Spring 框架 - SpringMVC详解
  • Spring Boot 系列

    • Spring Boot - 开发入门
    • Spring Boot - 接口相关
  • Spring Cloud 系列
  • Mybatis 系列

    • Mybatis - 总体框架设计
    • Mybatis - 初始化基本过程
    • Mybatis - sqlSession执行过程
    • Mybatis - 插件机制
    • Mybatis - 事务管理机制
    • Mybatis - 缓存机制
  • 业务常见问题

    • Java 业务开发常见错误(一)
    • Java 业务开发常见错误(二)
    • Java 业务开发常见错误(三)
    • Java 业务开发常见错误(四)
    • Java 业务开发常见错误(五)
    • Java 业务开发常见错误(六)
  • IDEA系列

    • IDEA 2021开发环境配置
    • IDEA 快捷键
  • Git系列

    • git status中文乱码
  • 其他

    • Typora+Picgo 自动上传图片
    • hsdis 和 jitwatch
  • 实用技巧
  • 收藏
  • 摄影
  • 学习
  • 标签
  • 归档
  • MySQL 基础

    • MySQL - 数据库设计规范
    • MySQL - 数据类型
    • MySQL - 常用语句
    • MySQL - 查询
    • MySQL - 日志
    • MySQL - 其他
      • 1 临时表
      • 2 视图
      • 3 存储过程
      • 4 游标
      • 5 触发器
      • 6 权限管理
        • 角色
        • 用户
    • MySQL - 8.0新特性
    • MySQL - Q/A
  • MySQL 进阶

  • Redis

  • 数据库
  • MySQL 基础
Jason
目录

MySQL - 其他

# 1 临时表

创建:CREATE TEMPORATE 临时表名(字段...),默认使用innodb存储引擎,即磁盘临时表,也可以指定引擎如 engine = memory 即内存临时表。内存临时表的查询效率高于磁盘临时表。

作用:可使用临时表存储中间结果以拆分复杂查询。

特点:需占用存储空间。临时表是连接隔离的,不同连接的临时表可以同名,互不影响。在连接断开后自动删除。

# 2 视图

如果定义视图的 SQL 语句中包含了聚合函数,就不能对视图中的数据进行 DML 操作

-- 创建视图
CREATE [OR REPLACE] VIEW 视图名称 [(字段列表)] AS 查询语句;
-- 修改视图
ALTER VIEW 视图名 AS 查询语句;
-- 查看视图
DESCRIBE 视图名;
-- 删除视图
DROP VIEW 视图名;
1
2
3
4
5
6
7
8

image12

# 3 存储过程

存储过程就是把一系列 SQL 语句预先存储在 MySQL 服务器上,需要执行的时候,客户端只需要向服务器端发出调用存储过程的命令,服务器端就可以把预先存储好的这一系列 SQL 语句全部执行。

存储过程可以完成某一特定的业务逻辑;存储过程实际上是一组 SQL 语句;存储过程预先被编译存放在数据库服务器上;

存储过程的优点就是执行效率高,而且更加安全,不过,它也有着自身的缺点,那就是开发和调试的成本比较高,而且不太容易维护。

-- 创建存储过程
CREATE PROCEDURE 存储过程名 ([ IN | OUT | INOUT] 参数名称 类型)程序体;
-- 查看存储过程
SHOW CREATE PROCEDURE 存储过程名称;
-- 调用存储过程
CALL 存储过程名(参数...);
-- 删除存储过程
DROP PROCEDURE 存储过程名称;
1
2
3
4
5
6
7
8

存储过程的参数定义有 3 种,分别是 IN、OUT 和 INOUT:

  • IN 表示输入的参数,存储过程只是读取这个参数的值。如果没有定义参数种类,默认就是 IN,表示输入参数。
  • OUT 表示输出的参数,存储过程在执行的过程中,把某个计算结果值赋给这个参数,执行完成之后,调用这个存储过程的客户端或者应用程序就可以读取这个参数返回的值了。
  • INOUT 表示这个参数既可以作为输入参数,又可以作为输出参数使用。

除了定义参数种类,还要对参数的数据类型进行定义。如果不指定参数的种类,默认就是 IN,表示输入参数。

# 4 游标

由 SELECT 语句返回的完整行集(包括满足 WHERE 语句中条件的所有行)称为结果集。MySQL 中的 SQL 操作,会对整个结果集起作用。应用程序,特别是交互式的联机应用程序,并不总能将整个结果集作为一个单元来进行有效的处理,这些应用程序需要一种机制,以便每次处理一行或者一部分行。游标就是提供这种机制的,是对结果集的一种扩展。具体而言,MySQL 的游标有以下特点:

  • 可以逐条查看数据集中的记录;
  • 一次只能查看一条记录;
  • 只能向一个方向扫描数据,并且不能跳跃;
  • 游标是只读的。

可以使用条件处理语句“DECLARE CONTINUE HANDLER FOR NOT FOUND”,来判断游标到达了结果集的最后。

# 5 触发器

触发器也是存储在服务器端,是一种存储程序,触发器监控的对象是一个特定的表,触发器可以记录日志、进行安全性检查,并且无需应用程序的控制,可以由数据操作的事件驱动,

# 6 权限管理

# 角色

MySQL 8.0引入,相当于权限的集合,方便管理拥有相同权限的用户。

只要你创建了一个角色,系统就会自动给你一个“USAGE”权限,意思是连接登录数据库的权限。

-- 创建角色,
CREATE ROLE 角色名;
-- 创建角色,只能从数据库服务器运行的这台计算机登录这个账号
-- 默认是通配符“%”,意思是这个账号可以从任何一台主机上登录数据库
CREATE ROLE 'manager'@'localhost';
-- 给角色授权
GRANT 权限 ON 表名 TO 角色名;
GRANT SELECT,INSERT,DELETE,UPDATE ON demo.invcount TO 'manager';
-- 查看角色权限
SHOW GRANTS FOR 'manager';
-- 删除角色
DROP ROLE 角色名称;
1
2
3
4
5
6
7
8
9
10
11
12

MySQL 中创建了角色之后,默认都是没有被激活的,需永久激活:

SET global activate_all_roles_on_login=ON;
1

# 用户

-- 创建用户
CREATE USER 用户名 [IDENTIFIED BY 密码];
CREATE USER 'zhangsan' IDENTIFIED BY 'mysql';
-- 给用户授权
GRANT 角色名称 TO 用户名称;
GRANT 权限 ON 表名 TO 用户名;
-- 查看用户权限
SHOW GRANTS FOR 用户名;
-- 删除用户
DROP USER 用户名;
1
2
3
4
5
6
7
8
9
10

尽量使用数据库自己的角色和用户机制来控制访问权限,不要轻易用 Root 账号。因为 Root 账号密码放在代码里面不安全,一旦泄露,数据库就会完全失去保护。

#MySQL
上次更新: 2024-08-19
MySQL - 日志
MySQL - 8.0新特性

← MySQL - 日志 MySQL - 8.0新特性→

最近更新
01
开始
01-09
02
AI工具分享
01-09
03
AI 导读
01-07
更多文章>
Theme by Vdoing | Copyright © 2022-2025 Jason Huang | 闽ICP备2025088096号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式