仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 602|回复: 8
打印 上一主题 下一主题

[学习教程] SqlServer上钩算列详解

[复制链接]
变相怪杰 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 14:07:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
你看出了作者的深度?深处半米!当初是冲那么多的大牛给他写序才买的,后来才发现无啥内容,作者也只是才用几年的新手,百花了几十两银子,再次感叹当今社会的虚伪与浮躁盘算列区分于必要我们手动大概程序赐与赋值的列,它的值来历于该表中别的列的盘算值。好比,一个表中包括无数量列Number与单价列Price,我们就能够创立盘算列金额Amount来暗示数目*单价的了局值,创立Amount列后,在程序中必要利用盘算金额这个值时,就不必掏出Number列与Price列的值后相乘,而是间接取Amount列的值就能够了。

那末这个盘算列要怎样创建呢?
先看经由过程sql的办法创立:
createtabletable1
(
numberdecimal(18,4),
pricemoney,
Amountasnumber*price--这里就是盘算列
)

盘算列是不必要我们指定命据范例与是不是同意为null等信息的,SqlServer会依据情形主动付与数据范例。

在microsoftsqlservermanagementstudio建创盘算列更是复杂。以下图所示,只需在列属性中的"盘算所得的列标准"-"公式"中填写盘算列的公式就能够了。


在下面的图片中我们也看到有"是耐久的"这个选项,这个选项有甚么用呢?
盘算列假如没有特别的设定,它将会是一个假造列,也就是这个列实践上是不存在的,只是每主要取这列的值时,sql会依照盘算列的公式盘算一次,再把了局前往给我们。如许就会存在一些成绩,好比,每次盘算城市损耗必定的工夫,并且也不克不及在这个列上创立索引。那末能不克不及把盘算列的了局存起来,每次取数据的时分间接把了局前往给我们,而不必每次往盘算。呵呵,祝贺你,创立盘算列时把"是耐久的"这个选项勾起来,就可以到达我们的目标了,这时候候,盘算列就是一个实其实在的列,也能够在该列上创立索引了。

假如要检察一切已存在盘算列和该盘算列是不是为"是耐久的",能够使用sys.computed_columns视图
注重:
1,盘算列假如没有设置为"是耐久的",那末它是不成以用来做check,foreignkey或notnull束缚。固然,假如我们在microsoftsqlservermanagementstudio为盘算列设置了check等束缚了,sqlserver会主动将该列设置为"是耐久的"。
2,盘算列不成以再次用来作为中一个盘算列的一部分。
3,在触发器,不成以对盘算列举行update判别,不然会报以下毛病:
列不克不及在IFUPDATE子句中利用,由于它是盘算列
“数据行级锁定”的意思是指在事务操作的执行过程中锁定正在被处理的个别记录,不让其他用户进行访问。这种锁定将影响到(但不限于)SELECT、LOCKINSHAREMODE、SELECT、FORUPDATE命令以及INSERT、UPDATE和DELETE命令。
再见西城 该用户已被删除
沙发
发表于 2015-1-18 12:03:24 | 只看该作者
SQLServer的异构移植功能个人感觉最好了。(如果对比过SQLServer的链接服务器和Oracle的透明网关的朋友会发现SQLServer的sp_addlinkedserver(openquery)异构数据库系列比Oracle真是强太多了。)
乐观 该用户已被删除
板凳
发表于 2015-2-2 21:54:41 | 只看该作者
再开发调试阶段和OLAP环境中,外键是可以建立的。新版本中加入了SETNULL和SETDEFAULT属性,能够提供能好的级联设置。
变相怪杰 该用户已被删除
地板
 楼主| 发表于 2015-2-8 08:09:14 | 只看该作者
一直以来个人感觉SQLServer的优化器要比Oracle的聪明。SQL2005的更是比2k聪明了不少。(有次作试验发现有的语句在200万级时还比50万级的相同语句要快show_text的一些提示没有找到解释。一直在奇怪。)
莫相离 该用户已被删除
5#
发表于 2015-2-25 05:10:29 | 只看该作者
如果是将来做数据库的开发设计,就应该详细学习T-SQL的各种细节,包括T-SQL的程序设计、存储过程、触发器以及具体使用某个开发语言来访问数据库。
海妖 该用户已被删除
6#
发表于 2015-3-7 17:35:20 | 只看该作者
相信各位对数据库和怎么样学习数据库都有一些经验和看法,也会有人走了一些弯路总结出自己的经验来,希望大家能把各自的看法和经验拿出来分享,给别人一份帮助,给自己一份快乐
冷月葬花魂 该用户已被删除
7#
发表于 2015-3-15 11:38:20 | 只看该作者
无法深入到数据库系统层面去了解和探究
灵魂腐蚀 该用户已被删除
8#
发表于 2015-3-22 01:10:18 | 只看该作者
而写到本地,我又考虑到效率问题.大家来讨论讨论吧,分数不打紧,就给10分,十全十美,没啥对错,各抒己见,但是要有说服力的哦~
灵魂腐蚀 该用户已被删除
9#
发表于 2015-3-22 01:10:18 | 只看该作者
个人感觉没有case直观。而且默认的第三字段(还可能更多)作为groupby字段很容易造成新手的错误。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-22 23:51

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表