码迷,mamicode.com
首页 > 数据库 > 详细

数据库——单表查询

时间:2020-11-08 17:24:13      阅读:40      评论:0      收藏:0      [点我收藏+]

标签:空字符串   指定字段   包含   group by   min   通配   不同   off   包括   

一、简单查询

select语句:

指定所有字段:select 字段1,字段2,··· from  表名;

使用星号(*)通配符代替所有字段:select * from 表名;              (一般情况下最好不使用星号通配符,虽然查询数据多但是效率低)

查询指定字段:select 字段1,字段2,···  from  表名;

按条件查询:

select 字段1,字段2,···  from 表名  where 条件表达式; 

             关系运算符 如:<>  和  !=  表示不等于

**带  in 关键字的查询 (in表示判断某个元素是否在指定集合中)

select  字段1,字段2,···  from  表名   where  条件表达式  [not]  in  (元素1,元素2,···);

如:查询student表中id的值为1,2,3的记录,(student表中有id,grade,name,gender字段)语句如下:

select  id,grade,name,gender from student where id in(1,2,3)

**带between   and  关键字查询    (值1表示起始值,值2表示结束值    between  and  表示的是闭区间,而not  between  and表示的开区间)

select  字段1,字段2,···  from 表名  where  条件表达式 [not] between  值1  and  值2;

**空值查询(空值不同于0,也不同于空字符串)

select 字段1,字段2,··· from 表名  where  字段名  is [not] null;

**带distinct 关键字查询(字段名表示要过滤重复记录的字段)

select distinct 字段名 from 表名;   (当要查询的字段有两个及两个以上时,只有要查询的字段全部相同才会被过滤掉)

如:select distinct gender from student;

返回结果   gender

     男

     女

     NULL

(student表中不止一个男、女,distinct表示有区别的,不同种类的,所以该条语句返回的是没有重复值的)

**带like关键字的查询(模糊查询)

select *|{字段1,字段2,···} from 表名 where 字段名  [not]  like  ‘匹配字符串‘;

  ‘匹配字符串‘指定用来匹配的字符串,其值可以是一个普通字符串,也可以时包含百分号(%)和下划线(_)的通配字符串

  1.百分号(%)通配符:匹配任意长度的字符串,包括空字符串      s%、%s、s%s  分别表示以s开头,以s结尾,包含s的字符串

  2.下划线(_)通配符:只匹配单个字符,一个‘_‘代表一个字符。如果使用多个下划线匹配多个连续的字符,下划线之间不能有空格

  3.如果要匹配字符串中的下划线或百分号,就需要通配符字符串中使用右斜线("\")对百分号或下划线进行转义。如“\%”匹配百分号字面值,“\_”匹配下划线字面值

**带and关键字的多条件查询

select *|{字段1,字段2,···} from 表名 where 条件表达式1 and 条件表达式2 [··· and  条件表达式n];

**带or关键字的多条件查询

select *|{字段1,字段2,···} from 表名 where 条件表达式1 or 条件表达式2[··· or 条件表达式n];

  or 和 and 关键字可以一起使用,但是 and 的优先级高于 or ,所以当两者一起使用时,应该先运算and两边的条件表达式,再运算or两边的条件表达式

二、高级查询

**聚合函数

1.count()函数   ——返回某列的行数

select count(*) from 表名;

2.sum函数    ——返回某列值的和

select sum(字段名) from 表名;

3.avg()函数    ——返回某列的平均值

select avg(字段名) from 表名;

4.max函数    ——返回某列的最大值

select max(字段名) from 表名;

5.min()函数    ——返回某列的最小值

**对查询结果进行排序

select 字段名1,字段名2, ··· from 表名 order by 字段名1 [asc|desc], 字段名2[asc|desc]··· 

(先按字段1排序,若字段1相同再按字段2排序,null值被认为是在最小值)

** 分组查询

select 字段名1,字段名2,··· from 表名 group by 字段名1,字段名2,··· [having 条件表达式];

1.单独使用group by 分组

如:查询student表中,按照gender字段值进行分组

select * from student group by gender;

2.group by 和聚合函数一起使用

如:将student表按照gender字段值进行分组查询,计算出每个分组中各有多少名学生

select count(*) gender from student group by gender; 

3.group by 和 having关键字一起使用

如:将student表按照gender字段进行分组查询,查询出grade字段值之和小于300的分组

select sum(grade),gender from student group by gender having sum (grade)<300;

**使用limit限制查询结果的数量

select 字段名1,字段名2, ··· from 表名 limit [offset,] 记录数

(第一个参数offset表示偏移量,如果偏移量为0则从查询结果的第一条记录开始,偏移量为1,则从查询结果中的第二条记录开始,以此类推。offset为可选值,如果不指定其默认值是0.第二个参数记录数表示返回查询记录的条数)

**函数

条件判断函数

if(expr,v1,v2)  ——如果expr表达式为true返回v1,否则返回v2

ifnull(v1,v2)  ——如果v1不为null返回v1,否则返回v2

case expr when v1 then r1 [when v2 then r2 ··· ][else rn] end  ——如果expr值等于v1、v2等,则返回对应位置then后面的结果,否则返回else后面的结果

 三、为表和字段取别名

1.为表取别名

select  *  from  表名  [as]  别名;

2.为字段取别名

select 字段名 [as] 别名[, 字段名  [as]  别名,···] from 表名;

数据库——单表查询

标签:空字符串   指定字段   包含   group by   min   通配   不同   off   包括   

原文地址:https://www.cnblogs.com/xfx-n/p/13943099.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有
迷上了代码!