06 2022 档案
摘要:简介 为了尽可能提高数据库的并发度,每次锁定的数据范围越小越好,理论上每次只锁定当前操作的数据的方案会得到最大的并发度, 但是管理锁是很耗资源的事情(涉及获取、检查、释放锁等动作)。因此数据库系统需要在高 并发响应和系统性能两方面进行平衡, 这样就产生了“锁粒度(Lock granularity)”
阅读全文
摘要:将之前有关rbac动态认证的代码导入项目中 查看数据库 获取1个令牌 检查令牌:获取数据库中记录的权限成功 使用oauth2生成令牌后,就不会使用session有关的配置了 sql脚本 /03/security/demo14 /03/oauth2/demo04 oauth_access_token
阅读全文
摘要:由于不同的用户拥有不同的权限,所以在前端页面左侧侧边栏中,当用户拥有指定的权限时,才显示指定的子菜单 做1个监听器,监听到用户认证成功后,则获取该用户拥有的权限,重新封装1个SysUser对象交给security处理 # core模块编写1个接口 public interface Authentic
阅读全文
摘要:分页查询用户信息 # 持久层接口 public interface SysUserMapper extends BaseMapper<SysUser> { /** * 分页查询 * @param page * @param sysUser * @return */ IPage<SysUser> se
阅读全文
摘要:分页查询角色权限 # 业务层接口 public interface SysRoleService extends IService<SysRole> { /** * 分页查询角色列表 * @param page 分页参数 * @param sysRole 条件查询对象,会取name属性值作为条件 *
阅读全文
摘要:简介 从数据操作的类型划分:读锁、写锁 读锁 :也称为 共享锁 、英文用 S 表示。针对同一份数据,多个事务的读操作可以同时进行而不会互相影响,相互不阻塞的。 写锁 :也称为 排他锁 、英文用 X 表示。当前写操作没有完成前,它会阻断其他写锁和读锁。这样就能确保在给定的时间里,只有一个事务能执行写入
阅读全文
摘要:在demo02的基础上开发 在spring boot整合security的项目中,是不能直接通过控制层跳转到resource目录下的html页面的 只有我们在security配置类中指定了403页面或登录页面时,才能跳转到这2个页面 http.exceptionHandling().accessDe
阅读全文
摘要:在demo15的基础上开发 # 使用注解控制权限,所以需要在security配置类上开启配置;否则注解不生效 @EnableGlobalMethodSecurity(prePostEnabled = true) 查看数据库,test用户拥有的角色权限为普通管理员;普通管理员拥有的权限资源为28 访问
阅读全文
摘要:简介 在Spring Security中实现方法级的安全性,最常见办法是使用特定的注解,将这些注解应用到需要保护的方法上 这些注解不仅可以直接加 controller 方法上, 也可以注解 Service 或 DAO 类中的方法 | 注解 | 描述 | | : : | : | | @PreAutho
阅读全文
摘要:简介 当前所有认证请求配置和应用权限配置在安全模块中,而很多权限配置是在应用模块提供的对应服务处理逻辑,这样只有应用模块才知道的这些配置,所以要将它们抽取到应用中进行配置 实现步骤 1. 创建 AuthorizeConfigurerProvider 授权配置统一接口。 2. 针对每个功能模块都创建一
阅读全文
摘要:Spring EL 权限表达式 | 表达式 | 描述 | | | | | permitAll() | 总是返回true,表示允许所有访问(认证不认证都可访问 URL或方法) | | denyAll() | 总是返回false,表示拒绝所有访问(永远访问不到指定的 URL或方法) | | isAnon
阅读全文
摘要:在之前的案例中,根据用户名+密码登录和根据手机短信+验证登录中有重复的代码 这里简化封装用户的代码 代码实现 /** * 创建1个抽象类 * 将代码重复部分放到抽象类中 * 代码不同的部分,让其他类继承该抽象类重写 */ public abstract class AbstractUserDetai
阅读全文
摘要:简介 用户表 ( sys_user ):保存用户信息 角色表 ( sys_role ):保存角色信息 权限表 ( sys_permission ):保存系统资源信息。如:菜单、按钮 和对应 URL它们的关系 :用户表与角色表是 多对多关系 ,角色表与资源表是多对多关系。 用户角色关系表(sys_us
阅读全文
摘要:在demo11的基础上完善 解决退出登录后不能再次登录 1、配置session会话超时时长,自定义session失效处理 2、设置1个账号不能同时在2台电脑登录 3、redis实现session高可用集群、指定cookie中保存的sessionid名称 4、在实现以上3步操作后,认证通过,退出登录,
阅读全文
摘要:错误回顾 1、配置session会话超时时长,自定义session失效处理 2、设置1个账号不能同时在2台电脑登录 3、redis实现session高可用集群、指定cookie中保存的sessionid名称 4、在实现以上3步操作后,认证通过,无操作等session超时,这时会提示session超时
阅读全文
摘要:简介 在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。为保证数据的一致性,需要对并发操作进行控制,因此产生了锁。同时锁机制也为实现MySQL的各个隔离级别提供了保证。锁冲突也是影响数据库并发访问性能的一个重要因素。所以锁对数据库而言显得尤其重要
阅读全文
摘要:当用户在服务器1认证后,服务器1将session存入reis,这时服务器1突然挂了,用户还可以访问服务器2且不用登录,因为服务器2从redis中获取session 配置方式 # core模块中添加依赖 <dependency> <groupId>org.springframework.boot</g
阅读全文
摘要:案例1:当用户在第2台电脑登录时,第1台电脑抛出错误信息,并下线 在security配置类中添加如下 .and() .sessionManagement()// session管理 // 设置最大session数量为1 .maximumSessions(1) 测试1:用edge浏览器模拟第1台电脑,
阅读全文
摘要:mysql 基础 1 2 3 4 5 简介 基础使用 select语句、去重 mysql运算符:算术、比较、逻辑、位 排序与分页 连表查询 mysql单行函数:数值、字符串、日期时间、流程控制 mysql聚合函数:AVG、SUM、MIN、MAX、COUNT、GROUPBY、HAVING mysql子
阅读全文
摘要:在demo05的基础上开发 认证时勾选记住我,认证成功后,会在应用程序中生成remember-me和JSESSIONID 数据库中会生成1条记录 为了演示session的作用,所以在之后的测试中不勾选记住我 在web模块的yml中设置session会话超时时长 server: servlet: se
阅读全文
摘要:代码案例 @RestController @RequestMapping("/user") public class WebController { @RequestMapping({"/test1"}) public String index() { Object principal = Secu
阅读全文
摘要:起步 简介 手机号登录是不需要密码的,通过短信验证码实现免密登录功能 1. 向手机发送手机验证码,使用第三方短信平台 SDK 发送,如: 阿里云短信服务(阿里大于) 2. 登录表单输入短信验证码 3. 使用自定义过滤器 MobileValidateFilter 4. 当验证码校验通过后,进入自定义手
阅读全文
摘要:案例一:github/03/security/demo04 在demo03的基础上继续开发 # core模块将ValidateCodeException提取到exception文件夹 # core模块导入依赖 <dependency> <groupId>org.springframework.boo
阅读全文
摘要:修改CustomAuthenticationFailureHandler类和CustomAuthenticationSuccessHandler # 将实现接口AuthenticationSuccessHandler修改为SavedRequestAwareAuthenticationSuccessH
阅读全文
摘要:在demo01的基础上继续开发 web模块编写CustomUserDetailsService @Component("customUserDetailsService") public class CustomUserDetailsService implements UserDetailsSer
阅读全文
摘要:父工程依赖 <!-- 依赖版本号 --> <properties> <mybatis-plus.version>3.2.0</mybatis-plus.version> <druid.version>1.1.12</druid.version> <oauth2-autoconfigure.versi
阅读全文
摘要:javase 1 2 3 4 5 基础语法 条件语句 面向对象 Exception Collection 集合框架拓展 抽象类和接口 内部类 集合框架 异常处理和泛型 File文件和目录 字节流 字符流 日期时间 常用类 Enum 序列化与反序列化 加解密:编码算法、哈希算法 加解密:BouncyC
阅读全文
摘要:创建eureka子模块 pom <dependencies> <dependency> <groupId>com.mengxuegu</groupId> <artifactId>mengxuegu-cloud-oauth2-base</artifactId> <version>${mengxuegu
阅读全文
摘要:简介 单点登录SSO(Single Sign On)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录, 也就是用户的一次登录能得到其他所有系统的信任。单点登录在大型网站里使用得非常频繁 导入表 查看表oauth_client_details的数据 加密后的密码 拥有的
阅读全文
摘要:前言 参考 充血模型:在实体类中除了属性、getter、setter方法,还有一些业务方法 贫血模型:在实体类中只有属性和getter、setter方法,不能体现实体类在当前系统中的作用 仓库与工厂:将持久层所需的实体对象拆分出来,在持久层的接口方法中我们通常需要传入参数返回返回值等;而这些参数和返
阅读全文
摘要:风格1 └── demo ├── application | ├── assembler # dto与do转换 | ├── dto # 数据传输对象 | ├── event | | ├── publish # 事件发布 | | └── subscribe # 事件订阅 | | | └── servi
阅读全文
摘要:实体类 @Data // 生成getter和setter方法 @AllArgsConstructor // 有参构造器 @NoArgsConstructor // 无参构造器 @ToString // toString方法 @Accessors(chain = true) @TableName("u
阅读全文
摘要:Mini-Transaction redo 日志写入log buffer redo log block的结构图 redo log file相关参数设置 1、innodb_log_group_home_dir :指定 redo log 文件组所在的路径,默认值为 ./ ,表示在数据库的数据目录下。My
阅读全文
摘要:redo日志的组成 1、重做日志的缓冲(reldolog buffer),保存在内存中,是易失的。 在服务器启动时就向操作系统申请了一大片称之为redo log buffer的连续内存空间,翻译成中文就是redo日志缓冲 区。这片内存空间被划分成若干个 连续的redo log block。一个red
阅读全文
摘要:简介 事务有4种特性:原子性、一致性、隔离性和持久性。 事务的隔离性由 锁机制 实现。 而事务的原子性、一致性和持久性由事务的 redo 日志和undo 日志来保证。 REDO LOG 称为 重做日志 ,提供再写入操作,恢复提交事务修改的页操作,用来保证事务的持久性。 UNDO LOG 称为 回滚日
阅读全文
摘要:简介 MySQL是一个 客户端/服务器 架构的软件,对于同一个服务器来说,可以有若干个客户端与之连接,每个客户端与服务器连接上之后, 就可以称为一个会话( Session )。每个客户端都可以在自己的会话中向服务器发出请求语句,一个请求语句可能是某个事务的一部分, 也就是对于服务器来说可能同时处理多
阅读全文
摘要:登录mysql后使用如下命令,查看存储引擎对事务的支持情况 SHOW ENGINES # 只有InnoDB 是支持事务 简介 事务:一组逻辑操作单元,使数据从一种状态变换到另一种状态 事务处理的原则:保证所有事务都作为 一个工作单元 来执行,即使出现了故障,都不能改变这种执行方式。当在一个事务中执行
阅读全文
摘要:优化数据库结构 拆分表:冷热数据分离 拆分表的思路是,把1个包含很多字段的表拆分成2个或者多个相对较小的表。这样做的原因是,这些表中某些字段的操作频率很高(热数据),经常要进行查询或者更新操作, 而另外一些字段的使用频率却很低(冷数据),冷热数据分离,可以减小表的宽度。如果放在一个表里面,每次查询都
阅读全文
摘要:调优的目标 尽可能 节省系统资源 ,以便系统可以提供更大负荷的服务。(吞吐量更大) 合理的结构设计和参数调整,以提高用户操作 响应的速度 。(响应速度更快) 减少系统的瓶颈,提高MySQL数据库整体的性能。 定位调优问题 用户反馈 日志分析 服务器资源使用监控 数据库内部状态监控 调优的维度和步骤
阅读全文
摘要:安装步骤 模型类型 概念模型(CDM Conceptual Data Model) 物理模型(PDM,Physical Data Model) 面向对象的模型(OOM Objcet Oriented Model) 业务模型(BPM Business Process Model) 创建概念模型 Fil
阅读全文
摘要:三少一多) 数据表的个数越少越好 RDBMS的核心在于对实体和联系的定义,也就是E-R图(Entity Relationship Diagram),数据表越少,证明实体和联系设计得越简洁,既方便理解又方便操作。 数据表中的字段个数越少越好 字段个数越多,数据冗余的可能性越大。设置字段个数少的前提是各
阅读全文
摘要:简介 ER模型也叫作实体关系模型,是用来描述现实生活中客观存在的事物、事物的属性,以及事物之间关系的一种数据模型。在开发基于数据库的信息系统的设计阶段, 通常使用ER模型来描述信息需求和信息特性,帮助我们理清业务逻辑,从而设计出优秀的数据库 ER模型包含的要素 1、实体:可以看做是数据对象,往往对应
阅读全文
摘要:简介 目前关系型数据库有六种常见范式,按照范式级别,从低到高分别是:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF) 和第五范式(5NF,又称完美范式)。 数据库的范式设计越高阶,冗余度就越低,同时高阶的范式一定符合低阶范式的要求,满足最低要
阅读全文
摘要:自增ID的问题 可靠性不高 存在自增ID回溯的问题,这个问题直到最新版本的MySQL8.0才修复。 安全性不高 对外暴露的接口可以非常容易猜测对应的信息。比如:/User/1/这样的接口,可以非常容易猜测用户ID的值为多少,总用户数量有多少,也可以非常容易地通过接口进行数据的爬取。 性能差 自增ID
阅读全文
摘要:EXISTS和IN的区分 # 大表A驱动小表cc时用in;即当A表的数据量大于B表的数据量时 SELECT * FROM A WHERE cc IN (SELECT CC FROM B); # 当A表的数据量小于B表的数据量时 # 小表A驱动大表cc时用EXISTS ,因为执行时每次是从A中取一条数
阅读全文
摘要:简介 Index Condition Pushdown(ICP)是MySQL5.6中新特性,是一种在存储擎层使用索引过滤数据的优化方式。 从二级索引中查找数据,如果二级索引中已经有了要筛选的列,但是又不能使用索引,会先从该二级索引筛选完以后再回表。 好处:ICP可以减少存储引擎必须访问基表的次数和M
阅读全文
摘要:简介 索引是高效找到行的一个方法,但是一般数据库也能使用索引找到一个列的数据,因此它不必读取整个行。毕竟索引叶子节点存储了它们索引的数据; 当能通过读取索引就可以得到想要的数据,那就不需要读取行了。一个索引包含了满足查询结果的数据就叫做覆盖索引。 非聚簇复合索引的一种形式,它包括在查询里的SELEC
阅读全文
摘要:GROUP BY优化 1、group by使用索引的原则几乎跟order by一致,group by即使没有过滤条件用到索引,也可以直接使用索引。 2、group by先排序再分组,遵照索引建的最佳左前缀法则 3、当无法使用索引列,增大max_length_for_sort_data和sort_bu
阅读全文
摘要:子查询 子查询是 MySQL 的一项重要的功能,可以帮助我们通过一个 SQL 语句实现比较复杂的查询。但是,子查询的执行效率不高 ① 执行子查询时,MySQL需要为内层查询语句的查询结果 建立一个临时表 ,然后外层查询语句从临时表 中查询记录。查询完毕后,再 撤销这些临时表 。这样会消耗过多的CPU
阅读全文
摘要:Simple Nested-Loop Join(简单嵌套循环连接) 从表A中取出一条数据1,遍历表B,将匹配到的数据放到result…以此类推,驱动表A中的每一条记录与被驱动表B的记录进行判断 Index Nested-Loop Join(索引嵌套循环连接) Index Nested-Loop Jo
阅读全文
摘要:左外连接 # 创建分类表 CREATE TABLE IF NOT EXISTS `type` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `card` INT(10) UNSIGNED NOT NULL, PRIMARY KEY (`id`) )
阅读全文
摘要:数据准备 # 创建数据库 CREATE DATABASE atguigudb2; USE atguigudb2; # 创建表 CREATE TABLE `class` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `className` VARCHAR(30) DE
阅读全文
摘要:使用格式 EXPLAIN SELECT select_options 或者 DESCRIBE SELECT select_options EXPLAIN 语句输出的各个列的作用 代码案例 # 创建表 CREATE TABLE s1 ( id INT AUTO_INCREMENT, key1 VARC
阅读全文
摘要:EXPLAIN四种输出格式 传统格式、JSON格式、TREE格式、可视化输出 输出传统格式 EXPLAIN SELECT s1.key1, s2.key1 FROM s1 LEFT JOIN s2 ON s1.key1 = s2.key1 WHERE s2.common_field IS NOT N
阅读全文
摘要:查看系统性能参数 SHOW [GLOBAL|SESSION] STATUS LIKE '参数'; Connections:连接MySQL服务器的次数。 Uptime:MySQL服务器的上线时间。 Slow_queries:慢查询的次数。 Innodb_rows_read:Select查询返回的行数
阅读全文
摘要:创建数据库、表 CREATE DATABASE atguigudb1; USE atguigudb1; # 1.创建学生表和课程表 CREATE TABLE `student_info` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `student_id` INT
阅读全文
摘要:起步 步骤 页的概念 页的大小默认为16k 以页作为磁盘和内存之间交互的基本单位,也就是一次最少从磁盘中读取16KB的内容到内存中,一次最少把内存中的16KB内容刷新到磁盘中。也就是说,在数据库中,不论读一行,还是读多行, 都是将这些行所在的页进行加载。也就是说,数据库管理存储空间的基本单位是页(P
阅读全文
摘要:起步 页的概念 页的大小默认为16k 以页作为磁盘和内存之间交互的基本单位,也就是一次最少从磁盘中读取16KB的内容到内存中,一次最少把内存中的16KB内容刷新到磁盘中。也就是说,在数据库中,不论读一行,还是读多行, 都是将这些行所在的页进行加载。也就是说,数据库管理存储空间的基本单位是页(Page
阅读全文
摘要:大纲 指定行格式的语法 在创建或修改表的语句中指定行格式: CREATE TABLE 表名 (列的信息) ROW_FORMAT=行格式名称 ALTER TABLE 表名 ROW_FORMAT=行格式名称 举例: mysql> CREATE TABLE record_test_table ( -> c
阅读全文
摘要:常见索引 聚簇索引 聚簇索引并不是一种单独的索引类型,而是一种数据存储方式(所有的用户记录都存储在了叶子节点),也就是所谓的索引即数据,数据即索引 其他特点 特点: 1. 使用记录主键值的大小进行记录和页的排序,这包括三个方面的含义: 页内的记录是按照主键的大小顺序排成一个单向链表 各个存放用户记录
阅读全文
摘要:起步 B树索引适用存储引擎 即使多个存储引擎支持同一种类型的索引,但是他们的实现原理也是不同的。 Innodb和MyISAM默认的索引是Btree索引;而Memory默认的索引是Hash索引。 MyISAM引擎使用 B+Tree 作为索引结构,叶子节点的data域存放的是 数据记录的地址 MyISA
阅读全文
摘要:简介 全表遍历 Hash结构 二叉搜索树 AVL树 B-Tree B+Tree R树 Hash结构 上图中哈希函数h有可能将两个不同的关键字映射到相同的位置,这叫做 碰撞 ,在数据库中一般采用 链接法 来解决。 在链接法中,将散列到同一槽位的元素放在一个链表中 Hash索引适用存储引擎 为了减少IO
阅读全文
摘要:持降序索引 在MySQL5.7和MySQL8.0中创建表 CREATE TABLE ts1(a int,b int,index idx_a_b(a,b desc)); # 在MySQL5.7中查看表结构 show create table ts1\G # 索引仍然是默认的升序 # 在MySQL8.0
阅读全文
摘要:索引的类型 从功能逻辑上说,索引主要有4种,分别是普通索引、唯一索引、主键索引、全文索引 按照物理实现方式,索引可以分为2种:聚簇索引和非聚簇索引 按照作用字段个数进行划分,分成单列索引和联合索引 1.1 普通索引 在创建普通索引时,不附加任何限制条件,只是用于提高查询效率。这类索引可以创建在任何数
阅读全文
摘要:区 B+树的每一层中的页都会形成一个双向链表,如果是以页为单位来分配存储空间的话,双向链表相邻的两个页之间的物理位置可能离得非常远。 B+树索引的适用场景的时候特别提到范围查询只需要定位到最左边的记录和最右边的记录,然后沿着双向链表一直扫描就可以了,而如果链表中 相邻的两个页物理位置离得非常远,就是
阅读全文
摘要:起步 定义 索引(Index)是帮助MySQL高效获取数据的数据结构 本质 索引是数据结构。可以简单理解为“排好序的快速查找数据结构”,满足特定查找算法。 这些数据结构以某种方式指向数据, 这样就可以在这些数据结构的基础上实现 高级查找算法 优点 (1)类似大学图书馆建书目索引,提高数据检索的效率,
阅读全文
摘要:curl download # 下载后直接解压 # 环境配置: CURL_HOME = C:\app\curl\curl-7.66.0 # 在path中添加 %CURL_HOME%\bin\ # cmd验证:curl --version # get请求 curl localhost:8080/tes
阅读全文
摘要:InnoDB表的优势 InnoDB存储引擎在实际应用中拥有诸多优势,比如操作便利、提高了数据库的性能、维护成本低等。 如果由于硬件或软件的原因导致服务器崩溃,那么在重启服务器之后不需要进行额外的操作。 InnoDB崩溃恢复功能自动将之前提交的内容定型,然后撤销没有提交的进程,重启之后继续从崩溃点开始
阅读全文
摘要:MyISAM 引擎 主要的非事务处理存储引擎 1、MyISAM提供了大量的特性,包括全文索引、压缩、空间函数(GIS)等,但MyISAM 不支持事务、行级锁、外键, 有一个毫无疑问的缺陷就是 崩溃后无法安全恢复 。 2、mysql5.5之前默认的存储引擎 3、优势是访问的速度快,对事务完整性没有要求
阅读全文
摘要:查看所有存储引擎 show engines; # 方式2 MariaDB [(none)]> show engines \G; *************************** 1. row *************************** Engine: MRG_MyISAM Supp
阅读全文
摘要:在 InnoDB 存储引擎中有一部分数据会放到内存中,缓冲池则占了这部分内存的大部分,它用来存储各种数据的缓存 从缓冲池中读取数据 缓冲池管理器会尽量将经常使用的数据保存起来,在数据库进行页面读操作的时候,首先会判断该页面是否在缓冲池中, 如果存在就直接读取,如果不存在,就会通过内存或磁盘将页面存放
阅读全文
摘要:mysql8中测试 查看profiling 是否开启 select @@profiling; show variables like 'profiling'; profiling=0 代表关闭,我们需要把 profiling 打开,即设置为 1: set profiling=1; 任意执行1条查询语
阅读全文
摘要:执行流程 查询流程 1、查询缓存:Server 如果在查询缓存中发现了这条 SQL 语句,就会直接将结果返回给客户端;如果没有, 就进入到解析器阶段。需要说明的是,因为查询缓存往往效率不高,所以在 MySQL8.0 之后就抛弃了这个功能 2、解析器:在解析器中对 SQL 语句进行语法分析、语义分析
阅读全文
摘要:服务器处理客户端请求 连接层 1、系统(客户端)访问 MySQL 服务器前,做的第一件事就是建立 TCP 连接。 2、经过三次握手建立连接成功后, MySQL 服务器对 TCP 传输过来的账号密码做身份认证、权限获取。 用户名或密码不对,会收到一个Access denied for user错误,客
阅读全文
摘要:创建角色 CREATE ROLE 'role_name'[@'host_name'] [,'role_name'[@'host_name']]... # 如果 host_name省略,默认为% , role_name不可省略 ,不可为空 代码案例 CREATE ROLE 'manager'@'loc
阅读全文
摘要:连接核实阶段 当用户试图连接MySQL服务器时,服务器基于用户的身份以及用户是否能提供正确的密码验证身份来确定接受或者拒绝连接。 即客户端用户会在连接请求中提供用户名、主机地址、用户密码,MySQL服务器接收到用户请求后,会使用user表中 的host、user和authentication_str
阅读全文
摘要:查看表 MariaDB [(none)]> show databases; # 查看所有数据库 + + | Database | + + | information_schema | | jdbc | | mysql | | performance_schema | + + 4 rows in se
阅读全文
摘要:查看权限类型 show privileges; (1) CREATE和DROP权限 ,可以创建新的数据库和表,或删除(移掉)已有的数据库和表。如果将 MySQL数据库中的DROP权限授予某用户,用户就可以删除MySQL访问权限保存的数据库。 (2)SELECT、INSERT、UPDATE和DELET
阅读全文
摘要:登录mysql服务 mysql –h hostname|hostIP –P port –u username –p DatabaseName –e "SQL语句" -h参数 后面接主机名或者主机IP,hostname为主机,hostIP为主机IP -P参数 后面接MySQL服务的端口,通过该参数连接
阅读全文
摘要:起步 Linux安装MySQL后查看目录结构 find / -name mysql MySQL数据库文件的存放路径:/var/lib/mysql/ 相关命令目录:/usr/bin(mysqladmin、mysqlbinlog、mysqldump等命令)和/usr/sbin 配置文件目录:/usr/s
阅读全文
摘要:宽松模式 如果设置的是宽松模式,那么我们在插入数据的时候,即便是给了一个错误的数据,也可能会被接受,并且不报错 严格模式 出现上面宽松模式的错误,应该报错才对,所以MySQL5.7版本就将sql_mode默认值改为了严格模式 设置宽松模式 set sql_mode = ONLY_FULL_GROUP
阅读全文
摘要:查看大小是否敏感 SHOW VARIABLES LIKE '%lower_case_table_names%' lower_case_table_names参数值的设置: 默认为0,大小写敏感 设置1,大小写不敏感。创建的表,数据库都是以小写形式存放在磁盘上,对于sql语句都是转换为小写对表和数据库
阅读全文
摘要:简介 在MySQL 8.0版本之前,默认字符集为 latin1 ,utf8字符集指向的是 utf8mb3 。网站开发人员在数据库设计的时候往往会将编码修改为utf8字符集。如果遗忘修改默认的编码,就会出现乱码的问题。从MySQL8.0开始,数据库的默认编码将改为 utf8mb4 ,从而避免上述乱码的
阅读全文
摘要:修改密码 # 在myslq5.7中修改密码 alter user 'root' identified by 'abcd1234'; # 使用同样的方式在mysql8.0中修改密码则会报错 错误原因 在MySQL 8.0之前,MySQL使用的是validate_password插件检测、验证账号密码强
阅读全文
摘要:起步 简介 公用表表达式(或通用表表达式)简称为CTE(Common Table Expressions)。CTE是一个命名的临时结果集,作用范围是当前语句。 CTE可以理解成一个可以复用的子查询,当然跟子查询还是有点区别的,CTE可以引用其他CTE,但子查询不能引用其他子查询。所以,可以考虑代替子
阅读全文
摘要:起步 分类 顺序结构 :程序从上往下依次执行 分支结构 :程序按条件进行选择执行,从两条或多条路径中选择一条执行 循环结构 :程序满足一定条件下,重复执行一组语句 针对于MySQL 的流程控制语句主要有 3 类。注意:只能用于存储程序 条件判断语句 :IF 语句和 CASE 语句 循环语句 :LOO
阅读全文
摘要:简介 触发器是由 事件来触发 某个操作,这些事件包括 INSERT 、 UPDATE 、 DELETE 事件。所谓事件就是指用户的动作或者触发某项行为。如果定义了触发程序,当数据库执行这些语句时候,就相当于事件发生了,就会 自动 激发触发器执行相应的操作 当对数据表中的数据执行插入、更新和删除操作,
阅读全文
摘要:起步 简介 窗口函数的作用类似于在查询中对数据进行分组,不同的是,分组操作会把分组的结果聚合成一条记录,而窗口函数是将结果置于每一条数据记录中 分类 静态窗口函数的窗口大小是固定的,不会因为记录的不同而不同 动态窗口函数的窗口大小会随着记录的不同而变化 格式 函数 OVER([PARTITION B
阅读全文
摘要:简介 在结果集中像指针一样,向前定位一条记录、向后定位一条记录,或者是 随意定位到某一条记录 ,并对记录的数据进行处理 游标,提供了一种灵活的操作方式,让我们能够对结果集中的每一条记录进行定位,并对指向的记录中的数据进行操作的数据结构。游标让 SQL 这种面向集合的语言有了面向过程开发的能力 在 S
阅读全文
摘要:简介 定义条件 是事先定义程序执行过程中可能遇到的问题, 处理程序 定义了在遇到问题时应当采取的处理方式,并且保证存储过程或函数在遇到警告或错误时能继续执行。这样可以增强存储程序处理问题的能力,避免程序异常停止运行 定义条件和处理程序在存储过程、存储函数中都是支持的。 前置案例 # 定义1个存储过程
阅读全文