zoukankan      html  css  js  c++  java
  • MySQL查询数据 学习笔记

     数据查询是DBMS最重要的功能,本节介绍如何使用select语句查询数据表中的一列或多列数据,使用集合函数显示查询结果,连接查询,子查询以及使用正则表达式进行查询等。

    • 基本查询语句,基本语句是select,基本格式为下图所示:                                                                                                                                                                                                                                                                                                                                          
    • 单表查询,从一张表数据中查询所需的数据,主要有,查询所有字段,查询指定字段,查询指定记录,查询控制,多条件查询,对查询结果进行排序等。

      • 查询所有字段,select * from 表名;或者查询时,用所有字段代替*,各个字段之间用逗号隔开。

      • 查询指定字段,select 列名 from 表名 ,select 字段名1,字段名2,...,字段名n from 表名;

      • 查询指定记录,select 字段名1,字段名2,...,字段名n from 表名 where 查询条件。
      • 带IN关键字的查询,满足条件中的一个值即为匹配项, select 字段名1,字段名2,...,字段名n from 表名 where 查询条件 in (条件1,条件2) order by 字段。在in前加not是不包括条件中的条件的项目。
      • 带BETWEEN AND的范围查询, select 字段1,字段2....字段n  from fruits where 字段1 between 条件1 and 条件2;
      • 带LIKE的字符匹配查询,可以和like一起使用的通配符有 %和_,其中%匹配任意长度的字符,甚至包括零字符,,而_一次只能匹配任意一个字符,如图
      • 查询空值  select 字段1,字段2,...字段n from 表 where 字段1 is null;查询字段1位空的记录。  is not null是查询不为空的记录。

      • 带and的多条件查询,使用多个查询条件,select 字段1,字段2,...字段n from 表 where 字段1 条件1  and 字段2 条件2;
      • 带or的多条件查询,使用多个查询条件,select 字段1,字段2,...字段n from 表 where 字段1 条件1  or 字段2 条件2;
      • 查询结果不重复,关键字 DISTINCT可以消除重复的记录值, select DISTINCT 字段名 from 表名;
      • 对查询结果排序,使用 ORDER BY子句,比如 单列排序select 字段1 from 表  ORDER BY 字段1;多列排序 select 字段1,字段2  from 表 ORDER BY 字段1,字段2;指定排序方向,默认是按字母升序进行排序的,可以通过DESC实现降序排序ASC为升序。
      • 分组查询,对数据按照某个多多个字段进行分组,使用GROUP BY关键字分组,[GROUP BY 字段] [HAVING <条件表达式>],创建分租,例子 ,分组通常和集合函数一起使用,比如MAX(),MIN(),COUNT(),SUM(),AVG().  GROUP_CONCAT()函数将每个分组中各个字段的值显示出来。如:。使用 HAVING过滤分组,和GROUP BY一起限定显示记录所需满足的条件,只有满足条件的分组才会被显示。。在GROUP BY子句中使用 WITH ROLLUP,查询出分组记录之后增加一条记录,该记录计算查询出的所有记录的总和,即统计数量。,多字段分组;GROUP BY和ORDER BY一起使用。
      • 使用LIMIT限制查询结果的数量。LIMIT[位置偏移量,]行数位置偏移量指定从那一行开始,如果不指定从第一行开始,第二个茶树行数,只是放回的记录条数。  

    • 使用聚合函数查询
      • COUNT()函数,返回行数,COUNT(*)总行数,COUNT(字段名)指定列下总的行数,忽略空值的行。
      • SUM()函数,返回特定列值的总和。
      • AVG()函数,通过计算返回的行数和每一行数据的和,求得指定列数据的平均值。
      • MAX()函数,返回列中最大值。
      • MIN()函数,返回查询列中最小的值。
    • 连接查询 ,内连接,外连接。
      • 内连接查询(INNER JOIN),使用比较运算符进行表间某些列数据的比较操作,并列出这些表中与连接条件相匹配的数据行,组合成新纪录,即在内连接查询中,只有满足条件的记录才能出现在结果关系中。
      • 外连接查询 将查询多个表中相关联的行,内连接时,返回查询结果集合中的仅是符合查询条件和连接条件的行。有时要返回查询结果集合中的不仅包含符合连接条件的行,而且还包括左连接,右连接或两个连接中的所有数据行。左连接返回包括左表中的所有记录,和右表中连接字段相等的记录。右连接相反。
        • LEFT JOIN
        • RIGHT JOIN
      • 复合条件连接查询,添加过滤条件,限制查询的结果。
    • 子查询,指一个查询语句嵌套在另一个查询语句内部的查询,先查询子查询,子查询结果作为外层另一个查询的过滤条件。ANY ALL IN EXISTS。
      • 带 ANY SOME关键字的子查询,表示满足其中任一条件。  select 字段1 from 表1 where 字段1 > ANY(select 字段2 from 表2);
      • 带ALL关键字的子查询,同时满足所有内层查询的条件。
      • 带EXISTS关键字的子查询,后面参数是人一个子查询,如果子查询返回结果,将被作为条件进行查询。如果没有结果返回,则外层语句将不进行查询。NOT EXISTS与EXISTS结果相反。
      • 带IN关键字的子查询,内层查询语句仅仅返回一个数据列,这个数据列里的值将提供外层查询语句进行比较操作。NOT IN 作用跟IN相反。
      • 带比较运算符的子查询,子查询里面可以使用比较运算符。
    • 合并查询结果 UNION 将结果组合成单个结果集,默认会删除重复数据,当加上ALL时,不会删除重复结果。
    • 为表和字段取别名。
      • 为表取别名, 表名 AS 表别名。
      • 为字段取别名, 列名列别名。
    • 使用正则表达式,使用REGEXP关键字指定正则表达式。
      • 查询以特定字符货字符串开头的记录,  SELECT * FROM 表 where 字段 REGEXP  '^b';
      • 查询以特定字符活字符串结尾的记录,SELECT * FROM 表 where 字段 REGEXP 'b$';
      • 用符号 "."来代替字符串中的任意一个字符。
      • 使用"*"和"+"来匹配多个字符。
      • 匹配指定字符串。
      • 匹配指定字符中的任意一个[ab]。
      • 匹配指定支付以外的字符 [^a-r1-2]。
      • 使用{n,}{n,m}来指定字符串连续出现的次数。
  • 相关阅读:
    Tomcat + Mysql高并发配置优化
    Qt Widget 利用 Qt4.5 实现酷炫透明窗体
    使用VC2005编译真正的静态Qt4.4.3程序 good
    详解 Qt 线程间共享数据(使用signal/slot传递数据,线程间传递信号会立刻返回,但也可通过connect改变)
    浅析在QtWidget中自定义Model(beginInsertRows()和endInsertRows()是空架子,类似于一种信号,用来通知底层)
    英国著名芯片厂商与苹果谈崩 中资收购机会来了!
    跨站脚本攻击(XSS)
    Kafka 协议实现中的内存优化
    读取配置信息
    英语面试准备
  • 原文地址:https://www.cnblogs.com/laiyuan/p/8311494.html
Copyright © 2011-2022 走看看