查询方法

下面的查询都是对单表的查询,所以先创建表tb1(下面的tb1均代表此表)

create table tb1(id int,name varchar(10),age int,class varchar(5));   #创建tb1表

对于MySQL的创建、插入等基本语句有不理解的可以看我上一篇博客:学习笔记(十四)——MySQL(CRUD)


1、根据条件查询

select * from tb1 where age=19;    #查询年龄所有等于19岁
select * from tb1 where age>19;   #查询年龄所有大于19岁
select * from tb1 where age>=19;   #查询年龄所有大于等于19岁
select * from tb1 where class!='two';   #查询班级不为two的

1. is null和is not null

select * from tb1 where class is null;   #查询班级为空
select * from tb1 where class is not null;  #查询班级非空

2.and、or 、not

select * from tb1 where age=19 and class='two';    #and 和 所有条件都要满足
select * from tb1 where age=19 or class='two';     #or 或者 满足其中一个条件
select * from tb1 where not age=19;              # not 非 即条件的否定 查询年龄不等于19
select * from tb1 where age!=19;                 #查询年龄不等于19

2、排序

关键字:asc、desc

select * from tb1 order by age;   #默认升序
select * from tb1 order by age asc;  #升序
select * from tb1 order by age desc;  #降序

3、限制

limit m,n 从下标为m的行数开始显示n条数据

select *from tb1 limit 3;    #只显示3行,即前三行
select *from tb1 limit 3,3;  #显示的是从第4行开始,显示3行
select *from tb1 order by age desc limit 3;  #取年龄最高的前三名

4、去重

注意关键字distinct

select distinct * from tb1;   #去掉有重复的数据

5、模糊查询

select * from tb1 where name like '%';    % 代表任意多个字符
select * from tb1 where name like 'zhang%';    查询name以zhang开头的
select * from tb1 where name like 'zhang___';    _ 代表一个任意字符  3个_代表三个字符

6、范围查询

关键字:between···and

select * from tb1 where age between 19 and 22;   #查询年龄在19-20岁
select * from tb1 where 19<=age<=22;    #查询年龄在19-20岁
select * from tb1 where class in ('one','three');  #查询班级为one和three的

7、聚合函数

select max(age) from tb1;    #求最大值,这里值年龄最大值
select min(name) from tb1;    #求最小值 ,字符串按照26个字母排序
select count(name) from tb1;    #统计字段值不为空的个数
select count(*) from tb1;   #计算数据总数
#注意:count 可以写*
select avg(age) from tb1;    #求平均值
select sum(age) from tb1;    #求和
select group_concat(name) from tb1;   #列出字段所有的值

8、分组查询

分组查询通常和聚合函数一起使用。

在分组情况下,只能出现分组字段和聚合字段,其他字段没有意义,会报错。

select class from tb1 group by class;   #根据class分组
select class,count(name) from tb1 group by class;   #计算每个年级的人数
select class,avg(age) from tb1 group by class;   #计算每个年级的平均人数

9、聚合筛选

select class,count(name) from tb1 group by class having count(name)=5;  筛选count(name)=5
select class,count(name) from tb1 group by class having class='two';   筛选class='two'

10、子查询

select * from tb1 where age>(select avg(age) from tb1);  #括号不能少    查找年龄大于平均年龄的

内连接与外连接

内连接与外连接是针对多表操作的,所以这里先创建表tb2和tb3。(下面的tb2和tb3都是代表这两个表)

create table tb2(    #创建表tb2
id int,
name varchar(20),
gender enum('0','1'),
join_date datetime,
dept_id int
);
create table tb3(  #创建表tb3
dept_id int,
dept_name varchar(20),
salary int
);

1、内连接

指连接结果仅包含符合连接条件的行,参与连接的两个表都应该符合连接条件。

基本语法:

 左表 [inner] join 右表 on 左表.字段 = 右表.字段;

1. 无条件内连接

select * from tb2 inner join tb3;   #不推荐,假设tb2有10条数据,tb3有5条,无条件连接后就有50条

2.有条件内连接

select * from tb2 inner join tb3 on tb2.dept_id=tb3.dept_id;

2、外连接

连接结果不仅包含符合连接条件的行同时也包含自身不符合条件的行。

1.左外连接
左表的全部展示出来 右边只会显示符合搜索条件的。

 select * from tb2 left join tb3 on tb2.dept_id=tb3.dept_id;

2.右外连接
右边表数据行全部保留,左边表保留符合连接条件的行。

select * from tb2 right join tb3 on tb2.dept_id=tb3.dept_id;

