sql知识整理(1)

仓储过程概念,优点

**what:存储过程是数据库对象,用于存储用T-SQL编写的顺序

why:1)更好的性质。因为sqlserver在它们首先次实践时即变化并缓存了蕴藏过程的推行计划。
      
2)更好的保安和走访。它汇集在一个地方,能够如三叠架构的落实更加简约(存储过程用成数据层)
      
3)安全。sqlserver可以吗各个一个囤过程设置不同之安康批准;而在c#代码中创造的sql查询,更便于被sql注入攻击**
  


视图

what:是虚拟表,实际是一样组查询,而休是情理存在的数据表。所以视图嵌套或和视图联接使用可能会见招性能瓶颈

why:1)增加代码用。特别是搭查询会很方便

 
       2)可以对两样之视图赋予不同的权力

视图是同组查询,因此于打普通查询没有性优势,主要是为代码复用

视图不可知引得,也无能够起提到的触发器或默认值

过剩DBMS禁止在视图查询中动用ORDER
BY子句

有DBMS要求命名返回所有列,如果列是测算字段,则用采取别名

一对DBMS把视图视为只读的查询,这象征可以打视图检索数据,但切莫克以数据形容回底层表


目概念,优点

what
索引

目是一致栽非常之数据库对象,用来增长数据库操作的共同体进度。它通过维护非常之数据结构来映射已索引表的内容,这将大大加快该表的探寻操作

why
索引以及她的流弊

优点:

 索引将能够增进从表中读取数据的速,

缺点:

1)但会下滑插入,删除,更新操作的速度,因为使用这些操作,数据服务器不仅需要改该表,还要修改索引创建的额外的数据结构。在事实上的应用程序中,绝大多数的数据库操作都是读取操作,因此使用索引将会明白加强性能

2)占用空间多有

每当一个表中可以创建多独目录,每个索引可以分包一个或多单列。当一个表按某个列创建了目录后,不是行被索引,就是冲该列的价与索引类型被物理索引

对于索引,应该注意以下内容:

  • 目可以加快数据库查询操作,但还要会放慢更改数据库的操作(删除、更新和插操作)。
  • 太多索引会降低数据库性能。通常的做法是,在where,order
    by 和 group
    by子句被常用的排,以及常用于表连接、与其余表进行关联的外键列创建索引
  • 默认情况下,主题和唯一表列会自动创建索引

unique和primary
Key的异同

共同点

1)都用于保数量数据的唯一性
2)unique和primary key都见面活动创建索引
不同:
1)不同于主键,unique不能够采取被多字段
2)每个数据表可以发多单unique约束
3)unique允许null值,但但同意一个null值


。.NET和SQL
Server中“空值”辨析
初学数据库编程我们或会见来局部对“空值”的谜,比如通过编程新建的一个表中所有数据全显示也<NULL>,手动添加并删除文字后而
变成了空;一个字符串类型的字段,明明无填值,却未抵””;用ADO.NET从数据库中取值,每遇有<NULL>的就算差……这亟需
我们正确认识.NET和SQL Server中几乎种植不同之“空值”。
 
1、真正的空值,也便是“没有输入的价值”,可以出现在大部分档次的字段中(如果没别的约束原则),SQL
server中象征也null,显示为<NULL>,手工在SQL
server企业管理器中输入的方是随Ctrl+0。它以.NET中对应System.DBNull.Value。在T-SQL命令中,判断一个价值是不
是空值,要因此“is null”而不是“=
null”;处理空值有个ISNULL函数,它用指定的价替换null。用ADO.NET从数据库得到的空值无法活动转化为空字符串或Nothing,
须手动检测:如果博System.DBNull.Value,则予以给数对象Nothing或外由定义的发含义之价值。
 
2、空字符串(零长度字符串),只出现在字符串类型(如nvarchar)的字段中,SQL
server中表示为””,显示也空,手工在SQL
server企业管理器中输入时清空一个单元格即可。它于.NET中针对应System.String.Empty,也即是咱常常因此底””。在T-SQL命
令中拍卖空字符串和拍卖一般的字符串没什么区别。用ADO.NET从数据库得到的空字符串也跟一般的字符串没什么区别。
 
相关的概念还有VB.NET中的Nothing和呼应于C#.NET中之null(注意这个null是C#.NET中的null而不SQL
Server中null),它们当.NET中凡象征未引用任何对象的亏欠引用的值,在传播SQL
server时,根据不同的上下文环境,可能存为真正的空值(比如当创新一个字符串类型的字段值时),也恐怕调用在SQL
server中于定义的默认值(比如传为一个有默认值的存储过程参数),也或坐无法进展类型转换而引发.NET异常。因此在就此ADO.NET向SQL
server中储存数据经常一旦慎用Nothing。

null表示“未定义”或“没有另外输入”,与空字符串(零长度字符串)是片只不同的概念。在T-SQL中之所以is
null来判定,在.net中之所以DBNULL.Value来判断


描绘一条SQL查询语句以表中年龄也空的价更新为25。不采取(update)

select
isnull(age, 25)

相关文章