mysql 字段值为 a b c_数据的虚拟列-让数据库中的C字段等于a+b

直接用update aaaaa aa set aa.f = (aa.a+aa.b)就行了

=======================================

引出来的新知识--虚拟列

虚拟列的好处是:如果c=a+b那插入数据时;值只插入a=1,b=2;那么c会自动是3

oracle temporary table and virtual column

(2013-07-31 15:06:55)

表是数据库中保存用户数据最基本的结构。下面我简要的学习了临时表和虚拟列。

表按照永久性可以分临时表和永久表。

临时表使用create global temporary table关键字来创建,创建的临时表仅对当前的session可见,其他session是不可见的;临时表在创建时,有关表的数据是保存在数据字典中(临时表空间也永久存在的,但是里面的数据却是没有的,退出session后仅仅知识做truncate table的操作,所以临时表空间在不用的时候是要手动drop的),但是没有空间分配给临时表,直到有数据插入时才分配。对临时表的操作和对永久表(普通表)的dm和ddll操作是一样的,她们两者之间仅是生存周期不同。临时表分session临时表和事务临时表,session临时表在创建时会指定on commit preserve rows,session临时表在该session结束时会自动删除,仅该session可见。事务临时表在创建时必须指定on commit delete rows(如果没有指定则模式是事务临时表),事务临时表仅在创建的事务中存活,该事务结束则也会消失。

创建临时表的一些限制:

1)不能分区,不能聚簇,不能索引组织

2)不能在临时表中有外键约束

3)临时表不能包含嵌套表中的列

4)临时表不支持LOB_storage_clause: TABLESPACE, storage_clause, or logging_clause.

5)不支持并行的update,delete,merge

6)在创建临时表时唯一可以指定的段属性是表空间,且表空间只能是临时表空间,如果在其他表空间会报0ra-02195尝试创建的临时对象在会临时表空间中

7)分布式事务不支持临时表

如果使用as 子查询语句来创建表则可以不指定数据类型,设置外键的column也可以不指定数据类型

虚拟列:虚拟列是不保存在磁盘中的,仅在获取的时候根据存储在磁盘中的列计算,组合获取。虚拟列可以创建索引,可以收集统计信息。创建虚拟列的语法是:column datatype(generated always) as (exp) virtrual,在定义虚拟列时没有指定数据类型则默认使用虚拟列表达式里面返回的值的数据类型,虚拟列的值不能是哦那个update和insert操作来更新,其值会根据新加入或更新的对应的列值计算来获取。针对虚拟列创建的索引等价于创建一个函数索引

虚拟列的限制:

1)虚拟列只能在relation heap表中使用,在组织索引表,外部表,对象表(objct table),聚簇报,临时表中都不可用。

2)虚拟列的表达式不能指向另一个虚拟列(虚拟列是在查询时根据表达式来计算,所以会有存在计算的是按后),这样会存在不确定性;虚拟列表达式涉及到的列 只能在同一个表中;虚拟列表达式中可以使用用户自定义的函数,但是如果使用用户自定义的函数后,该虚拟列不能作为分区;虚拟列表达式返回的值必须是是一个 确定的值;

3)虚拟列的数据类型不能是 a user-defined type, or LOB or LONG RAW.

虚拟列相关测试脚本以及结果:

SQL> create or replace function test1

2  as

3  begin

4  return 23;

5  end;

6  /

函数已创建。

SQL> create table testvirtual (age number,

2  v_test generated always as

(age+10),

3  v_test1 generated always as

test1);

v_test1 generated always as test1)

*

第 3 行出现错误:

