数据查询2.3

数据查询市数据库的核心操作
单表查询

  1. 选择表中的若干列
    查询表中的部分或者全部列即关系代数的投影运算
    (1)指定列查询
    语句select 【内容】 from 【表】;
    例如查询学生的学号、姓名
    select sno,sname from student;
    (2)查询全部列
    语句:语句select * from 【表】;
    案例查询全体学生的记录
    select * from student;
    (3)查询经过计算的值
    案例:查询学生出生时间
    时间2014 表中数据age
    select 2014-age from student;

  2. 选择表中的若干元组
    (1)消除取值重复的行
    两个本来不相同的元组在投影到指定某列以后,可能会出现相同的行,可以用distinct消除
    案例:查询选修课程的学号
    select distinct sno from student;
    如果没有指定,那就默认表中存在重复行;
    (2)查找满足条件的元组
    查询满足条件的元组通过where语句实现
    查询中常用到的字符:<,>,=,!=,!<,!>,<=,>=,between and,notbetween and,in not in,like,not like,is null, is not null,and ,or。
    案例:查询全体计算机的学生
    select sname from student where s=‘cs’;

  3. order by子句
    在使用order by 对结果可以升序(asc)或者desc降序,如果不添加其中一个,就默认升序
    案例:select sno,grade from sc where cno=‘3’ order by grade desc;

  4. 聚集函数
    count() 统计元组个数
    count(distinct/all[列名])统计列表中的个数
    sum(distinct/all【列名】)计算总和
    avg(distinct/all【列名】)计算均值
    max(distinct/all【列名】)找最大值
    min(distinct/all【列名】)最小值
    distinct计算时不出现重复的值。如果不指定就不取消重复值
    案例:查询学生总人数
    select count(
    )from student;
    查询选秀了课程的学生人数
    select count(distinct sno) from sc;

  5. group by
    group by将查询结果分组。
    案例:求各个课程号以及相应的选课人数
    select sno count(sno)from sc group by cno;
    group by 不可跟where连用,所以用having

案例:求选修课程大于3的学号
select sno from sc group by sno having count(*)>3;

上一篇:SQL -去重Group by 和Distinct的效率


下一篇:sql执行顺序