Asp.Net教程,WinForm教程,Asp.Net MVC,vs2008教程,vs2010教程,Silverlight技术,源码下载,Asp.Net视频教程
全站热门标签
vs2010 Silverlight 存储过程 水晶报表 ADO.NET JavaScript LINQ AjaxPro DataGridView 面向对象 Extjs GridView XML DevExpress HTML教程 Oracle jQuery 分页 GDI+ Visual C++2010 MySQL Office2010 WPF MVC Dojo WCF4.0 VB.NET Sql2005 textbox cookie WCF WinForm Discuz!NT SQL经典语句 T-SQL checkbox ASPxGridView F# asp.net SQL VS2008新特性 DropDownList Access TreeView Ajax VS2008 页面执行时间 Flex 字符串 回调 VB2005 DataSet C#时间 ASP.NET性能优化 用户在线检测 动画
新闻动态面试题及技巧

.NET面试题整理-数据库篇

时间:2010-04-20 20:02来源:未知 作者:admin 点击:

1、索引

好处:(1)提高查询表内数据的速度。(2)表与表之间的连接速度加快。
坏处:(1)创建索引和维护索引都会消耗时间。(2)会占用一定物理空间,占用物理空间过多会影响整个SQL Server性能。
建立索引的原则:
(1) 主键的数据列一定要建立索引,因为主键可以加速定位到表中的某一行。
(2) 外键的数据列一定要建立索引,外键列通常用于表与表之间的连接,在其上创建索引可以加快表间的连接速度。
(3) 对于经常查询的数据列最好建立索引。
索引分类:(1)聚集索引。(2)非聚集索引。(3)唯一索引。

2、视图

优点:
(1) 数据保密,对不同的用户定义不同的视图,使用户只能看到与自己相关的数据。
(2) 简化查询操作。
(3) 保证数据的逻辑独立性。
缺点:某些视图是不能更新数据的,union、group by、avg、sum、max、distinct等及连接表的视图。

3、存储过程

存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后在该程序中就可以调用多次。如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。
主要优点有如下三点:
(1)通过本地存储、代码预编译和缓存技术,提高数据操作的性能。
(2)增加了可维护性。
(3)增强了安全性。

4、触发器

触发器(trigger)是个特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。触发器的主要好处在于它们可以包含使用 Transact-SQL 代码的复杂处理逻辑。虽然触发器功能强大,能轻松可靠地实现许多复杂的功能,但必须慎用触发器,因为滥用会造成数据库及应用程序的维护困难。

5、游标

游标(Cursor)是处理数据的一种方法,为了查看或者处理结果集中的数据,游标提供了在结果集中一次以行或者多行前进或向后浏览数据的能力。我们可以把游标当作一个指针,它可以指定结果中的任何位置,然后允许用户对指定位置的数据进行处理。
游标包含两个部分:游标结果集(定义该游标得SELECT语句返回的行的集合),游标位置(指向这个结果集某一行的当前指针)。
游标的优点:
1.允许程序对由查询语句Select返回的行集合中的每一行执行相同或不同的操作,而不是对整个行集合执行同一操作。
2.提供基于游标位置的表中的行进行删除和更新的能力。
3.游标实际上是作为面向数据库集合的数据库管理系统(DBMS)和面向行的程序设计之间的桥梁。

6、什么是事务?什么是锁?

事务:被绑定在一起作为一个逻辑工作单元的SQL语句分组,如果任何一个语句操作失败那么整个操作就会失败,以后操作就会回滚到操作前状态,或者是上一个节点。为了确保要么执行,要么不执行,就可以使用事务。要将有组语句作为事务考虑,就需要通过ACID测试,即原子性,一致性,隔离性和持久性。
 锁:在所以的DBMS中,锁是实现事务的关键,锁可以保证事务的完整性和并发性。与现实生活中锁一样,它可以使某些数据的拥有者,在某段时间内不能使用某些数据或数据结构。当然锁还分级别的。
 

7、存储过程和函数的区别

1.  一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。
2.  对于存储过程来说可以返回参数,而函数只能返回值或者表对象。
3.  存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用,由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。
4.  当存储过程和函数被执行的时候,SQL Manager会到procedure cache中去取相应的查询语句,如果在procedure cache里没有相应的查询语句,SQL Manager就会对存储过程和函数进行编译。

8、维护数据库的完整性和一致性,你喜欢用触发器还是自写业务逻辑?为什么?

尽可能使用约束,如check,主键,外键,非空字段等来约束,这样做效率最高,也最方便。其次是使用触发器,这种方法可以保证,无论什么业务系统访问数据库都可以保证数据的完整新和一致性。最后考虑的是自写业务逻辑,但这样做麻烦,编程复杂,效率低下。
 

9、什么是内存泄漏?

一般我们所说的内存泄漏指的是堆内存的泄漏。堆内存是程序从堆中为其分配的,大小任意的,使用完后要显示释放内存。当应用程序用关键字new等创建对象时,就从堆中为它分配一块内存,使用完后程序调用free或者delete释放该内存,否则就说该内存就不能被使用,我们就说该内存被泄漏了。

10、SQLSERVER服务器中,给定表 table1 中有两个字段 ID、LastUpdateDate,ID表示更新的事务号, LastUpdateDate表示更新时的服务器时间,请使用一句SQL语句获得最后更新的事务号

SELECT ID
FROM table1
WHERE LastUpdateDate =
(
SELECT MAX(LastUpdateDate)
FROM table1
)

11、 写出一条Sql语句: 取出表A中第31到第40记录(SQLServer, 以自动增长的ID作为主键,  注意:ID可能不是连续的)

解1: select top 10 * from A where id not in (select top 30 id from A)
解2:
select top 10 *
from A
where id >
(
select max(id)
from (select top 30 id from A )as A
)

