单表查询

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;

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查询出来
最后排序输出

mysql 基础入门 单表查询

原文地址:https://www.cnblogs.com/yescarf/p/14092434.html

mysql 基础入门 单表查询的更多相关文章

  1. mysql 数据操作 单表查询 目录

    mysql 数据操作 单表查询 mysql 数据操作 单表查询 简单查询 避免重复DISTINCT mysql 数据操作 单表查询 通过四则运算查询 mysql 数据操作 单表查询 concat()函 ...

  2. mysql 数据操作 单表查询 where 约束 目录

    mysql 数据操作 单表查询 where约束 between and or mysql 数据操作 单表查询 where约束 is null in mysql 数据操作 单表查询 where约束 li ...

  3. mysql 数据操作 单表查询 group by 分组 目录

    mysql 数据操作 单表查询 group by 介绍 mysql 数据操作 单表查询 group by 聚合函数 mysql 数据操作 单表查询 group by 聚合函数 没有group by情况 ...

  4. MySQL数据库之单表查询中关键字的执行顺序

    目录 MySQL数据库之单表查询中关键字的执行顺序 1 语法顺序 2 执行顺序 3 关键字使用语法 MySQL数据库之单表查询中关键字的执行顺序 1 语法顺序 select distinct from ...

  5. MySQL数据库语法-单表查询练习

    MySQL数据库语法-单表查询练习 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客主要是对聚合函数和分组的练习. 一.数据表和测试数据准备 /* @author :yinz ...

  6. mysql数据库之单表查询多表查询

    单表查询 前期表准备 create table emp( id int not null unique auto_increment, name varchar(20) not null, sex e ...

  7. MySQL学习9 - 单表查询

    一.单表查询的语法 二.关键字的执行优先级(重点) 三.单表查询示例 1.where约束 2.group by分组查询 3.聚合函数 4.HAVING过滤 5.order by查询排序 6.limit ...

  8. mysql 数据操作 单表查询 group by 介绍

    group by 是在where 之后运行 在写单表查询语法的时候 应该把group by 写在 where 之后 执行顺序 1.先找到表 from 库.表名 2.按照where 约束条件 过滤你想要 ...

  9. mysql四-1:单表查询

    一 单表查询的语法 SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT 限制条数 二 关键 ...

随机推荐

  1. 解决SSH显示中文乱码的问题(cent os7)

    用SSH连接服务器显示中文乱码,试过修改SSH端,不成功.这次从服务器端下手 1.先查看服务器现有的字符集 [root@dm01 ~]# locale -a 在结果中找到 如果没有支持的字符集就需要安 ...

  2. SixLabors.ImageSharp 实践小结

    前言 之前写过一篇 Linux/Docker 中使用 System.Drawing.Common 踩坑小计, 当时主要是有一块图像处理的需要从 .net framework 迁移到 .net core ...

  3. div定时放大缩小

    <!DOCTYPE html> <html> <head> <style> .anim{ width: 100px; height: 100px; ba ...

  4. Vegas媒体生成器是什么,有什么作用

    在专业视频剪辑软件-Vegas的界面中,有一个媒体生成器的界面,此界面包含HitFilm Light Flares,Pro Type Titler,测试图案,纯色,棋盘格,色彩渐变,噪声纹理,致谢字幕 ...

  5. 通用于wps和excel的ntlm hashes窃取利用方式

    https://evi1cg.me/archives/Get_NTLM_Hashes.html介绍了通过Microsoft Office 窃取 NTLM Hashes. 不过这种插入方法不适用于wps ...

  6. IDEA创建web工程,不用Archetype(超简单)

    Idea不用Archetype创建Web项目 以新建模块为例. 新建Maven项目 不勾选[Create from artchetype],直接Next pom中添加一句话: <artifact ...

  7. Python是什么?

    Python 是一种解释型.面向对象.动态数据类型的高级程序设计语言. Python 由 Guido van Rossum 于 1989 年底发明,第一个公开发行版发行于 1991 年. 像 Perl ...

  8. Kafka作为分布式消息系统的系统解析

    Kafka概述 Apache Kafka由Scala和Java编写,基于生产者和消费者模型作为开源的分布式发布订阅消息系统.它提供了类似于JMS的特性,但设计上又有很大区别,它不是JMS规范的实现,如 ...

  9. layer 父弹窗获取子弹窗内的dom节点元素和变量

    1 var body = layer.getChildFrame('body', index); //获取子弹窗的dom节点 2 3 var iframeWin = window[layero.fin ...

  10. linux下定时任务的简单示例

    1.方式一:用sleep实现定时任务: 1.1 编辑shell脚本,如下sleep_aa.sh: #!/bin/bash t1=`date "+%Y-%m-%d %H:%M:%S" ...