我有一个名为student的表具有以下列名和数据
NAME MARK2 MARK3 mark1 total surya 85 95 123 priya 75 95 25 vishnu 88 75 27
有没有办法添加列mark1和mark2和mark3并插入添加的值总共可以你们建议我使用sqlplus数据库这个.
试试这种方式
UPDATE student
SET total = mark1 + mark2 + mark3;
Run Code Online (Sandbox Code Playgroud)
更好的是,只需创建一个视图
CREATE VIEW vw_student AS
SELECT name, mark3, mark2, mark1, mark3 + mark2 + mark1 total
FROM student;
Run Code Online (Sandbox Code Playgroud)
并改为使用它
SELECT * FROM vw_student;
Run Code Online (Sandbox Code Playgroud)
这是两种方法的SQLFiddle演示
更新:根据您的评论,您可以创建一个触发器(实际上是两个INSERT,第二个UPDATE),以total自动填充列
CREATE TRIGGER tg_bi_student
BEFORE INSERT ON student
FOR EACH ROW
SET NEW.total = NEW.mark1 + NEW.mark2 + NEW.mark3;
CREATE TRIGGER tg_bu_student
BEFORE UPDATE ON student
FOR EACH ROW
SET NEW.total = NEW.mark1 + NEW.mark2 + NEW.mark3;
Run Code Online (Sandbox Code Playgroud)
这是SQLFiddle的触发器方法
2ND UPDATE由于您实际使用Oracle,因此您可以将其定义total为计算列
CREATE TABLE student
(
NAME VARCHAR2(32),
MARK2 NUMBER,
MARK3 NUMBER,
mark1 NUMBER,
total NUMBER GENERATED ALWAYS AS (mark1 + mark2 + mark3)
);
Run Code Online (Sandbox Code Playgroud)
您可以通过这种方式更改表的架构
ALTER TABLE student DROP COLUMN total;
ALTER TABLE student ADD total NUMBER GENERATED ALWAYS AS (mark1 + mark2 + mark3);
Run Code Online (Sandbox Code Playgroud)
这是SQLFiddle演示
| 归档时间: |
|
| 查看次数: |
61 次 |
| 最近记录: |