学习笔记(十五)——MySQL(查询)相关推荐

  1. 马哥 mysql_马哥学习笔记十五——MySQL进阶之SQL语句

    数据库: create database|schema [if not exists] db_name [character set =] [collate =]; alter database dr ...

  2. python复制指定字符串_python3.4学习笔记(十五) 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)...

    python3.4学习笔记(十五) 字符串操作(string替换.删除.截取.复制.连接.比较.查找.包含.大小写转换.分割等) python print 不换行(在后面加上,end=''),prin ...

  3. windows内核开发学习笔记十五:IRP结构

    windows内核开发学习笔记十五:IRP结构   IRP(I/O Request Package)在windows内核中,有一种系统组件--IRP,即输入输出请求包.当上层应用程序需要访问底层输入输 ...

  4. Polyworks脚本开发学习笔记(十五)-用Python连接Polyworks的COM组件

    Polyworks脚本开发学习笔记(十五)-用Python连接Polyworks的COM组件 用Polyworks脚本开发,没有高级语言的支持,功能难免单一,一些比较复杂的交互实现不了,界面和报告也很 ...

  5. IOS之学习笔记十五(协议和委托的使用)

    1.协议和委托的使用 1).协议可以看下我的这篇博客 IOS之学习笔记十四(协议的定义和实现) https://blog.csdn.net/u011068702/article/details/809 ...

  6. Mr.J-- jQuery学习笔记(十五)--实现页面的对联广告

    请看之前的:Mr.J-- jQuery学习笔记(十四)--动画显示隐藏 话不多说,直接上demo <!DOCTYPE html> <html lang="en"& ...

  7. 世界是有生命的(通向财富自由之路学习笔记十五)

    最近因为工作调度的事情,有了一段空闲的日子,有比较多的时间来回望自己走过的路以及如何走好以后的路.之前忙得很少时间来写博文,很少时间来写读书笔记,逐渐将自己一些很好的习惯丢弃了.从今天起将重拾写博文的 ...

  8. 前端学习笔记(十五)

    第十五章 HTML5新增标签 一.HTML5概述 1.简介         HTML5万维网的核心语言.标准通用标记语言下的一个应用超文本标记语言的第五次大修改.HTML5将成为 HTML.XHTML ...

  9. 马哥 mysql_马哥学习笔记十八——MySQL进阶之日志管理

    错误日志:log_error,log_warnings 服务器启动和关闭过程中的信息 服务器运行过程中的错误信息 事件调度运行一个事件时产生的信息 在从服务器上启动从服务器进程时产生的信息 一般查询日 ...

  10. 【theano-windows】学习笔记十五——受限玻尔兹曼机

    前言 终于到了最喜欢的模型: 受限玻尔兹曼机(RBM)了, 发现关于RBM是如何从能量模型发展过来的介绍非常不错, 而关于详细理论证明, 可以去看我前面的受限玻尔兹曼机的一系列博客. 国际惯例, 参考 ...

最新文章

  1. 基于深度学习的NLP 32页最新进展综述,190篇参考文献
  2. PHP开发电脑网站支付宝支付详细流程(沙箱测试篇)
  3. iextensionunit类_Java ICompilationUnit.reconcile方法代码示例
  4. SDWebImage实现原理(怎么实现图片缓存器)
  5. 斯坦福大学机器学习第四课“逻辑回归(Logistic Regression)”
  6. Tree的前序序列化
  7. httpsqs消息队列
  8. 【转】VC++计算当前时间点间隔N天的时间(不使用CTimeSpan类)
  9. 【免费毕设】ASP.NET 城市酒店入住信息管理系统 (源代码+lunwen)
  10. 基于速度学习机的局部感受野
  11. linux下mysql免安装_linux下免安装版本mysql5.5 配置
  12. java利用PageHelper.startPage(page, pageSize)分页
  13. java 页眉页脚_Java 修改Word页眉页脚
  14. 计算机日常故障DIY维修有哪些,电脑故障排除及优化完全DIY
  15. ABP中的数据过滤器
  16. 微信域名防封,微信网址域名防封的几种办法
  17. 爬取拉钩Java招聘数据
  18. python正则去掉重复单词_python使用正则表达式去除中文文本多余空格,保留英文之间空格方法详解 | 学步园...
  19. html动态网页添加音频_将音频添加到网页
  20. mysql基础之多表练习题

热门文章

  1. g460 bios 白名单_深睛高清车牌识别相机白名单,智能管理车辆进出_深睛车牌识别...
  2. 【毕业求职季】-听说你想去大厂看学妹,带你看看腾讯微信产品岗面经(已offer)
  3. Windows上搭建Python安装包MySQLdb
  4. python中的缩进问题_Python中的缩进问题
  5. win10电脑去掉快捷箭头_【搞机作战室】Win10系统电脑 常用快捷方式按键 (快捷键)介绍...
  6. tensorflow2中如何设置GPU的使用
  7. Qt中子线程创建运行时候出现QObject: Cannot create children for a parent that is in a different thread
  8. Gumble Distribution耿贝尔分布
  9. 机器学习入门书籍导读-高等数学上
  10. 饿了么异地双活数据库实战