MySQL数据库的查询技术

为方便查询语句的学习,首先创建一个示例表:

表的结构:


表里的数据:


基本的数据查询:

1. 显示表的数据     select  * from  emp;

    显示某些列的数据    select   id,name,sex   from   emp;

    显示满足某些条件的某些列的数据:   select  id,name,sex from emp where id = 101;

    显示的时候更改列的显示名称:select id as '编号',name as '姓名'  from emp where id = 102;


    where条件子句的扩展说明:

  在MySQL中有许多比较运算符:

  (1)>      >=        <     <=   

  (2) IS  NULL                     IS NOT NULL   

  (3)BETWEEN    value1  AND  value2                   NOT BETWEEN   value1 AND   value2  

  (4) IN(value1,value2,value3)                                 NOT IN (value1,value2,value3)

  (5)模糊查询匹配like     ,not   like

      %     匹配任意个字符,包括零个

      _      匹配一个字符

     \%    匹配字符%

    \_       匹配字符_

实例:       where  id like 12_;       当id是三个字符且开头是12时匹配到。

                   where name like '刘%';        匹配所有姓刘的记录。

                   where name not like'刘%'       查找所有不姓刘的记录。

           MySQL中还可以使用正则表达式实现更复杂的模糊查询,格式是 where   expr  REGEXP   正则表达式字符串。

系统将会对字段expr执行正则表达式检查,返回符合要求的行。

2.使用MySQL函数实现统计查询

查询公司总的人数:  select count(*) from emp;     或者  select count(id) from emp;

查询公司总的部门数:1.显示部门字段,select dep from emp;这时会有很多重复数据,去除重复数据,使用distinct

                                        2.显示部门,select distinct dep from emp;

                                        3.显示部门的数目:select count(distinct dep) from emp;

查询开发部的总人数:select count(id) from emp where dep='开发部';           或者开发部门的名称不十分统一,但都有开发2字:select count(id) from emp where dep like '%开发%';

查询总薪水:select sum(salary) from emp

查询开发部门的总薪水:select sum(salary) from emp where dep like '%开发%';

查询平均薪水:select avg(salary) from emp;

查询开发部门的平均薪水:select avg(salary) from emp where dep like '%开发%';

除此之外,还有求最大值,最小值的函数max   ,   min    ;

3.对查询结果的处理--分组和排序

排序:select id,name,salary from emp order by salary desc;        asc表示升序排列,desc表示降序排列

分组 group by    分组的作用是限定sum,avg,max.min等函数的作用范围,使得可以分别求对应的数据:

查询各个部门的总薪水:select dep,sum(salary) from emp group by dep;

查询各个部门的最高最低薪水:select dep,max(salary),min(salary) from emp group by dep;

4.日期查询相关技术

查询在某天过生日的人:select name,birth from emp where birth like '%11-11%';  11月11号过生日的人

查询今天过生日的人:select name,birth from emp where birth like (select concat('%',(select date_format(now(),'%m-%d'))));

查询年龄: select name,date_format(from_days(to_days(now())-to_days(birth)),'%y') as age from emp;其中求年龄的语句date_format(from_days(to_days(now())-to_days(birth)),'%y')。就是用现在的时间减去出生日期然后取年份。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值