SQL语句

作者: Joe_IT | 来源:发表于2019-04-01 13:18 被阅读0次

    投影运算:

    SQL查询语句:
    1.SELECT 第三步
    2.FROM 第一步
    3.WHERE 第二步

    消除重复列:

    SELECT DISTINCT 列名
    FROM 表名
    

    选择所有列 SELECT*

    给某列取新的名字:

    SELECT institute (AS) 所属学院
    
    SELECT lower(courseName)课程名,courseHour/16 周课时
    

    选择运算:

    1.比较运算:
    2集合查询:(NOT)IN
    3.空值查询:IS null
    4.字符匹配查询:LIKE
    5.逻辑查询:AND,OR,NOT
    6.范围查询:(NOT)BETWEEN....AND...

    WHERE year(getdate())-year(birthday)>=19
    
    WHERE courseNo IN('001','005','003')
    
    WHERE className LIKE '%会计%'
    
    WHERE studentName LIKE '王_ _'
    

    例如:会计08_01班 要用转义字符:

    WHERE className LIKE '08\_%' ESCAPE '\'
    #也行
    

    排序运算

    ORDER BY native DESC(降序)
    
    ORDER BY classNo,month(birthday) DESC
    

    默认ASC升序

    FROM(SELECT*FROM Student WHERE sex='女')a
    或FROM(SELECT*FROM Student WHERE sex='女')AS a
    

    连接查询

    1.等值连接(=)

    WHERE Student.classNo=Class.classNo 
    

    简化:

    FROM Student AS a,Class AS b
    WHERE a.classNo=b.classNo
    

    不同表的同属性名,要加上表名区分,否则不用。

    自然连接:在等值连接的基础上,消除重复列

    2.非等值连接

    自表连接

    例子:搜和“张三”一个班的所有同学生日

    SELECT a.birthday
    FROM Student a,Student b
    WHERE b.studentName='张三' AND a.classNo=b.classNo
    

    外连接(没有满足的,也显示出来)

    FROM子句中,写在左边的表叫左关系,右边的叫右关系

    1.左外连接

    FROM Class a LEFT OUTER JOIN Student b ON a.classNo=b.classNo
    

    2.右外连接
    RIGHT OUTER JOIN
    3.全外连接
    FULL OUTER JOIN

    聚合查询

    聚合函数:
    1.count

    SELECT count(*)学生人数
    FROM Student
    
    SELECT count( DISTINCT  studentNo)学生人数
    FROM Score
    

    2.sum
    3.avg
    4.max
    5.min

    分组聚合

    1.GROUP BY
    2.HAVING(不可单独用)

    GROUP BY studentNo
    HAVING avg(score)>=80

    不对:WHERE score=max(score)
    改正:WHERE score=(SELECT max(score) FROM Score)

    嵌套子查询

    1.相关子查询
    2.非相关子查询(子查询的结果不依赖于上层查询)

    使用IN:
    从成绩表中筛选学生:
    WHERE Student.studentNo IN(SELECT Score.studentNo FROM Score)

    使用比较运算符:
    1.>ANY <ANY <>ANY !=ANY 某
    2.>ALL <ALL <>ALL !=ALL

    =ANY等价IN
    !=ALL等价 NOT IN

    ANY可以用SOME替代

    使用EXISTS:

    集合运算

    并UNION
    交INTERSECT(不支持)
    差EXCEPT(不支持)

    要求列数一样,对应列的数据类型一致

    相关文章

      网友评论

          本文标题:SQL语句

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