12、如下的两个表,如下图所示,写出执行图下SQL语句的结果

 


  SELECT *  

 
FROM Table1 a,Table2 b  

 
WHERE a.id = b.id 

 


 

13、为管理岗位业务培训信息,建立3个表:
S (S#,SN,SD,SA)    S#,SN,SD,SA 分别代表学号、学员姓名、所属单位、学员年龄
C (C#,CN )    C#,CN 分别代表课程编号、课程名称
SC ( S#,C#,G )    S#,C#,G 分别代表学号、所选修的课程编号、学习成绩

1. 使用标准SQL嵌套语句查询选修课程名称为 税收基础 的学员学号和姓名

Select S#,SN FROM S
Where S# IN
(
Select [S#]
FROM C,SC
Where C.[C#]=SC.[C#]
AND CN=N'税收基础' --加 N 就表示字符串用 Unicode 方式存储
)

2. 使用标准SQL嵌套语句查询选修课程编号为'02'的学员姓名和所属单位

SELECT S.SN,S.SD
FROM S,SC
WHERE S.[S#]=SC.[S#]
AND SC.[C#]='02'
3. 使用标准SQL嵌套语句查询不选修课程编号为’02’的学员姓名和所属单位
SELECT SN,SD
FROM S
WHERE [S#] NOT IN
(
SELECT [S#]
FROM SC
Where [C#]='02'
)
4. 使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位
SELECT SN,SD
FROM S
WHERE S# IN
(
SELECT SC.S#
FROM SC RIGHT JOIN C ON SC.C# = C.C#
GROUP BY SC.S# --在结果集中以学生分组,分组后的 SC.C#选课数=C.C#课程数 即为全部课程
HAVING COUNT(distinct(SC.C#)) --注意:一个学生同一门课程可能有多条成绩记录,需要distinct
=( select count(*) from C ) --注意:HAVING条件不能用COUNT(distinct(SC.C#)) = COUNT(distinct(C.C#)
)--子查询获得选修全部课程的学生学号
5. 查询选修了课程的学员人数
Select 学员人数=COUNT(DISTINCT [S#]) FROM SC
6. 查询选修课程超过5门的学员学号和所属单位
Select [S#],SD
FROM S
Where [S#] IN
(
Select [S#]
FROM SC
GROUP BY [S#]
HAVING COUNT( DISTINCT [C#]) > 5
)

 

(责任编辑:admin)
Tags:面试题
责任编辑:admin
返回顶部
------分隔线----------------------------
推荐内容
骆驼户外男 真皮磨砂日常休闲鞋 低帮 2011秋冬新款 专柜正品特价 骆驼户外男 真皮磨砂日常休闲鞋 低帮 2011秋冬新款 专柜正品特价
  • Asp.net面试题(二)

    01.{DotNet题目}下列变量的赋值,正确的是:( )(选择2项) A )int myInteger=17; B ) string myString = \...

  • 谈谈.Net技术面试

    谈谈.Net技术面试...

  • 一道关于实例化顺序的C#面试题

    一道关于实例化顺序的C#面试题...

  • 上海某软件公司.Net笔试题

    上海某软件公司.Net笔试题...

  • 数据结构若干经典问题和算法

    一、迭代法 迭代法是用于求方程或方程组近似根的一种常用的算法设计方法。设方程为f(x)=0,用某种数学方法导出等价的形式x=g(x),然后按以下步骤执行: (1...

  • 如何写一份好的工程师简历

    最近三年作为 Google(谷歌)的软件工程师,我每周会帮人事部门审查简历,决定要不要给他们面试。Google 这几年的发展让很多许多优秀的工程师都前来申请。到...

  • 面试技巧:16个经典面试问题回答思路

    问题一:请你自我介绍一下 思路: 1、这是面试的必考题目。 2、介绍内容要与个人简历相一致。 3、表述方式上尽量口语化。 4、要切中要害,不谈无关、无用的内容。...

  • 继"一题比较刁的面试题" 后,sliverlight实现

    2009年11月19日来到苏州热线面试(苏州比较大的门户网站) 面试结束后带回去了一个题、 要求: 1.任何语言 任何形式(web,winform,flash,...

  • 一题比较刁的面试题

    昨天晚上看到群里在聊面试题,回想最近几个月的面试经历,很是感慨。 10月底从昆山回到苏州。直到11月底才找到工作,跑到哪都是有没有工作经验,没有。。。好吧,回去...

  • 一份雅虎公司C#笔试题

    Question 1. (单选) 在计算机网络中,表征数据传输可靠性的指标是 1. 传输率 2. 误码率 3. 信息容量 4. 频带利用率 Question 2...

  • C#常见问题及中等程序员面试常见题

    1 Thread和Process之间有什么区别?.NET新引入了Application Domain的概念,这样他们三个之间有什么区别?引入了Applicati...

  • .NET面试题整理-数据库篇

    1、索引 好处: (1)提高查询表内数据的速度。(2)表与表之间的连接速度加快。 坏处: (1)创建索引和维护索引都会消耗时间。(2)会占用一定物理空间,占用物...

  • .NET面试题总结一

    1:关于ASP.NET中的代码隐藏文件的描述正确的是: C A.Web窗体页的程序的逻辑由代码组成,这些代码的创建用于与窗体交互。编程逻辑唯一与用户界面不同的文...

  • 2010年.NET面试题整理之基础篇

    1、什么是面向对象 面向对象OO = 面向对象的分析OOA + 面向对象的设计OOD + 面向对象的编程OOP; 通俗的解释就是万物皆对象,把所有的事物都看作一...

  • 某外企SQL Server面試題

    Question 1:Can you use a batch SQL or store procedure to calculating the Number ...