- 存储过程概念,优点
what:存储过程是数据库对象,用于存储用T-SQL编写的程序
why:1)更好的性能。因为sqlserver在它第一次执行时就生成并缓存了存储过程的执行计划。
2)更好的维护和访问。它集中在一个地方,能够使三层架构的实现更加简单(存储过程将组成数据层)
3)安全。sqlserver可以为每一个存储过程设置不同的安全许可;而在c#代码中创建的sql查询,更容易受到sql注入攻击
why:1)更好的性能。因为sqlserver在它第一次执行时就生成并缓存了存储过程的执行计划。
2)更好的维护和访问。它集中在一个地方,能够使三层架构的实现更加简单(存储过程将组成数据层)
3)安全。sqlserver可以为每一个存储过程设置不同的安全许可;而在c#代码中创建的sql查询,更容易受到sql注入攻击
- 视图
what:是虚拟表,实际是一组查询,而不是物理存在的数据表。所以视图嵌套或和视图联接使用可能会造成性能瓶颈
why:1)增加代码重用。特别是联接查询会很方便
2)可以对不同的视图赋予不同的权限
视图是一组查询,
因此比起普通查询没有性能优势,主要是为了代码复用
视图不能索引,也不能有关联的触发器或默认值
许多DBMS禁止在视图查询中使用ORDER BY子句
有的DBMS要求命名返回所有列,如果列是计算字段,则需要使用别名
有的DBMS把视图视为只读的查询,这表示可以从视图检索数据,但不能将数据写回底层表
- 索引概念,优点
what 索引
索引是一种特殊的数据库对象,用来提高数据库操作的整体速度。它通过维护特殊的数据结构来映射已索引表的内容,这将大大加速该表的查找操作
why 索引以及它的弊端
优点:
索引将能够提高从表中读取数据的速度,
缺点:
1)但会降低插入,删除,更新操作的速度,因为使用这些操作,数据服务器不仅需要修改该表,还要修改索引创建的额外的数据结构。在实际的应用程序中,绝大多数的数据库操作都是读取操作,因此使用索引将会明显提高性能
2)占用空间多一些
在一个表中可以创建多个索引,每个索引可以包含一个或多个列。当一个表按某个列创建了索引后,不是行被索引,就是根据该列的值和索引类型被物理索引
对于索引,应该注意以下内容:
2)太多索引会降低数据库性能。通常的做法是,在where,order by 和 group by子句中常用的列,以及常用于表连接、与其他表进行关联的外键列创建索引
3)默认情况下,主题和唯一表列会自动创建索引
- unique和primary Key的异同
共同点
1)都用来确保数据的唯一性
2)unique和primary key都会自动创建索引
不同:
1)不同于主键,unique不能应用于多字段
2)每个数据表可以有多个unique约束
3)unique允许null值,但只允许一个null值
2)unique和primary key都会自动创建索引
不同:
1)不同于主键,unique不能应用于多字段
2)每个数据表可以有多个unique约束
3)unique允许null值,但只允许一个null值
- null表示“未定义”或“没有任何输入”,与空字符串(零长度字符串)是两个不同的概念。在T-SQL中用is null来判断,在.net中用DBNULL.Value来判断
- 写一条SQL查询语句将表中年龄为空的值更新为25。不使用(update)
select isnull(age, 25)