SQLServer计算列应用指南
---
创建计算列
1)计算列是指在创建表时定义其值为某种计算公式,通常适用于不变的公式,例如单价乘以数量等。持久化的计算列会将计算结果存储在物理列中,可以建立索引进行查询;而非持久化的计算列只是虚拟存在,每次取值时都会动态计算,无法添加索引。
2)在创建表时,可以同时创建计算列,并使用`persisted`标记来指示列是否持久化。例如,在创建名为ComputeTable的表时,可以定义一个计算列Amount,其公式为Price * Number,SQL语句如下:
```sql
create table ComputeTable(
Id varchar(36) not null,
Price decimal(6,2) null,
Number int null,
Amount as (Price * Number) persisted
);
```
查看计算列持久化
1)通过上述SQL语句创建的计算列默认是持久化的,可以通过在SQL Server Management Studio中右键点击表ComputeTable并选择“设计”,在弹出窗口中查看Amount行记录下方的“计算列规范”显示的计算公式以及持久化标志。
插入测试数据(失败的情况)
尝试向ComputeTable表插入测试数据时,对于计算列Amount不能直接赋值,系统会提示“不能修改列,因为它是计算列,或者是UNION运算符的结果”。
插入测试数据(成功的情况)
对于具有计算列的表,插入记录时无法为计算列赋值,该列会根据创建时的公式自动计算值。
查询数据
通过使用select语句可以直接查询表中所有数据,但在实际场景中,最好避免全表查询,特别是当数据量庞大时。
计算列修改值
1)尝试直接使用SQL语句修改计算列Amount的值会导致错误提示:“不能修改列Amount,因为它是计算列,或者是UNION运算符的结果”。
2)想要修改计算列的值只能通过修改与公式相关联的其他列的数值,这样计算列的值会自动更新。
通过以上方法,可以更好地理解和应用SQLServer中的计算列功能,提高数据库设计的灵活性和效率。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。