mysql的数据查询

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/raojay7/article/details/61926476

基本查询

基本构成:

select子句    //要查询的内容选择哪些列;如:select */selcet username    
from子句      //指定数据表,写表名;如:from user
where子句 //查询时行必须满足的条件;如:where id=3
group by子句  //对结果进行分组;如:group by sex
order by 子句//对结果进行排序;如:order by date
having子句    //查询时满足的第二条件
limit 子句    //限定输出的查询结果;如:limit 3就显示3条数据

单表查询

  1. select * from 表名,查询表中的所有字段
  2. select 字段名 from 表名;如果查询多个字段,用‘,’分割
  3. 带in关键字的查询,in关键字可以判断某个字段的值是否在指定的集合中,如果字段的值在集合中,就被查询出来,否则不满足查询条件,语法如下:
    select *from '表名' where 条件 [not] in(元素1,元素2,···,元素n)

  4. 带between and的范围查询,可以查询在这个范围内的内容,其语法如下:
    select *from 表名 where 条件 [not] between 取值1 and 取值2
    如果取值是1和3,则查出[1,3]的数

  5. like的字符匹配查询:有%和_
  6. 用is null查询空值
  7. 带and的多条件查询
  8. 带or的多条件查询,注意一个特例,如果是 条件一 and 条件二 or 条件三 则查出一和二的交集和三的并集;如果是 条件一 or 条件二 and 条件三 则是(条件一)或(条件二和条件三的交集)
  9. 用distinct关键字去除结果中的重复行
  10. 用order by对查询结果排序,注意:默认是升序asc,降序是desc
  11. 用group by分组查询,在查询时,所查询的列必须包含在分组的列种,目的是使查询到的数据没有矛盾。
    1.单独使用group by关键字,查询结果只显示每组的一条记录
    2.可以与group_concat()函数一起使用,可以将每个组中的所有字段值都显示出来
    3.按多个字段分组
  12. 可以用limit关键字限制查询结果的数量

聚合函数查询

COUNT()对于*以外的任何参数,如1,返回所选集合中非null值的行的数目;对于*,返回选择集合中的所有行的数目,包括null值的行,没有where的子句的count(*)是经过优化的,能够快速地返回表中所有的记录总数 </br>

SUM()可以求出表中某个字段取值的总和 </br> 

AVG()可以求出表中某个字段取值的平均值

MAX()可以求出表中某个字段取值的最大值

MIN()可以求出表中某个字段取值的最小值

连接查询

  1. 内连接查询,如:where user.uid=orders.uid
  2. 外连接查询(一般不用,会查出一些无用的null值),用outer join关键字将两个表连接起来
    1.左外连接:将左表中的所有数据分别与右表中的每条数据进行连接组合,返回的数据除内连接的数据外,还包含左表中不符合条件的数据,并在右表的相应列种添加null值
    2.右外连接:类似左外,将右边的保留,连左边的
    3.注:如果是select *from 表一 left/right join 表二on···,则表一的字段会在前面
  3. 复合条件查询,就是将上面的查询综合

)

子查询

1一般的语法例子:
select *from user where uid in(select uid from orders)
而且,子查询还可以带比较运算符,但是相对于连接查询可能会慢,因为他是从最内层的查询开始,然后从它开始向外向上移动到外层查询。

2子查询还可以带exists关键字
语法:
select *from user where uid exists(select uid from orders where oid=1)
此时内层查询语句不返回查询的记录,而是返回一个真假值,当返回真时,外层查询语句就进行查询

3带any关键字的子查询,表示满足其中的任意一个条件

4带all关键字的子查询,表示满足其中的所有条件

正则表达式查询

就是使用字段名 regexp ‘匹配方式’来进行查询,更加灵活强大

将查询结果合并

使用union和union all来合并

为字段和表取别名

更加方便,快捷

猜你喜欢

转载自blog.csdn.net/raojay7/article/details/61926476