一、单表的查询

  首先让我们先熟悉一下mysql语句在查询操作时执行的顺序:

         (1)from   
         (2) on 
         (3) join 
         (4) where 
         (5)group by 
         (6) avg,sum.... 
         (7)having 
         (8) select 
         (9) distinct 
         (10) order by

   创建查询环境:

    创建一个学生表:

      create table stu(id int primary key auto_increment,name char(10) not null,gender enum('男','女'),age int not null);

    插入数据:

      insert into stu(name,gender,age)  values ('小红','女','16'),('小明','男','18'),('小丽','女','17'),('月月','女','12'),('孙哥','男','28');   

  1.查询所有字段

    select * from 表名;

      注: * 表示所有字段

    

  2.查询指定字段

    select 字段1,字段2... from 表名;

    

  3.查询指定记录

    selec 字段 from 表名 where 约束条件

    

  4.空值的查询

    

  5.关键字查询in与distinct

    in关键字:IN(xx,yy,...) 满足条件范围内的一个值即为匹配项

    

    distinct让查询的结果不重复

    

  6.多条件查询and与or

    and: 相当于"逻辑与",也就是说要同时满足条件才算匹配

    

    or:相当于“逻辑或",也就是说只要满足其中一个条件,就算匹配上了,跟IN关键字效果差不多

    

  7.范围查询between and

    between ... and ... : 在...到...范围内的值即为匹配项,

    

  8.字符匹配查询like

    like: 相当于模糊查询,和LIKE一起使用的通配符有  "%"与"_"

      "%":作用是能匹配任意长度的字符。

      

      "_":只能匹配任意一个字符

      

  9.对查询结果排序order by

    关键字 order by,有两个值供选择 desc 降序 、asc 升序(默认值)

    不设置则为默认

    

    desc

    

  10.分组查询group by ※

    分组查询作为查询中的重点难点在这里会详细解释说明一下,相信很多初学者在这里遇到过不少问题,希望你们在看了我的文章后能从中获得启发,

    创建一个新的查询环境

      创建课程表:

        create table cou(cid int primary key auto_increment,cname char(20) not null,elenum int not null,teacher char(10) not null);

        注:cid表示课程号;cname表示课程名;elenum:表示选课人数;teacher:表示授课教师;

      向表中添加数据:

        insert into cou(cname,elenum,teacher) values ('高等数学',67,'张红燕'),('大学物理',67,'李健民'),('大学外语',67,'王小丹'),('大学生安全教育',32,'吴菲'),('舌尖上的植物学',32,'老丁'),('体育',20,'高飞');

      

    首先我们先对字段elenum进行分组

      select elenum from cou group by elenuml;

      

       从图中可有看出将字段elenum分组后,分为了三个组20、32、67

     

  11.筛选having

    分组之后还进行条件过滤,将不想要的分组丢弃,使用关键字 having

    

  12.限制查询LIMIT

    LIMIT[位置偏移量] 行数  通过LIMIT可以选择数据库表中的任意行数

    

  13.集合函数查询

    集合函数查询包括:COUNT()函数、SUM()函数、AVG()函数、MAX()函数、MIN()函数

      COUNT()函数:作用是统计数据表中包含的记录行的总数,或者根据查询结果返回列中包含的数据行数

        

          COUNT(*):计算表中的总的行数,不管某列有数值或者为空值,因为*就是代表查询表中所有的数据行

          COUNT(字段名):计算该字段名下总的行数,计算时会忽略空值的行,也就是NULL值的行。

      SUM()函数:作用是一个求总和的函数,返回指定列值的总和

        

      AVG()函数:作用是通过计算返回的行数和每一行数据的和,求的指定列数据的平均值

        

      MAX()函数:作用是返回指定列中的最大值

        

      MIN()函数:作用是返回指定列中的最小值

        

二、多表的查询

  1.内链接查询

    格式:表名 INNER JOIN 表名 ON 连接条件

    

  2.外链接查询

    左外链接查询

      格式:表名 LEFT JOIN 表名 ON 条件; 返回包括左表中的所有记录和右表中连接字段相等的记录

    右外链接查询

      格式:表名 RIGHT JOIN 表名 ON 条件  返回包括右表中的所有记录和右表中连接字段相等的记录

    

  3.复合条件查询

    在连接查询(内连接、外连接)的过程中,通过添加过滤条件,限制查询的结果,使查询的结果更加准确,通俗点讲,就是将连接查询时的条件更加细化。

    举两个简单的例子:

    

    

