美文网首页
SQL知识复习

SQL知识复习

作者: gyDBD | 来源:发表于2018-04-18 20:36 被阅读0次

三大重要操作

scanning

sorting

hashing

UNION,EXCEPT, INTERSECT相当于集合操作,返回结果也是集合,所以不会存在相同行

find sid of students who take some CS :

select E.sid from Enroll E where E.cno IN (select C.cno From Course c where c.cname = 'CS')

find sid of students who take no CS :

Select S.sid from Student S EXCEPT(select C.cno From Course c where c.cname = 'CS')

find sid of students who take only CS :

select E.sid from Enroll E where E.cno IN (select C.cno From Course c where c.cname = 'CS') EXCEPT NOT IN (select )

(SOME 与 IN是等价的)

Find sid of students who take all CS courses.

一个学生上了所有的CS的课,就说明不存在一门CS的课是这个学生没上过的。

Select S.sid from Student S where NOT EXISTS(Select C.cno From Course C where C.Dept = 'CS'

                                                AND C.cno NOT IN(Select E.cno from Enroll E where E.sid = S.sid))

构造方法

CREATE FUNCTION sum_and_product(OUT sum int, OUT product int)

RETURNS SETOF RECORD

AS $$

SELECT P.x+P.y , P.x*P.y FROM Pair P;

$$ LANGUAGE SQL;

构造视图

视图就是一个虚拟的关系表

CREATE View CS_COURSE AS

SELECT C.Cno, C.Cname

FROM COURSE C

WHERE C.DEPT = 'CS'

可以直接利用我们的view

SELECT C.Cname

FROM CS_COUSE C

可以用view解决现在的数据表不足以及数据表扩张

Collection & Aggregate function

SELECT COUNT(*) FROM R r;

SELECT E.sid, COUNT(*) FROM Enroll E GROUP BY (E.sid)

但是这个无法输出没有上过课的学生,S4,0

可以改成

SELECT distinct S.sid(SELECT COUNT(E.cno) FROM Enrool E where E.sid = S.sid) As NumberCourse

FROM Student S

计算两个筛子和的出现频率

SELECT SUM(Q.RV * Q.Trials) / SELECT COUNT(*) FROM Trials

FROM (SELECT t.Dice1 + t.Dice2) AS RV, COUNT(t.Tid) AS Ntrials 

                 FROM Trials t

                GROUP BY ( t.Dice1 + t.Dice2) AS Q

COUNT的强大之处

所有的集合问题都可以转化为count是否==0 >0等等

A属于B       |A-B| == 0                        A EXCEPT B

A==B           |A-B|==0 并且|B-A|==0   A EXCEPT B and B EXCEPT A

A和B无交集 |A并B| == 0                    A INTERSECT B

find sid take all ‘MATH’ courses

运用集合思维就是 |Math-C(S)| = 0 然后转化为SQL

SELECT S.sid FROM Student S

WHERE (SELECT COUNT(1)) 

    FROM ((SELECT C.Cno FROM Course C Where C.cname ='MATH')

         EXCEPT (Select E.cno From Enrolll E Where E.sid = S.sid))q)==0

CROSS JOIN就等同于叉乘

B+ TREE

这些数字本身不是Data,这只是索引,最终index指向的才是Data

锁三条rule:

li(A) .... ui(A)有上锁必须有解锁

li(A) .... ui(A)之间不能有别的lj(A)就是不能有别的事务在A没被解放时候再上锁

li(A) .... ui(A)同一个事务i,所有的上锁都在所有的解锁前面,任何一个上锁活动前不存在解锁,任何一个解锁活动后不存在上锁

相关文章

  • SQL知识复习

    三大重要操作 scanning sorting hashing UNION,EXCEPT, INTERSECT相当...

  • Mysql总结

    最近又重新复习了一遍SQL的基础和进阶知识,SQL可以很基础也可以很复杂,写一篇总结来梳理自己的知识脉络 SQL是...

  • 推荐几个SQL在线学习网站

    适合的群体:SQL初学者,想要复习一下SQL基础知识的朋友,能无障碍阅读基础英文的朋友。 SQL算是声明式的数据操...

  • 【完结✅】SQL基础知识复习

    SQL快速参考:https://www.runoob.com/sql/sql-quickref.html[http...

  • SQL 基本知识记录

    最近面试当中被问到很多SQL的问题,有些正好记得概念,有些对概念比较模糊,因此我重新复习了一下sql的知识,...

  • 复习SQL

    参考自:runoob Basis Basic Usage Where Distinct Choose the on...

  • SQL复习

    东西学了不用真是看完就忘 有空要多练习才行 老忘好浪费 基本: select:获取数据 select A from...

  • SQL常用语句总结

    本文总结了常用的SQL语句,尤其适合在面试前复习你的SQL知识。你可以尝试文中的例子,温习下你很久以前在数据库系统...

  • SQL复习-ddl

    DDL 创造,毁灭,更改 CREATE TABLE Branch(branch_id VARCHAR(15), n...

  • 复习sql基本

    来源菜鸟教程 基础 1.查询所有结果集 1.查询某一列 SELECT DISTINCT 语句 在表中,一个列可能会...

网友评论

      本文标题:SQL知识复习

      本文链接:https://www.haomeiwen.com/subject/impbkftx.html