单表查询

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之 栈与队列

    忍不住想报一句粗口"卧槽"这尼玛python的数据结构也太特么方便了吧 想到当初学c语言的数据结构的时候,真的是一笔一划都要自己写出来,这python尼玛直接一个模块就ok 真的是 ...

  2. jq判断input 复选框有没有选

    选中了返回true ,没选中返回false$("input[type='checkbox']").is(':checked'):

  3. UnitTest_墨振文档

    目录 一.框架介绍 1 二.四大组件 2 三.ddt数据驱动 3 一.框架介绍 unittest框架是python 自带的一个作为单元测试的测试框架,在最初叫pyUnit,相当与Java语言中的Jun ...

  4. 有什么数据恢复软件可以恢复CF数据

    虽然现在SD卡出现并且日益流行,但是CF卡(Compact Flash)作为一种存储设备,仍然是专业数码相机的主流标准.不仅是数码相机,CF接口还广泛用于PDA.笔记本电脑和包括台式机在内的各种设备. ...

  5. docker和k8s的概念-IaaS、PaaS、SaaS 的区别

    docker和k8s 参考: 什么是Docker? Kubernetes概述 openstack,docker,mesos,k8s什么关系? IaaS.PaaS.SaaS的概念 SaaS:软件服务,S ...

  6. JVM(二)-内存区域之线程私有区

    概述: 对于从事C.C++开发的程序员来说,在内存管理领域,他们既是拥有最高权力的"皇帝",又是从事最基础工作的劳动人民--既拥有每个对象的"所有权", 又担负 ...

  7. C++基础入门知识:C++命名空间(名字空间)详解

    一个中大型软件往往由多名程序员共同开发,会使用大量的变量和函数,不可避免地会出现变量或函数的命名冲突.当所有人的代码都测试通过,没有问题时,将它们结合到一起就有可能会出现命名冲突. 例如小李和小韩都参 ...

  8. activiti数据表介绍

    activiti6.0数据库介绍 Acitiviti6.0数据库中一共有28张表,表的命名都是以ACT_开头的.第二部分是一个两个字符用例表的标识. 用于自我学习记录,后期不定期更新~~~ 数据库描述 ...

  9. LeetCode 028 Implement strStr()

    题目要求:Implement strStr() Implement strStr(). Returns the index of the first occurrence of needle in h ...

  10. Django连接redis

    CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", &q ...