• 大家跟我一起涨知识(高级查询与分页)


     高级查询

    Select StuId,StuName,
      SelCourses=(Select Count(CourseId) From tblScore t1 Where t1.StuId=s1.StuId),
      SumScore=(Select Sum(Score) From tblScore t2 Where t2.StuId=s1.StuId)  
       From tblStudent s1

    嵌套查询

    select a.username,numa,numb from 
       (
       select username,count(username) 
       as numa from a       
      where isdel=0 group by username order by numa desc) a,   
        (select username,count(username) as numb from a   
       where isdel=0 and isx=1 group by username) bwhere a.username = b.username

    相关子查询

    SElECT booksName,press,classNo,price 
     FROM Books As a  WHERE price > 
     (   
        SELECT AVG(price)  
         FROM Books AS b    
         WHERE a.classNo=b.classNo )
      GO

    详解:

     先将Books表中的第一条记录的“class”的值“2”代入子查询中,子查询变为:

          SELECT AVG(price)
              FROM Books AS b
             WHERE b.class=2

      子查询的结果为该类图书的平均价格,所以外部查询变为:

          SElECT booksName,press,classNo,price

             FROM Books As a
           WHERE 价格 > 34

     如果WHERE条件为True,则第一条结果包括在结果集中,则否不包括。对Books表中的所有行运行相同的过程,最后形成的结果集及最后返回结果。

    分页

    SQL分页语句

    说明,页大小:每页的行数;页数:第几页。使用时,请把“页大小”和“页大小*(页数-1)”替换成数字。

    方法1:

    SELECT TOP 页大小 *
    FROM table1
    WHERE id NOT IN
              (
              SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id
              )
    ORDER BY id

    方法2:

    SELECT TOP 页大小 *
    FROM table1
    WHERE id >
              (
              SELECT ISNULL(MAX(id),0) 
              FROM 
                    (
                    SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id
                    ) A
              )
    ORDER BY id

    方法3:

    SELECT TOP 页大小 * 
    FROM 
            (
            SELECT ROW_NUMBER() OVER (ORDER BY id) AS RowNumber,* FROM table1
            ) A
    WHERE RowNumber > 页大小*(页数-1)

    SELECT查询语句是由七个子句构成,其中SELECT和FROM子句是一个完整SELECT查询语句必须要有的。    
    (1)
    SELECT子句
    列出所有要求SELECT语句进行检索的数据项,这些项可能取自数据库中关系表的列,也可以是SQL在执行查询时进行计算的表达式。这里的ALL和DISTINCT选项,表示查询出的结果中是否容许有内容重复的行出现,缺省时是ALL项,表示容许有重复的行出现,而*则表示查询出所指定关系表中所有的列。
     
    (2)FROM子句 
      FROM子句列出包含所要查询的数据关系表。 
     
    (3)WHERE子句
       
    WHERE子句告诉SQL只查询某些关系表中满足一定要求的行的数据,查询要求由WHERE子句中的查询条件确定。
     
    (4)GROUP BY子句   
    GROUP BY子句指定当前查询是汇总查询,即不是对根据每行产生一个查询结果,而是对相似的行进行分组,然后再对每组产生一个汇总查询的结果。
      
    (5)HAVING子句   
    HAVING子句告诉SQL只对由GROUP BY所得到的某些行组的结果进行过滤,选择出满足分组条件的分组。 
     
    (6)ORDER BY子句   
    ORDER BY子句确定是否将查询出的结果按一列或多列中的数据进行排序,缺省时是不排序的。 
     
    (7)INTO子句   
    INTO子句确定是否将查询出的结果存入一张新的关系表中,缺省时只将查询出现的结果显示在屏幕上。这是非标准SELECT语句中的子句,但目前绝大多数实际应用的SQL数据库系统的SQL语言提供了这一选项

    更多详情请关注 http://www.cnblogs.com/baixingqiang/
  • 相关阅读:
    2020年3月15日python学习笔记——变量的创建过程 垃圾回收机制 变量的指向关系
    2020年3月14日python学习笔记——学习实操的程序(第一小章)--------------------重要
    2020年3月14日python学习笔记——break ,continue,while ...else....
    2020年3月14日python学习笔记——流程控制语句(if else ,while)
    2020年3月14日python学习笔记——算数运算、比较运算、逻辑运算、赋值运算
    2020年3月14日python学习笔记——列表 输入命令符
    Ubuntu 安装mysql和修改字符编码
    死锁与递归锁
    守护线程
    线程
  • 原文地址:https://www.cnblogs.com/baixingqiang/p/5259220.html
Copyright © 2020-2023  润新知