sql知识整理(一)

积存进程概念,优点

**what:存款和储蓄进度是数据库对象,用于存款和储蓄用T-SQL编写的主次

why:一)更加好的性格。因为sqlserver在它首先次施行时就变更并缓存了仓库储存进度的执行安排。
      
二)更加好的爱慕和走访。它集聚在三个地方,能够使三层架构的贯彻越发简便易行(存储进程将整合数据层)
      
3)安全。sqlserver能够为每三个储存进度设置分歧的黑河批准;而在c#代码中开创的sql查询,更易于受到sql注入攻击**
  


视图

what:是虚拟表,实际是1组查询,而不是大体存在的数据表。所以视图嵌套或和视图联接使用恐怕会造成质量瓶颈

why:一)扩展代码重用。特别是连接查询会很有利

 
       2)可以对两样的视图赋予分化的权限

视图是一组查询,因而比起普通查询未有质量优势,首若是为了代码复用

视图不能够引得,也不可能有提到的触发器或私下认可值

举不胜举DBMS禁止在视图查询中运用O奥迪Q3DER
BY子句

一部分DBMS须求命名重回全部列,倘使列是计量字段,则须要运用别称

有的DBMS把视图视为只读的询问,那表示可以从视图检索数据,但不能将数据写回底层表


目录概念,优点

what
索引

目录是一种新鲜的数据库对象,用来增强数据库操作的1体化进度。它经过维护极度的数据结构来映射已索引表的内容,那将大大加速该表的摸索操作

why
索引以及它的弊端

优点:

 索引将可以增长从表中读取数据的进程,

缺点:

壹)但会降低插入,删除,更新操作的快慢,因为运用这一个操作,数据服务器不仅需要修改该表,还要修改索引创制的附加的数据结构。在骨子里的应用程序中,绝大部分的数据库操作都以读取操作,因而选择索引将会强烈增进质量

二)占用空间多壹些

在一个表中能够创设八个目录,各样索引能够包罗一个或多少个列。当三个表按有个别列成立了目录后,不是行被索引,正是根据该列的值和索引类型被物理索引

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

  • 目录可以加快数据库查询操作,但与此同时会减慢更改数据库的操作(删除、更新和插入操作)。
  • 太多索引会下降数据库质量。平常的做法是,在where,order
    by 和 group
    by子句中常用的列,以及常用于表连接、与别的表展开关联的外键列创设索引
  • 暗许意况下,核心和唯一表列会自动制造索引

unique和primary
Key的异同

共同点

一)都用来确定保障数量数据的唯1性
二)unique和primary key都会活动创造索引
不同:
1)不一样于主键,unique无法运用于多字段
二)每一种数据表能够有八个unique约束
3)unique允许null值,但只允许叁个null值


。.NET和SQL
Server中“空值”辨析
初学数据库编制程序大家兴许会有部分对“空值”的问号,比如通过编制程序新建的一个表中全数数据皆呈现为<NULL>,手动添加并删除文字后又
变成了空荡荡;二个字符串类型的字段,明明未有填值,却不对等””;用ADO.NET从数据库中取值,每境遇有<NULL>的就出错……这需要大家科学认识.NET和SQL Server中两种分歧的“空值”。
 
壹、真正的空值,也即是“未有输入的值”,能够出以后大部类型的字段中(假如未有别的约束规范),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或其它自定义的有含义的值。
 
贰、空字符串(零长度字符串),只现出在字符串类型(如nvarchar)的字段中,SQL
server中象征为””,彰显为空白,手工业在SQL
server企业管理器中输入时清空1个单元格即可。它在.NET中对应System.String.Empty,也便是大家常用的””。在T-SQL命
令中处理空字符串和处理一般的字符串没什么分歧。用ADO.NET从数据库获得的空字符串也和1般的字符串没什么差距。
 
相关的定义还有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查询语句将表中年龄为空的值更新为二五。不接纳(update)

select
isnull(age, 25)

相关文章