zoukankan      html  css  js  c++  java
  • [DB] SQL 复习1

    --
    --2011.06.26.
    --
    --单表查询--
    -- 1, 查询指定列
    SELECT Sno, Sname
    FROM Student
    -- 2, 查询全部列
    SELECT *
    FROM Student
    --3, 查询经过计算的列
    SELECT Sno, 2011-Sage
    FROM Student
    --3, 使用列别名
    SELECT Sno, 'Year of Birthday: ', 2011-Sage Birthday --ISLOWER(Sdept)
    FROM Student
    --查询选修了课的学生
    SELECT Sno  -- 默认 SELECT ALL Sno
    FROM SC
    SELECT DISTINCT Sno
    FROM SC
    --查询满足条件的元组--
    --1, 比较大小
    SELECT Sname, Sage
    FROM Student
    WHERE Sage < 20
    SELECT Sname, Sage
    FROM STUDENT
    WHERE NOT Sage >= 20
    --2, 确定范围
    SELECT *
    FROM Student
    WHERE Sage BETWEEN 20 AND 30
    SELECT *
    FROM Student
    WHERE NOT Sage BETWEEN 20 AND 30
    --3, 确定集合
    SELECT Sno, Sname, Sdept
    FROM Student
    WHERE Sdept IN ('IS', 'CS')
    --4, 字符串匹配
      -- (1) 匹配模板为固定字符串
    SELECT Sno, Sname
    FROM Student
    WHERE Sno LIKE '10002'
    SELECT Sno, Sname
    FROM Student
    WHERE Sno = '10002'
      -- (2) 匹配模板为含有通配符的字符串
    SELECT Sno, Sname
    FROM Student
    WHERE Sname LIKE '李%'
    SELECT Sno, Sname
    FROM Student
    WHERE Sname LIKE '李_'
    SELECT Sno, Sname
    FROM Student
    WHERE Sname LIKE '_四'
    SELECT Sno, Sname
    FROM Student
    WHERE Sname LIKE '_四%'
      --(3), 使用换码字符将通配符转义为普通字符
    SELECT Sno, Sname
    FROM Student
    WHERE Sname LIKE '\_四'
    SELECT Cno, Cname
    FROM Course
    WHERE Cname LIKE 'JA%序__'
    --5, 涉及空值的查询
    SELECT Sno, Cno
    FROM SC
    WHERE Grade IS NULL  --判断是不是空 就是这样规定的 用 IS
    SELECT Sno, Cno
    FROM SC
    WHERE Grade IS NOT NULL
    --6, 多重条件查询
                  --AND的优先级高于OR
    SELECT Sno, Sname
    FROM Student
    WHERE Sdept = 'CS' AND Sage < 20
    SELECT Sno, Sname
    FROM Student
    WHERE Sdept IN  ('CS') AND Sage < 20  ---IN <值表>
    SELECT Sno, Sname, Ssex
    FROM Student
    WHERE Sdept = 'CS' OR Sdept = 'IS' OR Sdept = 'MA'
    SELECT Sname, Sdept, SageFROM Student
    WHERE Sage BETWEEN 20 AND 23
    --可改写为:
    SELECT Sname, Sdept, Sage
    FROM Student
    WHERE  Sage>=20 AND Sage<=23
    --7, 对查询结果排序
               --升序:ASC;降序:DESC
    SELECT *
    FROM SC
    ORDER BY Grade
    SELECT *
    FROM SC
    WHERE Cno = 'c08'
    ORDER BY Grade ASC
    SELECT *
    FROM SC
    ORDER BY Grade DESC
    SELECT Sdept, Sage
    FROM Student
    ORDER BY Sdept, Sage DESC
    --8, 使用集函数
    SELECT COUNT(*)
    FROM Student
    SELECT COUNT(DISTINCT Sno)
    FROM SC
                                    --2011-06-23-15:26
    -- 2011-06-23-17:46--
    SELECT AVG(Grade)
    FROM SC
    WHERE Cno = 'c02'
    SELECT MAX(Grade)
    FROM SC
    WHERE Cno = 'c01'
    SELECT Cno, COUNT(Sno)
    FROM SC
    GROUP BY Cno
    --GROUP BY 分组:按指定的一列或多列值分组,值相等的为一组
    SELECT  Sno, COUNT(*)
    FROM   SC
    WHERE Grade >= 90
    GROUP BY Sno
    HAVING COUNT(*)>=3 --HAVING短语作用于组,从中选择满足条件的组。
    -- 3.3.3 连接查询--
          --(1), 广义笛卡尔积--
    SELECT  Student.* ,  SC.*
    FROM Student, SC      --(2), 等值与非等值连接查询
     --等值连接--
     SELECT Student.*, sc.*
     FROM   Student, SC
     WHERE  Student.Sno = SC.Sno
     --自然连接--
     SELECT  Student.Sno,Sname,Ssex,Sage,  
                    Sdept,Cno,Grade
     FROM     Student, SC
     WHERE  Student.Sno = SC.Sno
     --非等值连接--(略)
     --(3), 自身连接
    --每一门课的间接先修课
    SELECT FI.Cno, SEC.Cpno
    FROM Course FI, Course SEC
    WHERE FI.Cpno = SEC.Cno --AND SEC.Cpno IS NOT NULL
     --(4), 外连接
    /*
    SELECT  Student.Sno,Sname,Ssex,Sage,  
                    Sdept,Cno,Grade
    FROM     Student, SC
    WHERE  Student.Sno = SC.Sno(*) --???*/
     --(5), 复合条件连接
    SELECT Student.Sno, Sage, Ssex, Sname
    FROM Student, SC
    WHERE Student.Sno = SC.Sno AND 
    SC.Cno = 'c02' AND SC.Grade > 70
     --(6), 多表连接
    SELECT Student. Sno, Sname, Cname, Grade
    FROM Student, SC, Course
    WHERE Student.Sno = SC.Sno AND SC.Cno = Course.Cno
             --2011-06-23-20:22--

  • 相关阅读:
    计算机安装Fedora操作系统——Win10+Linux双系统
    性能测试——压力测试指标
    系统吞吐量(TPS)、用户并发量、性能测试概念和公式
    在 数学吧 看到一个 极限题
    东方学帝 和 K歌之王 的 科学观 和 科学方法 的 对比
    走一走 欧拉先生 走过 的 路
    推导一个 经典物理 里 的 黑洞 的 坍缩半径
    四色定理 太简单了 , 来 玩 n 维空间 里 的 x 色定理
    今天看到了一个 求 平面图形 Centroid 的 办法
    记录一下这几天的一些讨论
  • 原文地址:https://www.cnblogs.com/robbychan/p/3787104.html
Copyright © 2011-2022 走看看