首页 > 数据库技术 > 详细

SQL Server笔试准备 Day2

时间:2015-12-26 09:59:11      阅读:245      评论:0      收藏:0      [点我收藏+]

今天着重整理一下SQL Server的理论基础

一、各概念的自我理解(参考:http://www.cnblogs.com/wuzhiming/p/3629589.html)

定义都比较长,面试时也不可能记的全,要有理解,试着用一两句话概括一下各个概念

1、触发器:一种根据条件(事件)执行的存储过程,在项目中没用过,一般业务逻辑用程序来控制,数据库尽量只使用数据存储,不进行业务逻辑。

2、存储过程:一段预编译的SQL语句,因为编译过,所以执行起来比普通SQL快。在项目中主要用于一连串事务性的操作

3、索引:假设一本字典是按拼音排序,目录有拼音和笔划。索引就像目录,聚焦索引就像拼音索引,是物理上有序的,比如我要查L开头的,就知道大概在字典的中部,一张表只有一个聚焦索引,一般是主键。非聚焦索引就像笔划目录,也可以很方便查到相应数据,但物理上是无序的。索引会增加存储空间和降低数据修改的速度,但一般业务上都是对查询的速度要求高,对编辑的速度没那么敏感,而且现在存储设备价格低廉,空间不是问题。

4、约束:数据库有很多约束功能,非空、唯一、主外键、check、触发器等。一般除了必要的一些约束,尽量让数据库只进行数据的存取,不进行太多业务上的逻辑处理。因为业务逻辑不断变化,各项目也可能要共用数据库。

5、事务:有ACID特性(原子性、一致性、隔离性、持久性),要么全成功要么全失败,一般用于转账、出入库等

6、锁:锁定库、表、字段,有各种锁(表锁、行锁、共享锁、更新锁、排它锁等),比较细,有机会再仔细研究一下。项目中常用到的是WITH(NOLOCK),这样不受并发修改的锁影响,但数据可能不准确。

7、视图:把多表连接成一张表。项目中如果有固定的多表连接,可以做成视图,一般还是在程序中处理。

8、游标:像指针一样对查询结果集进行一行一行的处理,一行处理完指向下一行。性能比较差,有时逐条处理数据时会用到。Ado.Net的DataReader就是相当于一个向前只读的游标。只不过DataReader不过把结果集预先全查出来,所以对大数据性能比较好,而指针是要把结果集先查出来,再对结果集一行行处理(不知理解的对不对)

9、NULL:DECLARE @i=INT; 此时@i的值是NULL,而不像C#是0。。。有时没注意会被坑。SQL的可空类型对应的C#是<NULLABLE>,另外,NULL和‘‘(空字符串)是不一样的,而且只能用 IS NULL来判断,=NULL是无效的(但不报错。。。也是一个大坑),为了保险,项目中经常用 ISNULL(xx,‘‘)=‘‘ 之类的进行判断

10、主键外键:由于主键一般聚焦索引,常用自增长ID作主键,插入记录后可用@@IDENTITY获取插入新行的主键值。外键一般用于一对多,比如一个读者,其名下的借书记录。

 

二、各函数

太基本的函数就不列了,整理一些比较常用的

1、NEWID():获取GUID,配合ABS(CHECKSUM(NEWID())),可以在循环中获取随机数

2、RAND():获取随机数,但在循环中只会产生一个,要用NEWID()

3、

 

SQL Server笔试准备 Day2

原文:http://www.cnblogs.com/liuyouying/p/5077549.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!