sql server
计算列 1)计算列是指在创建一个表的列时,指定其【值=列1*列2】类似这样的计算公式,通常适用于不变的公式,例如,单价*数量=金额,就可以将金额设置为计算列,那么金额列就永远=单价*数量了 2)勾选了持久化的计算列,与普通列一样的查询,建立索引,因为是存在物理列的,且值都是计算好存储在列中的 3)没有勾选持久化的计算列,只是一个虚拟的列,不会在数据库表中实际存在这个列,每次使用时,都是根据公式自动计算结果,所以,不能在这个列上面添加索引 4)计算列:不能作为另外一个计算列的一部分,也不能作为触发器中的update判断
创建计算列 创建表的同时,创建计算列Amount,persisted标记用于标记列为持久化,SQL语句如下: create table ComputeTable( Id varchar(36) not null, -- 主键 GUID Price decimal(6,2) null, -- 单价 Number int null, -- 数量 Amount as (Price * Number) persisted -- 【计算列】金额 = 单价 * 数量 );
查看计算列持久化 1)通过上面SQL语句创建的计算列,由于使用了persisted标记,所以,默认就是持久化 2)在创建的表 ComputeTable 点击鼠标右键,选择【设计】,在弹出窗口中,选中Amount行记录,在下面就可以看到【计算列规范】显示的公式,与 持久化的标志
插入测试数据(失败的情况) 往上面创建的表 ComputeTable中插入几行测试数据,对于计算列Amount,也写SQL插入值,会提示:“不能修改列,因为它是计算列,或者是 UNION 运算符的结果”
插入测试数据(成功的情况) 对于有计算列的表插入记录,计算列是不能赋值的,它会通过创建表时的公式,自动计算值
查询数据 使用select语句,直接查询表中所有语句,因为表中目前只有几行测试数据,现实场景中,最好不要select全表数据