三、子查询

  子查询的意思就是将查询一张表得到的结果来充当另一个查询的条件,这样嵌套的查询就称为子查询。

  需要注意的是在子查询完成后需要起一个别名,

  

  as的使用方法就是写表或者派生表的后面+别名

  

  1.关键字查询

    关键字ANY与SOME

      ANY关键字与SOME关键字用法相同,都是接在一个比较操作符的后面,表示若与子查询返回的任何值比较为TRUE`

    

    关键字AII

      使用ALL时表示需要同时满足所有条件。

      不太容易理解我们分步来做

      先进行先子查询

        

      在一起查询更容易理解:

        

      

    关键字IN

     IN关键字的作用跟上面单表查询的IN是一样的,不过这里IN中的参数放的是一个子查询语句。

      

四、合并结果查询

  利用UNION关键字,可以将查询出的结果合并到一张结果集中,也就是通过UNION关键字将多条SELECT语句连接起来,注意,合并结果集,只是增加了表中的记录,并不是将表中的字段增加,仅仅是将记录行合并到一起。其显示的字段应该是相同的,不然不能合并。

  UNION[ALL]的使用

    UNION:不使用关键字ALL,执行的时候会删除重复的记录,所有返回的行度是唯一的,

     UNION ALL:不删除重复航也不对结果进行自动排序。

      格式:

         SELECT 字段名,... FROM 表名

         UNION[ALL]

         SELECT 字段名,... FROM 表名

  

Mysql之表的查询的更多相关文章

  1. 【连接查询】mySql多表连接查询与union与union all用法

    1.准备两个表 表a: 结构: mysql> desc a; +-------+-------------+------+-----+---------+-------+ | Field | T ...

  2. mysql数据库表的查询操作-总结

    转自:https://www.cnblogs.com/whgk/p/6149009.html 序言 1.MySQL表操作(创建表,查询表结构,更改表字段等), 2.MySQL的数据类型(CHAR.VA ...

  3. MySQL多表数据查询(DQL)

    数据准备: /* ------------------------------------创建班级表------------------------------------ */ CREATE TAB ...

  4. MySQL常用表结构查询语句

    在我们使用数据库进行查询或者建表时,经常需要查看表结构,下面以employees数据库中的departments表为例进行表结构查询: departments表:(2列9行) +---------+- ...

  5. 最全MySQL数据库表的查询操作

    序言 1.MySQL表操作(创建表,查询表结构,更改表字段等), 2.MySQL的数据类型(CHAR.VARCHAR.BLOB,等), 本节比较重要,对数据表数据进行查询操作,其中可能大家不熟悉的就对 ...

  6. MySQL多表关联查询数量

    //多表关联查询数量select user, t1.count1, t2.count2from user tleft join ( select user_id, count(sport_type) ...

  7. JDBC MySQL 多表关联查询查询

    public static void main(String[] args) throws Exception{ Class.forName("com.mysql.jdbc.Driver&q ...

  8. mysql多表联合查询

    转自:http://www.cnblogs.com/Toolo/p/3634563.html 多表连接,小分三种(笛卡尔积.内连接.外连接),多分五种 (笛卡尔积.内连接.左连接.右连接.全连接(my ...

  9. Mysql 多表联合查询效率分析及优化

    1. 多表连接类型 1. 笛卡尔积(交叉连接) 在MySQL中可以为CROSS JOIN或者省略CROSS即JOIN,或者使用','  如: SELECT * FROM table1 CROSS JO ...

随机推荐

  1. java 时间的原生操作和工具类操作

    package com.xc.test.dateoperation; import org.apache.commons.lang3.time.DateFormatUtils; import org. ...

  2. Siamese Net

    参考博客:https://blog.csdn.net/ybdesire/article/details/84072339

  3. bootstrap 自带字体颜色

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. JS 多数组中取最大数组,分组

    代码小结,使用 JS 对数据进行分组,对分组中的数组取最大数组: var combineTemplate = JSON.parse(data.combineTemplate); //根据仪器种类ID分 ...

  5. 教你使用Webpack搭建环境 TypeScript (2)

      一. 环境搭建1.1. TypeScript环境安装已经配置好的环境,大家可以直接下载:https://github.com/coderwhy/HYLearnTS.git在上一个章节中我们说过,T ...

  6. 漏洞复现之JBoss 4.x JBossMQ JMS 反序列化漏洞(CVE-2017-7504)

    前言: 序列化就是把对象转换成字节流,便于保存在内存.文件.数据库中:反序列化即逆过程,由字节流还原成对象. Java中的ObjectOutputStream类的writeObject()方法可以实现 ...

  7. Elasticsearch 全文搜索

    1,匹配查询(match) match查询主要的应用场景是进行全文搜索: // 1,初始化数据 DELETE /my_index PUT /my_index { "settings" ...

  8. Python28之文件1

    因为懂你,所以永恒 一.文件处理的重要性: 程序处理的数据都是在提取到内存,然后由CPU进行处理,而当断电或系统异常关机时,程序所处理的结果在内存中不会被保存.像永久的保存处理结果,对于windows ...

  9. springboot处理事务

    ssh ssm都有事务管理service层通过applicationContext.xml配置,所有service方法都加上事务操作: 用来保证一致性,即service方法里的多个dao操作,要么同时 ...

  10. IDEA好用插件推荐

    Maven Helper:排查maven依赖冲突神器,强力推荐! Alibaba Java Coding Guidelines:阿里巴巴编程规范 CamelCase:驼峰命名工具,SHIFT + AL ...