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

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

存储过程有以下优点

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

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

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

分析

  • 这道题目考查面试者对存储过程的理解是否深刻,在众多公司的面试中非常常见。
  • 那么什么是存储过程呢?
  • 简单地说,存储过程即将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来,则以后需要数据库提供与已定义好的存储过程功能相同的服务时,只需调用execute即可自动完成命令。
  • 相对于在程序中动态编写SQL语句,存储过程更为方便,编程者只需要专注于程序的业务逻辑,数据库相关的操作可通过调用预先编写好的存储过程实现。

写一条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作为grade表的别名,指派表的别名时,可以使用也可以不便用AS关键字。
  • 如果为表指派了别名,那么在该T-SQL语句中对该表的所有显式引用都必须使用别名,而不能使用表名。
    这里再次使用了IN子句,以获取每门课程已排序过的前两名记录的sid字段。
  • 说明:order by ac desc代表按ac字段(即成绩)排序,并以降序顺序排列。

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

解答

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

分析

  • 本题门考查了GROUP BY子句及聚合函数count的应用。
  • 在如以下代码所示的语句中,通过GROUP BYusername字段分组,获得了表t,其中每条记录有num字段和username字段。
(select count(username) as num, username from A group by username) as t 
  • 说明num字段为执行分组时,通过count函数将username字段相同的记录数计算的值,获得表t后,再次査询其username 字段值,记录必须符合num字段值大于3的条件。
  • 这样,name字段值重复3次以l的记录就被筛选出来了。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,567评论 18 399
  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 31,894评论 2 89
  • 卧在榻上,已不知窗外风雨还晴。我侧目而望,尽是繁花无限。那圆形的雕窗古朴盎然,繁花镶嵌其中更是一幅难以言说的画面。...
    徒步旅行的岁月阅读 145评论 0 0
  • 亚历山德罗.巴里科的《一个人消失在世上》一书我看了三遍。 刚拿到这本书(借的),很快囫囵吞枣地看了一遍。感觉中间的...
    画屏闲展阅读 894评论 9 15
  • 你看啊,痴情总会整夜醉, 你想啊,多情还被浪人睡, 心痛, 难寐, 痛哭, 独醉, 不如没心又没肺。
    Stan的Young阅读 176评论 1 1