sql数据库面试题文库

sql数据库面试题文库

ID:6615800

大小:30.50 KB

页数:8页

时间:2018-01-20

sql数据库面试题文库_第1页
sql数据库面试题文库_第2页
sql数据库面试题文库_第3页
sql数据库面试题文库_第4页
sql数据库面试题文库_第5页
资源描述:

《sql数据库面试题文库》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、SQL数据库面试题文库SQL数据库面试题文库.txt如果有来生,要做一棵树,站成永恒,没有悲伤的姿势。一半在土里安详,一半在风里飞扬,一半洒落阴凉,一半沐浴阳光,非常沉默非常骄傲,从不依靠从不寻找。SQL数据库面试题1、SQLSREVER中,向一个表中插入了新数据,如何快捷的得到自增量字段的当前值这种情况其实我们经常用到,比如我们新建了一个用户,建立完用户后我们希望马上得到这个新用户的ID,因为我们一般都是把这种用户ID的字段设置成自增长类型的,乍看起来好像没有要得到那个新ID很麻烦,其实sqlserver

2、内置了一些全局的变量,使我们很容易就得到那个新的自增字段的ID,就是使用@@IDENTITY。在一条INSERT、SELECTINTO或大容量复制语句完成后,@@IDENTITY中包含语句生成的最后一个标识值。如果语句未影响任何包含标识列的表,则@@IDENTITY返回NULL。如果插入了多个行,生成了多个标识值,则@@IDENTITY将返回最后生成的标识值。如果语句触发了一个或多个触发器,该触发器又执行了生成标识值的插入操作,那么,在语句执行后立即调用@@IDENTITY将返回触发器生成的最后一个标识值。

3、在具体应用中可以这样来写SQL语句:stringstrSql="INSERTINTO[User]([Name],[LoginName],[Pwd],[RegTime],[IsSuper],[Remark])"+"VALUES(@Name,@LoginName,@Pwd,@RegTime,@IsSuper,@Remark);select@@IDENTITY;";执行的时候直接用command.ExecuteScalar();就可以了,能直接返回该条记录的UserID;解答二:经过实验,得如下结论:select

4、DISTINCT@@IDENTITYasidenfromFaWen解释:上述语句对SQLSERVER的一个会话,也就是一条连接,返回该连接最后一条插入记录得到的自增字段的值。假设有3个程序,分别连接SQLSERVER,有三个连接。3个程序都向同一个表依顺序插入数据,得到的值分别是1、2、3,那么,只要3个程序对SQL的连接还保持着,第一个程序使用上述语句,将得到1,而不是3,第二个程序将得到2,也不是3。第三个程序得到3。因此,用上述语句可以得到自己刚才插入记录的自增字段的值,不怕其它程序的并发插入操作。上

5、述语句中,使用DISTINCT的原因是,虽然返回的值是当前连接插入操作得到的最大值,但返回的相同值的记录有多条。条数等于当前多个连接一共插入的记录数。实验方法:启动三个Queryanalyzer查询分析器,分别执行插入操作后再做上述取自增字段值的操作我利用rs.addnew增加一条记录时,如何同时获取自增1字段ID的当前值,而无须再进行一次查询来获取!因为我立即要用到该ID值,如果在增加记录完毕后再利用selectid进行一次查询无疑会使系统受限,有办法吗?如果你能保证id=行数的话可以用rs.moveen

6、d'当指针在最后一条记录时count是全部行数rs.count2、什么叫做SQL注入,如何防止?请举例说明SQL注入就是在正常的SQL执行语句中恶意插入攻击者想要运行的sql语句,比如,我们有一个方法是这么写的:publicstaticboolLogin(stringloginName,stringpwd){stringstrSql=string.Format("select*from[User]whereLoginName='{0}'andPwd='{1}'",loginName,pwd);...}如果我

7、传给loginname的值是'or1=1--,那么这个sql语句成了select*from[User]whereLoginName=''or1=1--',这样不管我密码输入什么,肯定都是符合条件的。当然这只是最简单的情况,如果我把loginname的值改成'or1=1;deletefrom[user]--,那么后果不堪设想,如果我通过sql来执行netuse相关的命令,就可能在服务器上给自己加一个帐号,这样就逐步可以控制整个数据库所在的服务器。。。这就是sql注入的通常方法和可能的损害。要放置其实也很简单,

8、可以通过至少两个方法来进行:1.最根本的,不实用组合sql的方法,而是通过使用命令参数方式来执行命令,比如我们把sql改成这种方式:stringstrSql="select*from[user]whereLoginName=@LoginNameandPwd=@Pwd";,然后通过sqlcommand来执行它,就可以从根本上解决这个问题。2.控制参数的长度。因为要想进行sql注入的话,需要一定长度的字符串才能执行,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。