04 2023 档案
摘要:Sql性能分析: profiles详情:show profiles能够在做SQL优化时帮助我们了解时间都耗费到哪里去了。通过hava——profiles参数,能够看到当前Mysql是否支持profiles操作 执行一系列的业务SQL业务,然后通过如下指令查看指令的执行耗时: #查看每一条SQL的基本
阅读全文
摘要:代码: -- 查看索引show index from emp;-- name字段为姓名字段,该字段的值可能会重复,为该字段创建索引create index idx_emp_name on emp(name);-- entrydate字段为入职日期字段,是非空且唯一,为该字段创建唯一索引create
阅读全文
摘要:InnoDB引擎选择使用B+tree索引结构的原因: 1.相对于二叉树,层级更小,搜索效率高 2.对于B-tree,无论是叶子节点还是非叶子节点,都会保存数据,这样导致页中存储的键值减少,指针跟着减少,要同样保存大量数据,只能增加树的高度,导致性能降低
阅读全文
摘要:hash索引特点: 1.hash索引只能用于对等比较(=,in),不支持范围查询(between,>,<) 2.无法利用索引完成排序操作 3.查询效率高,通常只需要一次检索就可以了,效率通常高于B+Tree索引(在不发生hash碰撞的情况下) 存储引擎支持:在mysql中,支持hash索引的是Mem
阅读全文
摘要:索引:是帮助mysql高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构 ,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这些数据结构就是索引
阅读全文
摘要:存储引擎特点: MyISAM:是mysql早期的默认存储引擎 特点: 1.不支持事务,不支持外键 2.支持表锁,不支持行锁 3.访问速度快 文件: xxx.sdi:存储表结构信息 xxx.MYD:存储数据 xxx.MYI:存储索引 Memory:Memory引擎的表数据是存储在内存中的,由于受到硬件
阅读全文
摘要:存储引擎特点: InnoDB:是一种兼顾高可靠性和高性能的通用存储引擎,在mysql5.5之后,InnoDb是默认的mysql存储引擎 特点: 1.DNL操作遵循ACID模型,支持事务 2.行级锁,提高并发访问性能 3.支持外键(foreign key)约束,保证数据的完整性和正确性 文件:xxx.
阅读全文
摘要:存储引擎简介:是存储数据,建立索引,更新/查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的,所以存储引擎也被成为表类型
阅读全文
摘要:mysql体系结构: 连接层:最上层是一些客户端和链接服务,主要完成一些连接处理,授权认证,以及相关的安全方案,服务器也会为安全接入的每一个客户端验证它所具有的操作权限 服务层:第二层架构主要用于完成大多数的核心服务功能,如sql接口,并完成缓存的查询,sql的分析和优化,部分内置函数的执行,所有跨
阅读全文
摘要:-- 查看事务隔离级别select @@transaction_isolation;-- 设置事务隔离级别set session transaction isolation level repeatable read ;
阅读全文
摘要:事务的四大特性: 原子性:事务是不可分割的最小操作单元,要么全部成功,要么全部失败 一致性:事务完成时,必须使所有的数据都保持一直状态 隔离性:数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行 持久性:事务一旦提交或回滚,他对数据库中的数据的改变就是永久的
阅读全文
摘要:事务:是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,,即这些操作要么同时成功,要么同时失败 默认mysql的事务是自动提交的,也就是说,当执行一条DML语句,mysql会立即隐式地提交服务 事务操作: 查看/设置事务提交方式:select
阅读全文
摘要:-- 查询员工姓名,年龄,职位,部门信息(隐式内连接)select e.name,e.age,e.job,d.name from emp as e,dept as d where e.dept_id=d.id;-- 查询年龄小于30岁的员工姓名,年龄,职位,部门信息(显示内连接)select e.n
阅读全文
摘要:表子查询:返回的结果是多行多列常用的操作符:in 代码:-- 查询和员工333和员工444的职位,薪资都相同的员工select * from emp where (salary,job) in (select salary,job from emp where name='333' or name=
阅读全文
摘要:行子查询:子查询返回的结果是一行(可以是多列)常用的操作符;= <> in not in代码:-- 查询与员工333 工资和直属领导都相同的员工信息select * from emp where (salary,managerid)=(select salary,managerid from emp
阅读全文
摘要:列子查询;返回的结果是一列(可以是多行)常用的操作符:in,not in,any,some,all 代码:-- 查询销售部和总部的所有员工信息select * from emp where dept_id in (select id from dept where name='销售部' or nam
阅读全文
摘要:子查询:标量子查询,行子查询,列子查询,表子查询 标量子查询:查询的结果为单个值(数字,字符串,日期),这些最简单的形式常用的操作符:= <> > >= < <= 代码:-- 查询销售部所有员工的信息:先通过dept表查询销售部门id,然后通过id查询销售部所有员工的信息select * from
阅读全文
摘要:联合查询:union,union all 对于union查询,就是把多次查询的结果合并起来,形成一个新的结果集 select 字段列表 from 表1 where 条件... union all select 字段列表 from 表2 where 条件...;注意:对于联合查询的多张表的列数,字段类
阅读全文
摘要:自连接查询语法:select 字段列表 from 表1 as 别名A left join 表1 as 别名B on 连接条件...; 自连接查询,可以是内连接查询,也可以是外连接查询 代码: select A.name,B.name from emp as A,emp as B where A.ma
阅读全文
摘要:外连接查询语法: 左外连接:select 字段列表 from 表1 left join 表2 on 连接条件...; 相当于查询表1的所有数据,以及表1和表2的交集部分数据 右外连接:select 字段列表 from 表1 right join 表2 on 连接条件...; 相当于查询表2的所有数据
阅读全文
摘要:内连接查询语法; 隐式内连接:select 字段列表 from 表1,表2 where 条件...; 显式内连接:select 字段列表 from 表1 join 表2 on 连接条件...; 内连接是查询两张表的交集部分 代码: select emp.name,dept.name from emp
阅读全文
摘要:概述:从多张表中查询数据笛卡尔积:在数学中,两个集合 A集合和B集合的所有组合情况(在多表查询中,需要消除无效的笛卡尔积) 多表查询分类: 连接查询: 内连接:相当于查询A,B交集部分的数据 外连接: 左外连接:查询左表所有数据,以及两张表交集的部分数据 右外连接:查询右表所有数据,以及两张表交集的
阅读全文
摘要:多表关系概述:在项目开发中,在进行数据库结构设计时,会根据业务需求和业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种关联基本分为以下三种:一对多(多对一),多对多,一对一一对多(多对一):案例:部门与员工的关系关系:一个部门对应多个员工,一个员工对应一个部门
阅读全文
摘要:代码: create table dept( id int primary key auto_increment comment 'ID', name varchar(50) not null comment '姓名') comment '部门表';insert into dept(id,name)
阅读全文
摘要:1.概述:约束是作用于表上字段的规则,用来限制存储在表中的数据2.目的:保证数据库中数据的正确性,有效性,完整性3.分类: 注意:约束是作用于表中字段上的,可以在创建/修改表是添加约束 代码: create table user( id int primary key auto_increment
阅读全文
摘要:常见的流程函数: 代码: select if(true,'OK','Error');/*如果第一个值为true,则返回OK,否则返回Error */select IFNULL(null,'default');/*如果第一个值为null,则返回default,否则返回第一个值 */-- 查询emp表成
阅读全文
摘要:常见的日期函数: 代码: select curdate();/*返回当前日期 */select curtime();/*返回当前时间 */select now();/*返回当前日期+时间 */select year(now());/*返回当前日期中的年份 */select month(now());
阅读全文
摘要:常见的数值函数: 代码: select ceil(1.5);/*向上取整 */select floor(1.5);/*向下取整 */select mod(5,2);/*取模:余数 */select rand();/*求0~1之间的随机数 */select round(2.34,1);/*四舍五入 *
阅读全文
摘要:函数:是指一段可以直接被另一段程序调用的程序或代码 代码: select lpad('01',5,'-');/*lpad:字符串左填充 01 */select rpad('01',5,'-');/*rpad:字符串右填充 01 */select trim(' hello mysql ');/*tri
阅读全文
摘要:DCL-权限控制 mysql常用权限: 1.查询权限:show grants for '用户名'@'主机名'; 2.授予权限:grants 权限列表 on 数据库名.表名 to '用户名'@'主机名'; 3.撤销权限:revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';
阅读全文
摘要:DCL:数据库控制语言,用来管理数据库用户,控制数据库的访问权限 1.查询用户 use mysql; select * from user; 2,创建用户 create user '用户名'@'主机名' identified by '密码'; 3.修改用户密码 alter user '用户名'@'主
阅读全文
摘要:select * from emp where sex='女' and age in(16,17,18);/*查询女性年龄为16,17,18的员工 */select * from emp where sex='女' and age between 18 and 20 and name like '_
阅读全文
摘要:DQL-分页查询 select 字段列表 from 表名 limit 起始索引,查询记录数; 注意: 起始索引从0开始,起始索引=(查询页码-1)*每页显示记录数 分页查询是数据库的方言,不同的数据库有不同的实现,mysql中是limit 如果查询的是第一页的数据,起始索引可以省略,直接简写为 li
阅读全文
摘要:DQL-排序查询 1.语法 select 字段列表 from 表名 order by 字段1 排序方式1,字段2,排序方式2; 2.排序方式 asc:升序 desc:降序 注意:如果是多字段排序,当第一个字段相同时,才会根据第二个字段排序 代码: select * from emp order by
阅读全文
摘要:DQL分组查询: 1.语法:select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件]; where和having的区别: 执行时机不同:where是分组之前进行过滤,不满足wehere条件,不参与分组;而having是分组之后对结果
阅读全文
摘要:DQL聚合函数:将一个数据作为一个整体,进行纵向计算常见聚合函数: count:统计数量 max:最大值 min:最小值 avg:平均值 sum:求和 语法:select 聚合函数(字段列表) from 表名;注意:null值不参与所有聚合函数运算 代码: select count(*) from
阅读全文
摘要:DQL基本查询 DQL语句的执行顺序:from--where--group by--having--select--order by--limit 1.查询多个字段 select 字段1,字段2,字段3... from 表名; select * from 表名; 2.设置别名 select 字段1
阅读全文
摘要:DML添加数据: 1.给指定字段添加数据:insert into 表名(字段名1,字段名2...)values(值1,值2...); 2.给全部字段添加数据:insert into 表名 values(值1,值2...); 3.批量添加数据: insert into 表名(字段名1,字段名2...)
阅读全文