mysql 基础入门 单表查询
单表查询
select 表头,表头 as 别名 ,表头(+-*/的运算) from table_a
1.条件查询
where + 条件
<> , != | 不等于 |
---|---|
= | 等于,也可以表示字符串值相等 |
<,> | 小于,大于 |
>=,<= | 大于等于,小于等于 |
between... and.. | 两个值之间(左小右大,左右都闭),等同于 >=and <= |
is null,is not null | 为空,不为空 (注意null 不能使用=进行衡量) |
and | 并且,and 语句优先级高于or |
or | 或者 例:select name from table where name=‘张三‘or ‘‘李四‘ |
not | not 表示取非, 可以在is ,in (in 后是具体值,不是区间)中使用 |
and ,or的优先级对比
and 优先级高于or,若希望先执行or 可以使用(),不确定优先,注意使用()
例:查询工资大于5500,并且编号为10或20的员工
- select
- name
- from
- emp
- where sal>5500 and (deptno=10 or deptno=20)
-- 这里and 优先级高于or ,括号的使用可以对内容进行组合,由此实现内查询
模糊查询
like 模糊查询,支持%和_(下划线)
- %匹配任意一个字符
- _代表任意一个字符(一个下划线占一个位置)
- 若要like 含有_的内容,可以使用\进行转义
- - 表示以a开头的所有字符
- 表头 like ‘a%‘
- - 表示以a结尾的所有字符
- 表头 like ‘%a‘
- - 表示表中含有_字符的所有字符
- 表头 like ‘%\_%‘
- - 表示第二字母是a的所有字符
- 表头 like ‘_a%‘
- - 表示倒数第二字母是a的所有字符
- 表头 like ‘%a_‘
2、排序
order by 表头
- +desc(指定降序)/asc(升序,默认)
- +列号 如2
- 排序总是在最后
- slect ... from ... where .....order by
- -- 多个字段排序 当字段相等才按后面进行排序
- select sal from emp order by sal desc,ename asc;
- -- 了解 列号排序
- select sal from emp order by 2
3.数据处理函数
- 又称为单行处理函数
- 单行处理函数的特征:一个输入对应一个输出
- 多行处理函数:多行输入对应一个输出
- 常见函数 select function(表头 ) from table_a 或者 在where 条件中
lower | 转换小写 |
---|---|
upper | 转换大写 |
substr | 取子串(substr(被截取的字符串,起始下标(注下标 从1开始),截取的长度)) |
length | 取长度 |
trim | 去空格 |
str_to_data | 将字符串转换成日期 |
data_format | 格式化日期 |
format | 设置千分位 |
round | 四舍五入 round(表头,保留的小数位) |
rand() | 生成随机数 |
ifnull | 将null 转换成一个具体值 ;因为在所有数据中只要有null参与的数学运算结果就是null; 如:ifnull(表头,0) 如果为null 当做一个值来看 |
case... when..then..when..then.. else.....end | case 表头 when 条件1 then 执行a when 条件2 then 执行2 else 其他 end |
- -- substr应用
- -- 从 emp 获取以A开头的ename
- select ename from emp where substr(ename,1,1)=‘A‘;
- -- length应用
- -- 查看emp中ename的字符长度
- select length(ename) from emp ;
- -- null 参与数据计算最终结果一定为null,为了避免这个现象,需要使用ifnull 函数
- ifnull(表头,0) 如果表头为null 则视为0
- select ename,sal+ifnull(comm,0)as salcomm from emp
- --case ...when. then... when ... then..else... end 应用
- -- 当员工的岗位为sd时,工资上调10%,当工作岗位为ds时,工资上调20%,其他正常,不修改数据库
- select ename,job,
- (case job when ‘sd‘ then sal*1.1 when ‘ds‘ then sal*1.2 else sal end)
- as newsal
- from
- emp;
mysql的表映射
select ‘sda ‘/ 1000 from emp
4.分组函数(多行处理函数)
- 需要先分组,才能用 多与group by 一同使用
- 注意
- 如果没有分组,则默认整张表为一组
- 不需要对null 进行处理,自动忽略null
- count(*) 与count(具体字段)的区别
- count(具体字段)表示统计该字段(该列)所有不为null的元素的总和
- count(*) 这里按行(因为不存在全为null的行)统计,即统计总行数量
- __不能__在where条件中使用
- 所有的分组函数可以联合使用
count | 计数 |
sum | 求和 |
avg | 平均数 |
max | 最大值 |
min | 最小值 |
- -- 实例
- select min(asl) from emp
- select max(asl) from emp
- select sum(asl) from emp
- select avg(asl) from emp
- select count(ename) from emp
- -- count(*)
- select count(*) from emp;
- -- 表示一共有几行,即总行数量
- select count(表头) from emp:
- -- 即不为null的行的数量
5.分组查询
应用中需要先 进行分组,再对分组后的数据进行操作
- select ... from ... group by 表头
select 表头a, 分组函数(表头b) group by 表头a;
在select 语句当中,如果有group by 语句,select 后只能跟:参加分组的字段,以及分组函数,
其他一律不能跟(1.没有意义,2.若在oracle中报错,相较而言mysql 语法较为松散)
group by 表头1,表头2 两个字段联合分组
- -- 应用
- -- 找出每个部门,不同工作岗位的最高薪资
- -- 技巧 两个字段联合分组
- select deptno,jon,max(sal) from emp group by deptno,job
- 使用
having
对分组后数据进行过滤
效率不高,实际上可以先where出再进行分组,where和having 优先使用having
- select deptno,jon,max(sal) from emp group by deptno,job having sal>3000;
- 或者
- select deptno,jon,max(sal) from emp where sal>3000 group by deptno,job ;
- -- hvaing + 分组函数
- select deptno,jon,max(sal) from emp group by deptno,job having avg(sal)>3000
补充
执行顺序
- select ... from .. where .... group by ...order by..
- 先执行from ,再者 where ,接着是group by 之后是select 最后我order by..
- 从某张表中查询数据,
- 先经过where 条件筛选出有价值的数据,
- 对这些有价值的数据进行分组
- 分组之后可以使用having继续筛选
- select查询出来
- 最后排序输出
原文地址:https://www.cnblogs.com/yescarf/p/14092434.html
mysql 基础入门 单表查询的更多相关文章
- mysql 数据操作 单表查询 目录
mysql 数据操作 单表查询 mysql 数据操作 单表查询 简单查询 避免重复DISTINCT mysql 数据操作 单表查询 通过四则运算查询 mysql 数据操作 单表查询 concat()函 ...
- mysql 数据操作 单表查询 where 约束 目录
mysql 数据操作 单表查询 where约束 between and or mysql 数据操作 单表查询 where约束 is null in mysql 数据操作 单表查询 where约束 li ...
- mysql 数据操作 单表查询 group by 分组 目录
mysql 数据操作 单表查询 group by 介绍 mysql 数据操作 单表查询 group by 聚合函数 mysql 数据操作 单表查询 group by 聚合函数 没有group by情况 ...
- MySQL数据库之单表查询中关键字的执行顺序
目录 MySQL数据库之单表查询中关键字的执行顺序 1 语法顺序 2 执行顺序 3 关键字使用语法 MySQL数据库之单表查询中关键字的执行顺序 1 语法顺序 select distinct from ...
- MySQL数据库语法-单表查询练习
MySQL数据库语法-单表查询练习 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客主要是对聚合函数和分组的练习. 一.数据表和测试数据准备 /* @author :yinz ...
- mysql数据库之单表查询多表查询
单表查询 前期表准备 create table emp( id int not null unique auto_increment, name varchar(20) not null, sex e ...
- MySQL学习9 - 单表查询
一.单表查询的语法 二.关键字的执行优先级(重点) 三.单表查询示例 1.where约束 2.group by分组查询 3.聚合函数 4.HAVING过滤 5.order by查询排序 6.limit ...
- mysql 数据操作 单表查询 group by 介绍
group by 是在where 之后运行 在写单表查询语法的时候 应该把group by 写在 where 之后 执行顺序 1.先找到表 from 库.表名 2.按照where 约束条件 过滤你想要 ...
- mysql四-1:单表查询
一 单表查询的语法 SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT 限制条数 二 关键 ...
随机推荐
- 协程实现socket并发编程
在python中多线程其实是被弱化了,因为由于GIL的原因,同一时间只有一个线程能访问CPU,即使你的CPU是多核的在python中因为多线程被弱化了,所以协程显的重要,能够在一个线程中提高CPU的利 ...
- Qt QPainter画个球啊
Qt QPainter画个球啊 目录 Qt QPainter画个球啊 看效果 方法 代码 看效果 方法 使用绘图事件,绘制一个图形 使用定时事件,不停更新图形位置 代码 .h #pragma once ...
- FL Studio中有关减少CPU占用率的一些技巧
在使用FL Studio20进行音乐制作时经常容易碰到的工程卡顿,声音延迟现象绝大部分是由于电脑CPU超负荷运行而导致的.除了提升电脑本身的性能以外,在FL Studio20中我们也可以运用一些方法来 ...
- 如何用CorelDRAW画箭头?
CorelDRAW,简称为cdr,是一款专业的矢量绘图软件,在设计界也是常用的专业设计之一,在日常的设计工作中,我们常常需要绘制一些特殊的图形,比如箭头.很多对cdr不是特别熟练的小伙伴不知道如何用c ...
- 一文搞懂所有Java集合面试题
Java集合 刚刚经历过秋招,看了大量的面经,顺便将常见的Java集合常考知识点总结了一下,并根据被问到的频率大致做了一个标注.一颗星表示知识点需要了解,被问到的频率不高,面试时起码能说个差不多.两颗 ...
- So Easy! HDU - 4565
易知,有\(S_n = \lceil{a + \sqrt{b}}\rceil ^ n\) \(\because a ^ 2 - 1 < b < a ^ 2\) \(\therefore a ...
- Java蓝桥杯01——第一题集锦:堆煤球、购物单、哪天返回、第几天、分数
堆煤球(2016JavaB) 有一堆煤球,堆成三角棱锥形.具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形), .... 如果一共有100 ...
- 超稳攻略!Rancher 2.3手动轮换证书,保护集群安全!
本文转自Rancher Labs 前 言 Rancher 2.3正式发布已经一年,第一批使用Rancher 2.3的用户可能会遇到Rancher Server证书过期,但是没有自动轮换的情况.这会导致 ...
- rest-framework:认证组件
一 认证简介: 只有认证通过的用户才能访问指定的url地址,比如:查询课程信息,需要登录之后才能查看,没有登录,就不能查看,这时候需要用到认证组件 二 局部使用 models.py class Use ...
- 【SDOI2013】JZOJ8月3日提高组T4 直径
题目 题目描述 小 Q 最近学习了一些图论知识.根据课本,有如下定义. 树:无回路且连通的无向图,每条边都有正整数的权值来表示其长度.如果一棵树有 N 个节点,可以证明其有且仅有 N-1 条边. 路径 ...