数据库理论知识及面试题

数据库部分 

1、什么是sql注入,如何防止?

  sql注入:就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。简单说就是sql拼接。

  如何防御:

    a:删除用户输入内容中的所有连字符

    b:对于用来执行查询的数据库帐户,限制其权限。用不同的用户帐户执行查询、插入、更新、删除操作。由于隔离了不同帐户可执行的操作

    c: 用存储过程来执行所有的查询。SQL参数的传递方式将防止攻击者利用单引号和连字符实施攻击

    d:查用户输入的合法性,确信输入的内容只包含合法的数据

2、sql如何优化?

  a:要显示什么字段, 就查询什么字段

  b: 建立索引

  c:减少对表的查询

  d:分表分库

3、左连接与有连接的区别?

      左连接:只要左边表中有记录,数据就能检索出来,而右边有的记录必要在左边表中有的记录才能被检索出来

   右连接:右连接是只要右边表中有记录,数据就能检索出来

4、union 与union all区别

  union 将两个表连接后删除其重复的项; 
  union all 将两个表连接都不删除其重复的项。 

5、什么是jquery? jquery的选择器有几种?
  1、基本选择器
  2、层次选择器
  3、过滤选择器
  4、表单选择器

 

一.SQL Server查询第31到40条数据?

大致分为两种情况:ID连续和ID不连续。

1.ID连续的情况:select * from A where ID between 31 and 40
2.ID不连续的情况:

(1)两次对表查询,效率较低。
  select top 10 * from A where ID not in (select top 30 ID from A)
(2)外层查询没有对表A进行查询,效率提高。
  select top 10 * from (select top 40 ID from A order by ID) as a order by a.ID desc 
(3)ROW_NUMBER()函数效率更高,SQL2005以上版本可用。
  select * from(select *,ROW_NUMBER() over(order by ID)as 'userID' from A) as a where a.userID between 31 and 40

posted @ 2017-09-13 13:10  时光博客  阅读(408)  评论(0编辑  收藏  举报