ORA-02000: 缺失 ( 关键字

SQL> insert into testvirtual values(10,20);

insert into testvirtual values(10,20)

*

第 1 行出现错误:

ORA-54013: 不允许对虚拟列执行 INSERT 操作

SQL> insert into testvirtual values(10);

insert into testvirtual values(10)

*

第 1 行出现错误:

ORA-00947: 没有足够的值

SQL> insert into testvirtual (age) values(10);

已创建 1 行。

SQL> select * from testvirtual;

AGE

V_TEST

---------- ----------

10

20

SQL> alter table testvirtual add (v_test1 as

(v_test+1) virtual);

alter table testvirtual add (v_test1 as (v_test+1) virtual)

*

第 1 行出现错误:

ORA-54012: 在列表达式中引用了虚拟列

SQL> alter table testvirtual add (v_test1 as (age+1)

virtual);

表已更改。

SQL> create or replace function testxu (p_in

number) return number deterministic

as

2  begin

3  return p_in+20;

4  end;

5  /

函数已创建。

SQL> create table testpartition (age number,

2  v_age as (testxu(age))

virtual)

3  partition by

range(v_age)(

4  partition p1 values less

than (30),

5  partition p2 values less

than (100),

6  partition p3 values less

than (200),

7  partition

pn  values less than (MAXVALUE)

8  );

v_age as (testxu(age)) virtual)

*

第 2 行出现错误:

ORA-54021: 不能在分区列或子分区列中使用 PL/SQL 表达式

SQL> create table testpartition (age

number,

2  v_age as (age+10)

virtual)

3  partition by

range(v_age)(

4  partition p1 values less

than (30),

5  partition p2 values less

than (100),

6  partition p3 values less

than (200),

7  partition

pn  values less than (MAXVALUE)

8  );

表已创建。

网络文献参考:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/556889.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

@RequestBody 和 @RequestParam可以同时使用

RequestParam和RequestBody这两个注解是可以同时使用的。 网上有很多博客说RequestParam 和RequestBody不能同时使用,这是错误的。根据HTTP协议,并没有说post请求不能带URL参数,经验证往一个带有参数的URL发送post请求也是可以成功的。只不过…

mysql索引使增删变慢_mysql优化之索引篇

mysql,对it打工人,这个几乎是必备的技能之一。mysql可以解决我们平时工作中的大量的、有关增删查改的问题。所以想深入了解mysql,我觉得关键在于他的增删查改背后的算法,开搞。面对增删查改等问题,直接通过场景来看吧场…

POST、GET、@RequestBody和@RequestParam区别

RequestParam 注解RequestParam接收的参数是来自HTTP请求体或请求url的QueryString中。 RequestParam可以接受简单类型的属性,也可以接受对象类型。 RequestParam有三个配置参数: required 表示是否必须,默认为 true,必须。de…

python与linux关系_如何处理Linux / Python依赖关系?

由于缺乏对我想使用的一些库的支持,我将一些Python开发从Windows转移到Linux开发.我已经花了大部分时间搞乱了依赖关系.问题每当我拿起Linux,我通常会遇到一些依赖问题,通常是开发库,无论是通过apt-get,easy_install或pip安装.我可以浪费时间,应该是简单的任务,花更长的时间让图…

Springmvc接收json数据的4种方式

