单表查询

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. Python网络编程_抓取百度首页代码(注释详细)

    1 #coding=utf-8 2 #网络编程 3 4 #客户端建立socket套接字 5 #引入socket模块 6 import socket 7 #实例化一个套接字,2个参数分别是: IPV4. ...

  2. No matching distribution found for Tensorflow

    No matching distribution found for Tensorflow 原因:python 3.7.3 版本过高 解决:安装3.6  64位

  3. Maximum execution time of 30 seconds exceeded in

    在执行一次php脚本的时候,遇到了这样的报错,经过c Maximum execution time of 30 seconds exceeded in 翻译过来就是:执行时间超过了30秒最长执行时间: ...

  4. C++中new和malloc区别

    面试中new和malloc区别会被经常问到,审视了自己,发现不知道该怎么表达 整理一下: 1.从属性 new/delete是C++关键字,需要编译器支持: malloc/free是库函数,需要头文件支 ...

  5. 如何在Mac上安全彻底的卸载软件?

    Mac如何卸载软件呢?通常我们的做法都是将应用程序图标移动到废纸篓中,这样就算是将mac软件卸载了,但是这样真的将软件卸载干净了吗?当然没有,一个软件并不是只有应用程序包,他还会包含很多的偏好文件等等 ...

  6. LIKE 运算符

    运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算.例如:2+3,其操作数是2和3,而运算符则是"+".在vb2005中运算符大致可以分为5种类型:算术运算符.连接运算 ...

  7. 一张图彻底理解Spring如何解决循环依赖!!

    写在前面 最近,在看Spring源码,看到Spring解决循环依赖问题的源码时,不得不说,源码写的太烂了.像Spring这种顶级的项目源码,竟然存在着这种xxx的代码.看了几次都有点头大,相信很多小伙 ...

  8. go特性-defer

    1:后定义的defer先执行(可以理解为栈的方式) // 222 // 111 func Test1(t *testing.T) { defer fmt.Println("111" ...

  9. 近50种语言编写的“Hello, World”,你会几种?可不要贪杯哦~

    本文转自公众号CSDN(ID:CSDNnews)作者:Sylvain Saurel,译者:风车云马

  10. IEEE浮点数标准

    IEEE浮点数标准 阅读笔记:Computer System : A Programmmer's Perspective 基本概念 IEEE浮点数标准采用 \[V=(-1)^s\times M\tim ...