单表查询

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. spring boot 视频截图

  2. tar命令打包和压缩与解压

    Linux里压缩与打包时分开的: 打包:多个文件变一个文件.该一个文件会大于整体所有文件,因为会添加各个信息说明哪到哪是一个文件. 压缩:大文件变小文件. 归档:将多个文件变成一个文件,这个文件就是归 ...

  3. appium-appium的等待时间

    #三种appium设置等待时间的方法 #第一种 sleep(): 设置固定休眠时间. python 的 time 包提供了休眠方法 sleep() , 导入 time包后就可以使用 sleep()进行 ...

  4. SQL SERVER数据库Left Join用法

    Left Join基本语法: SQL LEFT JOIN 关键字 LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的 ...

  5. SSTI Flask

    1.什么是SSTI?什么是Flask? ​ SSTI称为服务端模板注入,主要为Python.Java.PHP的框架在使用渲染函数时,由于代码不规范或者对于用户输入过于信任而导致产生了SSTI.类似于S ...

  6. ServerLess之云函数实践-天气API

    关注我的个人博客,发掘更多的内容 ServerLess之云函数实践-天气API 前言 云计算是大势所趋 Serverless 架构即"⽆服务器"架构,它是一种全新的架构方式,是云计 ...

  7. ①SpringCloud 实战:引入Eureka组件,完善服务治理

    简介 Netflix Eureka 是一款由 Netflix 开源的基于 REST 服务的注册中心,用于提供服务发现功能.Spring Cloud Eureka 是 Spring Cloud Netf ...

  8. 深度分析:面试腾讯,阿里面试官都喜欢问的String源码,看完你学会了吗?

    前言 最近花了两天时间,整理了一下String的源码.这个整理并不全面但是也涵盖了大部分Spring源码中的方法.后续如果有时间还会将剩余的未整理的方法更新到这篇文章中.方便以后的复习和面试使用.如果 ...

  9. 关于C# Span的一些实践

    Span这个东西出来很久了,居然因为5.0又火起来了.   相关知识 在大多数情况下,C#开发时,我们只使用托管内存.而实际上,C#为我们提供了三种类型的内存: 堆栈内存 - 最快速的内存,能够做到极 ...

  10. MathType中如何编辑求和公式

    在学习过程中,尤其是在写需要用到数学公式的论文的时,需要输入数学公式并进行格式编辑等,那么对于简单的公式可以使用Office自带的公式编辑器,对于复杂的公式建议使用专业的公式编辑器MathType,该 ...