1、以RequestParam接收 前端传来的是json数据不多时:[id:id],可以直接用RequestParam来获取值 Autowired private AccomodationService accomodationService;RequestMapping(value "/update") ResponseBody public String updateAttr(RequestParam (&q…

centos安装mysql卡住_CentOS 6.4安装MySQL的过程中出现的bug

在CentOS 6.4下安装MySQL,下载一个源码包,感觉很简单,tar,./configure,make,make install 经典四步,弄这个也不是第一次了,但今天就是老出错,首先是./configure中&#x…

SpringMVC接受List的几种方式

说到SpringMVC接受List参数,可能有人会说这个是个坑!下面我来跟大家说怎么补这个坑。下面我分几种情况来讲: 一、只接收一个List 1、form表单提交 controller代码: ResponseBody RequestMapping("test") public voi…

mysql怎么加固_mysql安装及加固

mysql安装查看是否安装mysql我们先看一下有没有安装mysqlyum list installed mysql | grep mysql本地只安装了php链接mysql的库,没有安装mysql如果有安装,可以使用安装的或者卸载了重新安装添加yum源去mysql官网查找下面我就来安装下yum源sudo rpm -ivh …

python标准库os的方法listdir_使用python标准库快速修改文件名字

大家在追剧的时候会一次性下载很多电影,但是很烦人的是前面会有很多电影网站的广告前缀。今天我将介绍一个简短的代码,快速修改这些文件的名字。工具:os首先在电影目录下新建一个py文件,并导入osimport osos,是python中…

RabbitMQ保姆级教程

文章目录 前言一、MQ是什么? 1.1 AMQP 二、在Linux安装RabbitMQ 2.1 安装2.2 RabbitMQ启动命令2.3 开启RabbitMQ 后台管理界面 2.3.1 登录rabbitMQ UI界面 2.3 Docker启动RabbitMQ2.4 常见消息模型2.5 生产者(Producer) / 消费者(Consumer)2.6 工作队列模式(Work Q…

spring mysql 连接池配置_SpringBoot数据库连接池常用配置

关注公众号:程序猿王国 持续更新,每日分享在配置文件中添加配置如下(我使用的是多数据源):spring.datasource.primary.urljdbc\:mysql\://localhost\:3306/test?useUnicode\true&characterEncoding\utf-8spring.datasource.prim…

交换机到底是啥?

1、交换机 交换机个人资料: 1.证件照 注:copy 百度百科 我的博客/交换机到底是啥? 这东西乍一看有点像月光宝盒,是不是。 2.个人简介 交换机(Switch)意为“开关”是一种用于电(光&#xff0…

unity3d 动态合批设置_Unity3D SkinnedMeshRenderer合批优化

最近做了性能优化相关的工作,其中一些是关于战斗模块的渲染的。主要是对场景中使用的基于SkinnedMeshRenderer的网格进行了一些合批优化(降DC),记录如下。项目使用的Unity版本为5.6.4p1。游戏中的战斗模块是这样的:战斗逻辑由服务器承担&…

java——Final修饰成员变量的注意事项

一.Final 修饰成员变量的注意事项 final修饰成员变量,该成员变量必须在创建对象之前进行赋值,否则编译失败final修饰成员变量,固定的不是成员变量拥有的默认值,如果固定的是默认值,那么将导致被final修饰的…

php 编写mysql_php编写数据写入mysql问题

我刚写好的:前台是htm界面填写数据留言板...我刚写好的:前台是 htm界面 填写数据留言板你的姓名:你的性别:男 女你的email:你的留言内容:后台是:if(isset($_POST)) // 只有 $_POST 变量存在&…

java 代码 点到线段的最短距离

// 点到直线的最短距离的判断 点(x0,y0) 到由两点组成的线段(x1,y1) ,( x2,y2 )private double pointToLine(int x1, int y1, int x2, int y2, int x0,int y0) {double space 0;double a, b, c;a lineSpace(x1, y1, x2, y2);// …

isNotBlank()和isNotEmpty()的区别——java中,StringUtils类中的一些常用方法

java中,StringUtils类中的一些常用方法 boolean isBlank(String str) //判断某字符串是否为空或长度为0或由空白符(whitespace)构成 StringUtils.isBlank(null) true StringUtils.isBlank("") true StringUtils.isBlank(" ") true StringUt…

java类的加载顺序_java类加载先后顺序

这里讲的不是类加载机制,是类的加载先后顺序。话不多说了,先设定以下场景:package com.jingdong;public class A {public static void main(String[] args){System.out.println(Ib.b);B bnew B();b.ibTest();}}public class B implements Ib{private D d;private C …

MyBatis:模糊查询的4种实现方式

1、根据姓名模糊查询员工信息 1.1、方式一 步骤一:编写配置文件 步骤二:测试 步骤三:分析 此种方式需要在调用处手动的去添加“%”通配符。 1.2、方式二 说明: 使用方式一可以实现模糊查询,但是有一点不方便的地…

java 阻塞 socket_java socket非阻塞I/O

1 非阻塞(Nonblocking)体系结构在这一部分,我将从理论的角度来解释非阻塞体系的结构及其工作原理。这部“喜剧”(当然,如果你喜欢的话也可以称做戏剧)的“人物”如下:●服务器端:接收请求的应用程序。●客户端:向…