SQL 易忘知识点整理

---恢复内容开始---

1、两级排序的组内格式

    select s#,AVG(score) 平均成绩
        from sc
        group by s# 
        order by AVG(score) asc,S# desc
    

平均成绩升序排列,平均成绩相同按课程号降序排列

2、对组进行筛选时having 不是having by

3、实现对字符的筛选:

1 sname like '李%' /*表示以李开头的任意一个名字*/
2 sname like '李_'   /*表示以李开头的两个字名字*/
3 
4 /*注意不是 is like,而是like*/

4、实现相关子查询的条件:自查询中出现父查询中的表,且和父查询之间设立了查询条件(此时,子查询结果是一个值,而不是一组值)

例子:

1 /*6*/
2 select student.s#,Student.Sname
3     from student,SC
4     where sc.C#=01 and student.S#=sc.S# and 
    exists(select * from sc sc_2 where sc.c#=sc_2.c# and sc_2.c#=02) /*表示并且,用exists*/

5、即使两表建立了连接,但是各自是不会发生变化的。比如说T1有列a、b、c,T2有列c、d、e,查询T1.d是查不到的。

6、如果两个表进行连接,那么在进行查询时,对于聚集函数内部的列可以不用前缀名,即代表对连接后的表中的某一列进行聚集运算

/*10*/
select student.s#,student.sname,COUNT(C#)
    from Student,SC
    where student.S#=sc.S#
    group by student.S#,student.sname
    having COUNT(C#)<=COUNT(course.c#)

7、如果属性名在参加连接的各表中是唯一的,则可以省略表名前缀

8、等值连接不会自动消除重复列

9、“查询所学课程和学号为‘001‘的学生所有课程相同的学生的学号和姓名’’”:课程相同=数量相同,课程是包含关系

10、按照平均成绩从高到低显示所有学生的“数据库”,“企业管理”两门课程的成绩,其中数据库的c#为01,企业管理的c#为02,按如下形式显示:学生id,数据库,企业管理,有效课程数,有效平均成绩

11、实现标量子查询的方式

  在父查询中有表1 子查询中有表2,在子查询中通过设立表1.列1=表2.列2 来实现,这样可确保每次传进子查询的元组数量为1

12、及格率的表示

(100*sum(case when score>60 then 1 else 0)) / count(c#)

 

posted @ 2019-06-05 05:40  甜汤  阅读(149)  评论(0编辑  收藏  举报