备注:该博客内容根据技术教学视频整理与总结而成,原视频来自于尚硅谷MySQL教程。

一、基础查询 select from

语法:        SELECT 要查询的东西【FROM 表名】;
特点:       ①通过select查询完的结果 ,是一个虚拟的表格,不是真实存在
                  ② 要查询的东西 可以是常量值、可以是表达式、可以是字段、可以是函数

要点:

  1. 去重        select distinct 字段名 from 表名;
  2. 运算符”+“做加法运算
    select 数值+数值:直接运算
    select 字符+数值:先试图将字符转换成数值,如果转换成功,则继续运算;否则转换成0,再做运算
    select null+值:结果都为null    (★)

二、条件查询 where

语法:               select  要查询的字段|表达式|常量值|函数  from  表 where  条件 ; 
条件分类:        条件表达式、逻辑表达式、模糊查询

  1. 条件表达式:示例:salary>10000
    条件运算符:> < >= <= = !=(不等于) <>(不等于)
  2. 逻辑表达式:示例:salary>10000 && salary<20000
    逻辑运算符:and(&&):两个条件如果同时成立,结果为true,否则为false
                         or(||):两个条件只要有一个成立,结果为true,否则为false
                         not(!):如果条件成立,则not后为false,否则为true
  3. 模糊查询:like  特点:一般和通配符搭配使用  
                      between and 特点: a.使用between and 可以提高语句的简洁度
                                                        b.包含临界值
                                                        c.两个临界值不要调换顺序
                      in  含义:判断某字段的值是否属于in列表中的某一项
                           特点:a.使用in提高语句简洁度
                                      b.in列表的值类型必须一致或兼容
                                      c.不支持通配符的使用
                      is null|is not null  注意:=或<>不能用于判断null值
                                                               is null或is not null可以判断null值
    通配符:% 任意多个字符,包含0个字符
                   _ 任意单个字符

三、排序查询 order by

语法:        select 查询列表 fromwhere 筛选条件 order by 排序列表 【asc|desc
特点:        1、asc :升序,如果不写默认升序     desc:降序
                   2、排序列表 支持 单个字段、多个字段、函数、表达式、别名
                   3、order by的位置一般放在查询语句的最后(除limit语句之外)


四、分组查询 group by、having

语法:        select 查询的字段,分组函数 fromgroup by 分组的字段
特点:        1、可以按单个字段分组;可以按多个字段分组,字段之间用逗号隔开;
                   2、可以支持排序;having后可以支持别名
                   3、和分组函数一同查询的字段最好是分组后的字段
                   4、分组筛选

针对的表 位置  关键字
分组前筛选: 原始表 group by的前面 where
分组后筛选: 分组后的结果集 group by的后面 have

