zoukankan      html  css  js  c++  java
  • 430 聚合 分页 排序 分组查询 筛选

    聚合查询:函数sum()求和 、avg() 平均数、max()最大值、min()最小值、count()记录数

    格式select  聚合函数 (字段) from 表名; 注:聚合不能与其他字段一起用

    SELECT COUNT(*) FROM score;  COUNT(*) 取每一列的取最大值

    NULL 不包括在内 所有显示5条

    注:用count 统计 不包含 null数据,要使用不包含null的字段 不然不准

    查询列起别名

    select count(*) AS 起的名 from 表名;

    分页查询

    公式:select * from 表名 limit (当前页-1)*每页显示的条数

    查询排序(order by)

    语法:select * from 表名 order by 字段 asc/desc;

    asc:正序  数值:递增 0~9 字母:自然a~z (默认)

    desc:倒序 9~0 z~a  数值 字母 反之

    :按jsp>60 倒序

    select * from 表名 字段  order by 字段 desc;

    :按jsp正序,HTML倒序

    select * from 表名 order by jsp asc,html desc ;

    注意:

    1排序以第一个为主 2 只有第一个字段排序有相同时, html倒序才会有作用 

     分组查询 (group by) 分组查询一般搭配聚合函数使用

    公式:select 字段 from 表名 group by 字段

    例:查询男女的人数  男3  女2

    男女生jsp总成绩

    select ssex,sum(jsp) from score group by ssex;  当条件里含有  每个时 先分组

    分组查询后筛选

    例:查询总人数大于2的性别

    1.查询男女人数 2.筛选人数大于2的记录(having)注:分组前有where 分组后用having

    条件多 一步一步来查询

    课堂随笔
    --
    查询所有列 SELECT * FROM student; /*创建表*/ CREATE TABLE student( sid INT, sname VARCHAR(10), ssex CHAR(2) ); /*插入数据*/ INSERT INTO student VALUES(1,'袁一鸣',''); /*给定字段插入数据*/ INSERT INTO student(sid,sname) VALUES(2,'小明'); /*查询表中所有数据*/ SELECT * FROM student; /*修改数据(一定要带条件)*/ UPDATE student SET sname='小红'WHERE sid=2; /*删除全表数据*/ DELETE FROM student; TRUNCATE student; /*删除某条数据*/ DELETE FROM student WHERE sid=2; /*创建名为emp的员工表*/ CREATE TABLE emp( sid INT, sname VARCHAR(20), gender VARCHAR(2), birthday DATETIME, email VARCHAR(10), remark VARBINARY(50) ); /*修改练习*/ /*add是添加*/ ALTER TABLE emp ADD age VARCHAR(30) /*MODIFY COLUMN是修改字段类型*/ ALTER TABLE emp MODIFY COLUMN email VARCHAR(50) /*DROP COLUMN是删除列的*/ ALTER TABLE emp DROP COLUMN remark; /*修改字段名称*/ ALTER TABLE emp CHANGE COLUMN sname usemame VARCHAR(20); -- 新建score表 CREATE TABLE score( sid INT, sname VARCHAR(10), jsp INT, html INT, js INT ); -- 给score表添加数据 INSERT INTO score VALUES(1,'钢铁侠',12,66,100); INSERT INTO score VALUES(2,'浩克',66,88,11); INSERT INTO score VALUES(3,'美国队长',0,70,80); INSERT INTO score VALUES(4,'小辣椒',100,50,60); INSERT INTO score VALUES(5,'灭吧',66,70,93); -- 聚合函数sum()求和 avg()平均数 max()最大值 min()最小值 count()记录数 SELECT * FROM score /*求全班jsp的总成绩 SUM()求和*/ SELECT SUM(jsp) FROM score;/*聚合函数不能跟其他字段一起用*/ /*求全班的html这么课的平均成绩*/ SELECT AVG(html) FROM score; /*求全班同学js这门课的最高分*/ SELECT MAX(js) FROM score; /*求html这么课的最低分*/ SELECT MIN(html) FROM score; /*求本班一共有多少位同学*/ SELECT COUNT(*) FROM score; -- 用count时 不能包含null的字段 不然不准 -- 查询字段起名 字段名 AS 起的名 FROM 表名 SELECT COUNT(*) AS 统计数据 FROM score; -- 添加数据 INSERT INTO student VALUES(2,'雄大',''); INSERT INTO student VALUES(3,'雄二',''); INSERT INTO student VALUES(4,'光头强',''); INSERT INTO student VALUES(5,'黑寡妇',''); INSERT INTO student VALUES(6,'黑灭霸',''); INSERT INTO student VALUES(7,'',NULL); /*分页查询 limit起始索引,每页显示多少条*/ SELECT * FROM student LIMIT 0,2;/*第一页*/ SELECT * FROM student LIMIT 2,2;/*第二页*/ SELECT * FROM student LIMIT 4,2;/*第三页*/ SELECT * FROM student LIMIT 6,2;/*第四页*/ -- 分页公式 SELECT * FROM student LIMIT (当前页-1)*每页的显示的条数; SELECT * FROM score; /*查询排序 按照jsp>60 的倒序*/ SELECT * FROM score WHERE jsp>60 ORDER BY jsp DESC; /*按照jsp的正序,html倒序*/ SELECT * FROM score ORDER BY jsp ASC,html DESC; /*分组查询(一般与聚合函数搭配)*/ SELECT ssex,COUNT(*) FROM student GROUP BY ssex; /*男女生的jsp总成绩*/ SELECT ssex,SUM(jsp) FROM score GROUP BY ssex; /*查询总人数大于2的性别*/ SELECT ssex FROM student GROUP BY ssex HAVING COUNT(*)>2;
    MySQL小测验
     
    二、练习
    1. 查询出部门编号为30的所有员工
    select * from 表名 where deptno=30;
    2. 所有销售员的姓名、编号和部门编号。
    select ename,empno,deptno from 表名 where job=’销售员;’
    3. 找出奖金高于工资的员工。
    select ename from 表名 where comm>sal;
    4. 找出奖金高于工资的60%的员工。
    select ename from 表名 where comm>sal*0.6;
    5. 找出部门编号为10中所有经理,和部门编号为20中所有销售员的详细资料。
    select * from 表名 where (deptno=10 and job=’经理’)
    6. 找出部门编号为10中所有经理,部门编号为20中所有销售员,还有即不是经理又不是销售员但其工资大或等于20000的所有员工详细资料。
    select * from 表名 where (deptno=10 and job=’经理’)
    or (deptno=20 and job=’销售员’)or(job<>’经理’ and job<>’销售员 and sal>=20000’;)
    7. 无奖金或奖金低于1000的员工。
    select ename from 表名 where comm is null or comm=’’ orcomm<1000;
    8. 查询名字由三个字组成的员工。
    select ename from 表名 where    ename like ‘___’;
    9.查询2000年入职的员工。
    select ename from 表名 where year(hiredate)=2000;
    select ename from 表名 where hiredate like2000%’;
    10. 查询所有员工详细信息,用编号升序排序
    select * from 表名 order by empno asc;
    11. 查询所有员工详细信息,用工资降序排序,如果工资相同使用入职日期升序排序
    select * from 表名 order by sal desc ,hiredate asc;
    12.    查询姓周的两个名字的员工。
    select ename from 表名 where ename like ‘周_’;
    13.    查询所有姓张的员工。
    select ename from 表名 where ename like ‘张%’;
    14.    查询该公司有多少个岗位,每个岗位有多少人。
    select job,count(*) from 表名 group by job;
    15.查询哪个岗位中人数大于3。
    select  job,count(*) from 表名 group by job having count(*)>3;
  • 相关阅读:
    jQuery基础
    深入理解JVM内存模型(jmm)和GC
    oracle,哪些操作会导致索引失效?
    systemd
    一个我小时候玩过的我是猪不然关机的软件,我高仿了一个,超简单。
    自己写的求最大值实现,用到了模板函数。
    poj 1695
    poj 1192
    poj 1239
    poj 1170
  • 原文地址:https://www.cnblogs.com/zs0322/p/10794458.html
Copyright © 2011-2022 走看看