sql面试学到新内容

Posted 神雕爱大侠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 的区别

 

 

 

 

 

以上是关于sql面试学到新内容的主要内容,如果未能解决你的问题,请参考以下文章

面向面试编程代码片段之GC

经验贴30天完成60多场技术面试,我学到了什么?

经验贴30天完成60多场技术面试,我学到了什么?

Mybatis最全的高质量面试题和答案—3

sql sql里面的代码片段

Java核心技术(应对面试)