五、连接查询 join

        笛卡尔乘积:如果连接条件省略或无效则会出现,即表1 有m行,表2 有n行,结果=m*n行
        解决办法:添加上连接条件

  1. SQL92语法:
    分类:内连接(等值连接、非等值连接、自连接),也支持一部分外连接(用于Oracle、SQL server,但MySQL不支持
    语法:select 查询列表
               from 表 别名1,表 别名2
               where 等值的连接条件
             【and 筛选条件】
             【group by 分组字段】
             【having 分组后的筛选】
             【order by 排序字段】
    特点:① 等值连接的结果 = 多个表的交集
               ② n表连接,至少需要n-1个连接条件
               ③ 多个表不分主次,没有顺序要求
               ④一般为表起别名,提高阅读性和性能
  2. SQL99语法:通过join关键字实现连接
    分类:内连接(等值连接、非等值连接、自连接)、外连接(左外、右外)、交叉连接
    语法:select 字段,...
               from 表1
             【inner|left outer|right outer|crossjoin 表2 on  连接条件
             【inner|left outer|right outer|crossjoin 表3 on  连接条件
             【where 筛选条件】
             【group by 分组字段】
             【having 分组后的筛选条件】
             【order by 排序的字段或表达式】
    特点:①表的顺序可以调换
               ②n表连接至少需要n-1个连接条件内连接的结果=多表的交集
               ③内连接的结果=多表的交集
               ④外连接查询的结果=主表中所有的行,如果从表和它匹配的将显示匹配行,如果从表没有匹配的则显示null
               ⑤left join 左边的就是主表,right join 右边的就是主表,full join 两边都是主表
               ⑥外连接一般用于查询除了交集部分的剩余的不匹配的行
               ⑦交叉连接类似于笛卡尔乘积
  3. 自连接典型案例:查询员工名和直接上级的名称
    SQL99写法:SELECT e.last_name,m.last_name
                          FROM employees e
                         JOIN employees m ON e.`manager_id`=m.`employee_id`;
    SQL92写法: SELECT e.last_name,m.last_name
                           FROM employees e,employees m 
                           WHERE e.`manager_id`=m.`employee_id`;
  4. 以下图示来自于尚硅谷MySQL教程课件,红色部分为连接查询后的结果:

 六、子查询

含义: 一条查询语句中又嵌套了另一条完整的select语句,其中被嵌套的select语句,称为子查询或内查询。在外面的查询语句,称为主查询或外查询

特点:1、子查询都放在小括号内
           2、子查询可以放在from、select、where、having、exists后面,但一般放在条件的右侧
           3、子查询优先于主查询执行,主查询使用了子查询的执行结果
           4、子查询根据查询结果的行数不同分为以下两类:
            ① 单行子查询:结果集只有一行,一般搭配单行操作符使用:> < = <> >= <= 
                 非法使用子查询的情况:a、子查询的结果为一组值b、子查询的结果为空
            ② 多行子查询:结果集有多行,一般搭配多行操作符使用:any、all、in、not in
                                      IN 可用 =ANY替代; NOT IN 可用<>ALL替代

操作符 含义
IN/NOT IN 等于/不等于列表中的任意一个
ANY|SOME 和子查询返回的某一个值比较,大于最小值,小于最大值即可
ALL 和子查询返回的所有值比较,大于最大值,小于最小值即可

七、分页查询 limit
语法:   select 字段|表达式,...
              from
            【where 条件】
            【group by 分组字段】
            【having 条件】
            【order by 排序的字段】
              limitoffset 起始的条目索引,】size 条目数;

特点:1.起始条目索引从0开始
           2.limit子句放在查询语句的最后
           3.公式:select * from  表 limit (page-1)*sizePerPage,sizePerPage,其中:每页显示条目数sizePerPage,要显示的页数 page
           公式来源:首先假设条件为每页显示10条数据,那么可得下表规律:

页数 起始条目索引
1 0
2 10
3 20

总结规律可得:10 = ( 2 - 1 ) × 10
                                       20 = ( 3 - 1 ) × 10
                                      offset =(page-1)*sizePerPage


八、联合查询 union

语法:select 字段|常量|表达式|函数 【from 表】 【where 条件】 unionall
           select 字段|常量|表达式|函数 【from 表】 【where 条件】 unionall
           select 字段|常量|表达式|函数 【from 表】 【where 条件】 unionall
           .....
           select 字段|常量|表达式|函数 【from 表】 【where 条件】;

特点:1、多条查询语句的查询的列数必须是一致的
           2、多条查询语句的查询的列的类型几乎相同
           3、union代表去重,union all代表不去重


九、查询总结

查询优先级
select 查询列表  ⑦
from 表1 别名
连接类型 join 表2
on 连接条件
where 筛选  
group by 分组列表
having 筛选
order by排序列表
limit 起始条目索引,条目数;

   

MySQL学习笔记5||数据查询select相关推荐

  1. MySQL学习笔记(三)查询

    写在前面:本篇为作者自学总结,学习内容为课堂所学和网络学习笔记汇总,对于内容引用部分在文中和文末注明. 文章仅供参考,如需深入了解,请查阅MySQL参考手册.附上下载链接: 链接:https://pa ...

  2. mysql学习笔记之连接查询与子查询

    mysql连接查询与子查询 1.子查询是指在另一个查询语句中的SELECT子句. 例句: SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t ...

  3. MySQL学习笔记-03高级查询、多表联合查询、聚合函数、子查询、视图、存储过程、权限、

    关于作者 金山老师:从事Java.大数据.Python职业化培训6年,项目管理.软件开发14年.欢迎添加我的微信号[jshand],最近建了一些微信交流群,扫描下方二维码添加公众号,回复:进群 文章目 ...

  4. mysql 学习笔记 多表查询02

    把一张表 想象成两张表,进行多表查询 举例: 查询 所有员工的 姓名 以及 其 上级姓名 select s1.stname, s2.stname from staff as s1, staff as ...

  5. MySQL学习笔记——多表查询

    目录 一.多表查询 1.多表查询的实现 1.1 出现笛卡尔积的错误 1.2 多表查询的正确方式,需要有连接条件 2.多表查询的分类 2.1 等值连接vs非等值连接 2.2 自连接vs非自连接 2.3 ...

  6. MySQL学习笔记:等值查询、范围查询、死锁、间隙锁的本质

    环境 MySQL:5.7.26-log 前言 答疑文章(二):用动态的观点看加锁 原则 1:加锁的基本单位是 next-key lock.希望你还记得,next-key lock 是前开后闭区间. 原 ...

  7. MySQL学习笔记 | 模式匹配 模糊查询

    目录 LIKE运算符:模式匹配 模糊查询 作业练习 1.查看XSCJ数据库中学生基本情况表(XS)的全部数据信息.(确保数据和教材第105页表5-13一致.) 2.完成教材第106页以下操作: (1) ...

  8. mysql学习笔记之排序查询和函数(进阶四)

    USE myemployees; #进阶四:排序查询() /* 语法: select 查询列表 from 表 order by 排序列表[asc|desc]asc升序desc降序,可不写,默认升序 / ...

  9. mysql 学习笔记15 子查询

    子查询定义: 单上子查询举例: 显示与 员工 关平 同一部门的员工, 但不包括关平 select * from staff where staff.stdepno = (select staff.st ...

最新文章

  1. java point_java中point是什么意思
  2. python在日常工作处理中的应用-python在工作中的应用场景介绍
  3. boost::hana::chain用法的测试程序
  4. IO概述、异常、File文件类_DAY19
  5. 第九篇: 服务链路追踪(Spring Cloud Sleuth)(Finchley版本)
  6. C/C++对象的序列化
  7. UVa 1642 (综合) Magical GCD
  8. Spring4.x(9)--Spring的Hibernate事务-XML
  9. 深入理解并行编程pdf
  10. VMware克隆CentOS6.4后 eth0无法初始化
  11. Reproxy:边缘服务器反向代理工具
  12. 进销存excel_Excel进销存管理套表,自动库存显示应收应付,全函数快捷轻松
  13. Unity粒子特效出现慢
  14. 使用 Nginx 服务器配置 flv、mp4,可以直接浏览器播放
  15. scikit-learn初级
  16. 痛失阵地,又一家热门BT种子观影网站关停
  17. python输入一个浮点数、输出其整数部分和小数部分_输入一个浮点数,并输出该数的整数部分和小数部分...
  18. Python图像增强(翻转和旋转)
  19. 李嘉璇:技术人如何深入人工智能
  20. 打开对方CMD的三种方法

热门文章

  1. 【NKOJ-昨天今天和明天】考试游记
  2. c语言乘法超过长整数,C语言中超大整数乘法运算
  3. SCI投稿时如何选择推荐审稿人?
  4. 3种CSS实现渐变色边框(Gradient borders方法的汇总
  5. 小爱音箱mini接入HA,并且通过Node-RED来控制小爱说话
  6. 客制化键盘编程_客制化机械键盘入门指南
  7. 冰河连夜复现了Log4j最新史诗级重大漏洞,含视频和完整案例代码,全网最全,赶快收藏吧
  8. 国网GIM设备三维模型要求细则 - 避雷器
  9. Tesseract中文语言包 chi_sim.traineddata,免费下载 而且还是最新的
  10. 进度压缩: 赶工与快速跟进