数据库(三)之DQL语言

一、DQL(数据库查询语言)

1.查询数据

   select 列名称 from 表名称 [查询条件];

   查询表中所有的内容:select * from 表名  

   按特定条件查询:select 列名称 from 表名称 where 条件;

   select * from students where name like "%王%"; 查询名字中带有 "王" 字的所有人信息

   select * from students where id<5 and age>20; 查询id小于5且年龄大于20的所有人信息

   where 子句不仅仅支持 "where 列名 = 值" 这种名等于值的查询形式, 对一般的比较运算的运算符都是支持的, 例如 =、>、<、>=、<、!=、 between...and... 以及一些扩展运算符 is [not] null、in、like 等等。 还可以对查询条件使用 or 和 and 进行组合查询。

2.完全重复的记录只一次

 select distinct * from 表名;

 select distinct 列1,列2  from 表名;

 例如:select distinct sal  from emp;

       查询员工的工资,如果存在相同的工资只显示一次

3.列运算

● 数据类型的列可以做加、减、乘、除运算

  select  sal*1.5  from  emp;

● 字符串类型可以做连接运算

  select concat(“$”,sal)  from  emp;

● 转换null值

  有时需要把null转换成其他值,例如com+1000,如果com存在null值,那么null+1000还是null

  而我们希望把null当做0来运算,select ifnull(com,0)+1000 from emp;

  ifnull(com,0):如果com中存在null值,那么当成0来运算

● 给列起别名

  select ifnull(com,0)+1000 as 奖金 from emp;  as 可以省略

4.条件控制

  ● 模糊查询

   select * from emp where name like ‘张_’;   其中一个_代表匹配一个字符

   select * from emp where name like ‘张%’;  %代表匹配0~N个字符

5.排序

  ● 升序

   select * from emp order by sal asc; 按asc排序,升序,可省略 

  ● 降序

   select * from emp order by sal desc; 按desc排序,降序,不可省略

  ● 使用多列作为排序条件

   select * from emp order by sal asc,comm desc;  先按sal升序,如果sal相同,按comm降序

6.聚合函数:用来做某列的纵向运算

      ● count     

       select  count(*)  from  emp;  计算emp表中所有列都不为null的记录的行数

       select  count(200)  from  emp;  与 * 效果一样

       select  count(comm)  from  emp;  计算emp表中comm不为null的记录的行数

     ● max     

       select  max(sal)  from  emp;  查询最高工资

     ● min

       select  min(sal)  from  emp;  查询最低工资

     ● sum

       select  sum(sal)  from  emp;  查询工资和

     ● avg

       select  avg(sal)  from  emp;  查询平均工资

7. 分组查询:把记录使用某一列进行分组,然后查询组信息

       例如:查看所有部门的记录数

             select deptno, count(*) from emp group by deptno;

             使用deptno分组,查询部门编号和每个部门的记录数

             select job, max(sal) from emp group by job;

             使用job分组,查询每种工作的最高工资   

      ① 分组前条件

         select deptno, count(*) from emp where sal>15000 group by deptno;

         分组前先去除sal<=15000的人,在进行分组,记录总数。

      ② 组条件,分组后条件

         以部门分组,查询每组记录数,条件为记录数大于3

         select deptno,count(*) from emp group by deptno having count(*)>3; 

      ③ select deptno, count(*) from emp where sal>15000 group by deptno having count(*)>3;

8. limit子句:用来限制查询结果的起始行,以及总行数

       例如:查询起始行为第五行,一共查询3行记录

             select * from emp limit 4,3 ;

             其中4表示第5行开始,其中3表示一共查询3行,即第5,6,7行记录  

       应用:分页

             ① 一页的记录数:10行

             ② 查询第3页

             select * from emp limit 20,10;

      select * from emp limit (当前页-1)*每页记录数,每页记录数;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值