一、单表的查询

  首先让我们先熟悉一下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. 使用supervisor支持Python3程序 (解决找不到Module的问题)

    Supervisor是python2写就的一款强大的运维工具(其实现在已经支持Python3了 https://github.com/Supervisor/supervisor)那么怎么利用Super ...

  2. JS语言中的JSON.parse()和JSON.stringify()

    parse()用于从一个字符串中解析出json对象,如 var str = '{"name":"huangxiaojian","age":& ...

  3. 常用OID(SNMP)

    系统参数(1.3.6.1.2.1.1) OID 描述 备注 请求方式 .1.3.6.1.2.1.1.1.0 获取系统基本信息 SysDesc GET .1.3.6.1.2.1.1.3.0 监控时间 s ...

  4. 无法复制CSD内容,复制后出现一行长字符串解决

    先打开一个linux文件,然后把复制的内容放到linux文件中即可解决

  5. Ehcache配置文件ehcache.xml

    <?xml version="1.0" encoding="UTF-8"?> <ehcache xmlns:xsi="http:// ...

  6. Beginning Linux Programming 学习--chapter 1 Getting start--What's linux,GNU,HeaderFiles, Libraries

    "文明的建立的不是机器而是思想" -- 托尔斯泰 Linux truly become a viable operating system, especially in the s ...

  7. 032 Android Service

    1.介绍 2.新建Service (1) (2)在Androidmanifest.xml文件中配置service <service android:name=".Myservice&q ...

  8. 原生js 实现better-scroll效果,饿了么菜单内容联动,即粘即用

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  9. [Asp.Net Core] - 使用 ViewComponents 实现分页控件

    分页控件(定义分页参数) ~/ViewComponents/PaginationViewComponent.cs using HelloWorld.DataContext; using Microso ...

  10. Asp.Net Core 调用第三方Open API查询物流数据

    在我们的业务中不可避免要与第三方的系统进行交互,调用他们提供的API来获取相应的数据,那么对于这样的情况该怎样进行处理呢?下面就结合自己对接跨越速运接口来获取一个发运单完整的物流信息为例来说明如何在A ...