# 进阶4:常见的函数 /* 概念:将一组逻辑语句封装在方法体中,对外暴露方法名 好处:1.隐藏了实现细节 2.提高代码的复用性 调用: select 函数名() [from 表]; 特点: (1)叫什么(函数名) (2)干什么(函数功能) 分类: 1.单行函数 字符函数,数学函数,日期函数,其他函数,流程控制函数 2.分组函数 常见函数总结: 1.单行函数 字符函数: length,concat,substr,instr,trim,upper,lower,lpad,rpad,replace 数…
#进阶9:联合查询 /* union 联合 合并:将多条查询语句的结果合并成一个结果 语法: 查询语句1 union 查询语句2 union..... 应用场景:要查询的结果来自于多个表,且多个表没有直接的连接关系,但查询的信息一致时 特点: (1)要求多条查询语句的查询列数是一致的 (2)要求多条查询语句的查询的每一列的类型和顺序最好一致 (3)union去重,union all不去重 */ #引入的案例:查询部门编号>90或者邮箱包含a的员工信息 or email like "%a%&…
#进阶7:子查询 /* 含义: 出现在其他语句中的select语句,称为子查询或者内查询 外部的查询语句,称为主查询或外查询 分类: 按照子查询出现的位置: select后面:只支持标量子查询 from后面:支持表子查询 重点:where或者having后面: 标量子查询,重点 列子查询,重点 行子查询(用的较少) exists后面(相关子查询):表子查询 按照结果集的行列不同: 标量子查询(结果集中只有一行一列) 列子查询(结果集只有一列多行) 行子查询(结果集为一行多列) 表子查询(结果集为…
# 进阶3:排序查询 /* 引入: select * from employees; 语法: select 查询列表 from 表 [where 筛选条件] order by 排序的列表 asc/desc #asc升序,desc降序 [where 筛选条件]可选条件 特点: 1.#asc升序,desc降序,如果不写,默认升序 2. order by子句支持单个字段.多个字段.表达式.函数.别名 3. order by子句一般放在查询语句的最后面,limit子句除外. */ # 案例1:查询员工的…
#进阶6:连接查询 /* 含义:多个表格连接,当查询的字段来自于多个表时候,就会用到连接查询 我觉得这里类似于excel中的vlookup函数 笛卡尔乘积现象:表1有m行,表2有n行,结果有m*n行 如何发生:没有有效的连接条件 怎么解决:添加有效的连接条件 分类: 按照年代分类 sql92标准:仅仅支持内连接 sql99标准[推荐]:支持内连接+外连接(左外和右外)+交叉连接 按照功能分类: 内连接:等值连接,非等值连接,自连接 外连接:左外连接,右外连接,全外连接 交叉连接 */ use g…
#进阶5:分组查询 /* select 分组函数,列(要求出现在group by的后面) from 表 [where 筛选条件] group by 分组的列表 [order by 子句] 注意: 查询列表必须特殊,要求是分组函数和group by后出现的字段 特点: 1.分组查询中的筛选条件分为两类 数据源 位置 关键字 分组前筛选 原始表 group by 前 where 分组后筛选 分组后的结果集 group by 后 having 分组函数做条件,一定是放在having子句之中 group…
# 进阶2:条件查询 /* 语法: select 查询列表 from 表名 where 筛选条件; 分类: 一.按照条件表达式筛选 条件运算符:> < = !=(等价于<>) >= <= 二.按照逻辑表达式筛选 逻辑运算符: 作用:用于连接条件表达式 && || ! and or not && 和 and:2个条件均为true,结果为true,反之为false || 和 or:只要一个为true,结果为true,反之为false ! 和…
# 进阶1:基础查询 /* 语法: select 查询列表 from 表名: 特点: 1.查询列表可以是:表中的字段.常量值.表达式.表达式.函数 2.查询的结果是一个虚拟的表格 如何执行:执行谁,请选中谁! */ # 先确定是什么数据库. use myemployees; #1.查询表中的单个字段 select last_name from employees; #2.查询表中的多个字段 select last_name,salary,email from employees; #3.查询表中…
#进阶8:分页查询 /* 应用场景:要显示的数据,一页显示不全,需要分页提交sql请求 语法: select 查询列表 from 表 [join type] join 表2 on 连接条件 [where筛选条件][group by分组字段][having][order by] limit offset,size; offset要显示条目的起始索引(索引从0开始) size要显示的条目数量 */ # 案例:查询前五条员工信息 select * from employees limit 0,5; #…
网站或服务的性能关键点很大程度在于数据库的设计(假设你选择了合适的语言开发框架)以及如何查询数据上. 我们知道MySQL的性能优化方法,一般有建立索引.规避复杂联合查询.设置冗余字段.建立中间表.查询缓存等,也知道用EXPLAIN来查看执行计划. 但对MySQL复杂查询语句执行过程和内部机制,MySQL Optimizer本身所做优化以及查询语句调整对性能所产生的影响及其原因知之甚少. 本文试图对其中的一些关键概念如执行过程.索引使用等做比较深入的探讨,知其然,知其所以然, 这样可以避免在原本通…