java后端之美-ASP.netT-Sql

2018年9月21日.NET笔试面试题

2018-09-20  本文已影响532人  墨弄笔

存储过程跟SQL语句比较,各有什么优缺点?

存储过程有以下优点

  1. 由于应用程序随着时间推移会不断更改,增删功能,SQL过程代码会变得更复杂,存储过程为封装此代码提供了一个替换位置。
  2. 存储过程可以用于降低网络流量,存储过程代码直接存储于数据库中,所以不会产生大量SQL语句的代码流量。
  3. 使用存储过程使您能够増强对执行计划的重复使用,由此可以通过使用远程过程调用(RPC)处理服务器上的存储过程面提高性能。RPC封装参数和调用服务器端过程的方式使引擎能够轻松地找到匹配的执行计划,并只需插入更新的参数值。
  4. 可维护性高,更新存储过程通常比更改、测试以及重新部署程序集需要较少的时间和精力。
  5. 代码精简一致,一个存储过程可以用于应用程序代码的不同位置。
  6. 增强安全性,如通过向用户授予对存储过程(而不是基于表)的访问权限,它们可以提供对特定数据的访问,在一定程度上可以提高代码安全,防止SQL注入。Sqlparameter类指定存储过程参数的数据类型,作为深层次防御性策略的一部分,可以验证用户提供的值类型。

存储过程的缺点有以下两点

  1. 如果更改范围大到需要对输入存储过程的参数进行更改,或者要更改由其返回的数据,则仍需要更新程序集中的代码以添加参数、更新GetValue()调用等,这时候估计比较烦琐了。
  2. 可移植性差,由于存储过程将应用程序绑定到SQL Server,因此使用存储过程封装业务逻辑将限制应用程序的可移植性。如果应用程序的可移植性在用户的环境中非常重要,则将业务逻辑封装在不特定于RDBMS的中间层中可能是一个更佳的选择。

分析


写一条SQL语句筛选出每门课程的前两名

在SQL Server数据库中,有一个数据表grade(学生成绩),它有3个字段:

字段名 类型 说明
sid int 主键,学生编号
cid int 课程编号
ac int 成绩

写一条SQL语句,筛选出每门课程的前两名的学生编号、课程编号、成绩并列序。

解答

select a.sid, a.cid, a.ac from grade as a 
where a.sid in 
(select top 2 sid from grade where cid=a.cid order by ac desc)

分析


查询表A中存在username字段值重复3次以上的字段。

解答

select username from
(select count(username) as num, username from A group by username) as t 
where num < 3

分析

(select count(username) as num, username from A group by username) as t 
上一篇 下一篇

猜你喜欢

热点阅读