• sql面试学到新内容


    1.事物的保存点

      MYSQL可以让我们对事务进行部分回滚,就是在事务里调用SAVEPOINT语句来设置一些命名标记。如果想要回滚到那个标记点位置,需要使用ROLLBACK语句来指定哪个保存点。

    mysql> truncate table d;
    
    Query OK, 0 rows affected (0.02 sec)
    
    mysql> start transaction;
    
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> insert into d values(1);
    
    Query OK, 1 row affected (0.01 sec)
    
    mysql> savepoint my_savepoint;
    
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> insert into d values(2);
    
    Query OK, 1 row affected (0.00 sec)
    
    mysql> rollback to savepoint my_savepoint;
    
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> insert into d values(3);
    
    Query OK, 1 row affected (0.00 sec)
    
    mysql> commit;
    
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> select * from d;
    
    +------+
    
    | name |
    
    +------+
    
    | 1   |
    
    | 3   |
    
    +------+
    
    2 rows in set (0.00 sec)

    2.SQL Server 排序函数

      ROW_NUMBER:

        根据组显示每一条记录在该组中出现的位置,例如:若有两个第一名,则这两个第一名在一组内排名为1、2,下一组的排序仍从1开始,依次类推。

      RANK:

        在结果集中每一条记录所在的排名位置,但排名可能不连续,例如:若同一组内有两个第一名,则该组内下一个名次直接跳至第三名。

      DENSE_RANK:

        功能与Rank相似,但排名的数值是连续的,例如:若同一组内有两个第一名,则该组内下一个名次为第二名

      NTILE:

        根据指定的分组数量将结果集分区,并记录其在组中的位置。可以对结果集的数据排序后,按照指定的数量把结果集分成N组,并给予每组一个组编号,分组的方式很简单,将结果集的总记录数除以N,若有余数M,则前M组都多增一条记录,因此,并非所有的组都有相同的记录数,但多记录的组最多只有一条记录。

    3.SQL Server 其他函数

      pivot:行转列函数

      over :开窗函数

      partition by:分析函数

    参考文章

      1.在SQL Server 事务中使用Savepoints来保存提交点

      2.Sql 四大排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介

       3.SQL Server 2012 开窗函数

       4.SQL中partition关键字的使用

       5.行转列:SQL SERVER PIVOT与用法解释

       6.left join on 后and 和 where 的区别

     
     
  • 相关阅读:
    webpack 知识点
    freemarker知识点
    js知识点
    oracle 安装介绍
    CentOS 7.4x64 系统安装完成后配置
    centos 7 互信【ssh】
    spark与mapreduce的最大区别和spark原理
    最简单的搭建SpringBoot框架步骤
    simplify(s)
    ezplot函数
  • 原文地址:https://www.cnblogs.com/sdadx/p/8536862.html
Copyright © 2020-2023  润新知