SQL查询语句(一)

    一、查询语句格式

        SELECT [ALL|DISTINCT] [表名.]{*|列名|表达式[AS 新列名]}

        [INTO :主变量[,:主变量]…]

        FROM 表名[表别名],

        [WHERE 条件表达式|子查询]

        [GROUP BY 列名, …

         [HAVING 分组表达式]]

        [{UNION|INTERSECT |EXCEPT}SELECT…FROM…]

        [ORDER BY 列名|列序号[ASC|DESC], …]

    二、单表查询

     

        Where 子句——运算符 

        比较:<<=>>==<>not + ~

        确定范围:

           Between A and BNot Between A and B

        确定集合INNOT IN

        字符匹配LIKENOT LIKE

        空值IS NULLIS NOT NULL

        多重条件:ANDORNOT

        1----

        SELECT Sname NAME, 'Year of Birth:' BIRTH,

               2003-sage BIRTHDAY,  LOWER(Sdept) DEPARTMENT

        FROM    Student;  

        2--- 选择表中的行

        消除重复行: DISTINCT    (缺省为ALL)

        SELECT    DISTINCT Sno FROM      student 

        3---  BETWEEN  AND

        求年龄在~ (, 22)之间的学生名及年龄(或不在~之间)

        SELECT Sname, Sage    FROM    Student

        WHERE   Sage BETWEEN 18 AND 22 (WHERE Sage>=18 AND Sage<=22)

        4--- IN or NOT IN

        SELECT    *    FROM     Student

        WHERE    Sdept IN (‘IE’, ‘CS’, ‘MA’)(WHERE Sdept=‘IE’OR Sdept=‘CS’OR Sdept=‘MA’)

     

        5--- Like

        格式:

           [NOT] LIKE ‘匹配串[ESCAPE ‘换码字符]

           %: 表示任意长度()的任意字符

           _: 表示单个的任意字符

           ESCAPE ‘换码字符: 匹配串中换码字符(转义符)之后的字(%,__),被定义为普通字符(不作通配符用)

        列出课程名称中带有_’的课号及课名:

            Select cno cnameFrom Course  Where cname LIKE%"_%escape ‘"’

        求以DATA_BASE’开头且倒数第五个字符为S’的课程名

            SELECT Cname  FROM Course  WHERE Cname LIKE ‘DATA"_BASE%S_ _ _ _’ESCAPE’"’

         6--- NULL

        SELECT   Sno, Cno  FROM  SC WHERE   Grade IS NULL;

     

     

        7--- 分组与组函数

        只有出现在Group By子句中的属性,才可出现在Select子句中

        组函数的使用:

           COUNT([DISTINCT|ALL] *|列名)

           SUM([DISTINCT|ALL] 列名)

           AVG([DISTINCT|ALL] 列名)

           MAX([DISTINCT|ALL] 列名)

           MIN([DISTINCT|ALL] 列名)

        组函数可用于SELECT子句中的目标列表中或在HAVING子句的分组表达式中用作条件。

        对分出的每一组用HAVING进行筛选,筛选条件要用到组函数。

        Having Where的区别:

            Where 决定哪些元组被选择参加运算作用于关系中的元组

            Having 决定哪些分组符合要求作用于分组

       

        例:统计各系学生的人数。

           Select sdeptcount(*) as stu_count

           From Student

           Group By sdept

        求选修了课程的学生人数

           SELECT COUNT(DISTINCT Sno) FROM SC

        例:求选修各门课的人数及平均成绩

           SELECT Cno, COUNT(Sno), AVG(GR) FROM    SC GROUP BY Cno

        例:求选修课程在2门以上且都及格的学生号及总平均分

           SELECT Sno, AVG(Grade) FROM SC GROUP BY Sno HAVING COUNT(Cno)>2 AND MIN(Grade)>=60

        8--- 排序

        用ORDER BY子句对查询结果按照一个或多个列的值进行升/降排列输出,升序为ASC;降序为DESC,空值将作为最大值排序

      

    • 0
      点赞
    • 0
      收藏
      觉得还不错? 一键收藏
    • 打赏
      打赏
    • 0
      评论
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包

    打赏作者

    Gabanon

    你的鼓励将是我创作的最大动力

    ¥1 ¥2 ¥4 ¥6 ¥10 ¥20
    扫码支付:¥1
    获取中
    扫码支付

    您的余额不足,请更换扫码支付或充值

    打赏作者

    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值