###DQL数据查询语言


1、基本查询   

a、普通查询

  select * from 表名称; 查询该表中的所有数据

b、列控制查询,即:查询指定列

  select 列名称,列名称。。。 from 表名称;

c、去重复查询,关键字 distinct

  select distinct 列名称 from 表名称;

d、使用运算符进行查询

  注意:任何数据和null进行操作的时候,都会称为null,应该使用if null (列名称,期望值)

  假设情况:当进行工资计算的时候,当需要计算工资和奖金的总和的时候,有的人不存在奖金表单中职位null

  这个时候进行计算工资总和的时候,就要使用到if null (列名称,期望值)

  select ename,sal + if null(comm,0) from emp;

  select ename,sal + if null(comm,0) [as] salary from emp;

e、给结果集起别名

  上面的sal + if null(comm,0)得到的结果是一个结果集,可以对这个结果集进行命名使用关键字as---ifnull  no " "!!!

  select ename,sal + if null(comm,0) as salary from emp; 其中as可省略

f、字符拼接

  当想要在输出的内容中,显示更好的输出样式,可以加上文字描述

  select ‘我的名字是:’+name from student; 这种方式是错误的,因为在mysql中不能使用”+“作为字符串连接符

  应该使用的是concat

  select concat('我是一名员工,我叫:',ename)[as aaa] from emp; 在这句话 中concat实现了字符连接的操作

g、基本条件查询

  select * from emp where='文员';

  select * from emp where sal betwwen 2000 and 3000 anddeptno=30;

h、模糊查询

  select * from emp where name like '张_';

  select * from emp where name like '张_ _';

  select * from emp where name like '_ _亮';

  select * from emp where name like '_ _ _';

  select * from emp where name like '张%';

  select * from emp where name like '%张%';

  select * from emp where name like '%';

2、排序查询注释:关键字:order by

a、单列排序

  select * from 表名称 order by 列名称 [asc\desc];  方括号中表示可选择内容,不写的时候默认为asc,表示升序、desc表示降序

b、多列排序

  select * from 表名称 order by 第一列 [asc\desc],第二列 [asc\desc];

  当经过第一列的排序之后,存在某几个具有相同的值得时候,采用第二列的条件再排序

3、聚合函数查询--UDAF

注释:聚合函数的运算时纵向的运算

a、count()  

  count(*):*表示所有列,计算有效行的数目,假如一行中所有列都为null,那么这行为无效记录,当括号中放入数字的时候,效果与*相同,表示所有列;

  count(xx):xx表示列名称,计算指定列的有效行数目,若在这一列中,某一行存在null,那这一行为无效行

b、sum(列名称)  求某一列的和

c、max(列名称)  求某一列中的最大值

d、min(列名称)  求某一列中的最小值

e、avg(列名称)  求某一列的平均值

4、分组查询

注释:使用哪个条件进行分组,这个条件必须是组信息,当使用非组信息查询的时候,虽然语法上是正确的,但是不符合要求

分组一般和聚合函数一起使用

    select     要查询并显示的内容  可以放*或列名称或聚合函数(UDAF)

     from       想要查询的表    具体的表

     where     分组前条件       不可放聚合函数

     group by   分组信息         列名称

     having     分组后条件     可以放聚合函数

     order by  对最终结果的操作 可放UDAF

5、MySql的特有:limit

注释:对于limit只在MySql中才有,其他数据库中不存在,而且Oracle数据库中也不存在

a、limit语法结构:select * from 表名称 limit m,n;

  查询5行记录,从0行开始

  select * from 表名称 limit 0,3;

  查询10行记录,从3行开始

  select * from 表名称 limit 3,10;

  注解:对于上面的语法limit后面跟着两个数字,第一个数字m:表示起始行,第二个数字n:表示要查询并显示的行数

b、拓展

  问:查询工资最高的员工的信息,在emp表中

  SELECT * FROM emp ORDER BY sal DESC  LIMIT 0,1;

  还可以使用子查询来操作

  SELECT * FROM (SELECT * FROM emp ORDER BY sal DESC) e LIMIT 0,1;

c、分页显示

  ① 关于页数的计算

  总页数=总记录条数%每页记录条数==0?总记录条数/每页记录条数:总记录条数/每页记录数+1;

  ②假如查询某一页数据并显示

  select * from 表名称 limit (要查询的页码-1)*每页记录数,每页记录条数;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值