10、视图

创建视图 

MariaDB [hellodb]> create view v_score as select st.name,co.course,sc.score from students st inner join scores sc on st.stuid=sc.stuid inner join courses co on sc.courseid=co.courseid;
Query OK, 0 rows affected (0.005 sec)

MariaDB [hellodb]> show tables;
+-------------------+
| Tables_in_hellodb |
+-------------------+
| classes           |
| coc               |
| courses           |
| scores            |
| students          |
| teachers          |
| toc               |
| v_score           |
+-------------------+
8 rows in set (0.010 sec)

MariaDB [hellodb]> select * from v_score;
+-------------+----------------+-------+
| name        | course         | score |
+-------------+----------------+-------+
| Shi Zhongyu | Kuihua Baodian |    77 |
| Shi Zhongyu | Weituo Zhang   |    93 |
| Shi Potian  | Kuihua Baodian |    47 |
| Shi Potian  | Daiyu Zanghua  |    97 |
| Xie Yanke   | Kuihua Baodian |    88 |
| Xie Yanke   | Weituo Zhang   |    75 |
| Ding Dian   | Daiyu Zanghua  |    71 |
| Ding Dian   | Kuihua Baodian |    89 |
| Yu Yutong   | Hamo Gong      |    39 |
| Yu Yutong   | Dagou Bangfa   |    63 |
| Shi Qing    | Hamo Gong      |    96 |
| Xi Ren      | Hamo Gong      |    86 |
| Xi Ren      | Dagou Bangfa   |    83 |
| Lin Daiyu   | Taiji Quan     |    57 |
| Lin Daiyu   | Jinshe Jianfa  |    93 |
+-------------+----------------+-------+
15 rows in set (0.011 sec)

原始表更新后视图也会更新

MariaDB [hellodb]> update scores set score=88 where id=1;
Query OK, 1 row affected (0.003 sec)
Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [hellodb]> select * from scores;
+----+-------+----------+-------+
| ID | StuID | CourseID | Score |
+----+-------+----------+-------+
|  1 |     1 |        2 |    88 |
|  2 |     1 |        6 |    93 |
|  3 |     2 |        2 |    47 |
|  4 |     2 |        5 |    97 |
|  5 |     3 |        2 |    88 |
|  6 |     3 |        6 |    75 |
|  7 |     4 |        5 |    71 |
|  8 |     4 |        2 |    89 |
|  9 |     5 |        1 |    39 |
| 10 |     5 |        7 |    63 |
| 11 |     6 |        1 |    96 |
| 12 |     7 |        1 |    86 |
| 13 |     7 |        7 |    83 |
| 14 |     8 |        4 |    57 |
| 15 |     8 |        3 |    93 |
+----+-------+----------+-------+

查看视图定义:

MariaDB [hellodb]> show create view v_score;

删除视图:

MariaDB [hellodb]> drop view if exists v_score;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要实现每天10点刷新Oracle物化视图,可以使用Oracle的定时任务调度器DBMS_SCHEDULER来完成。 下面是具体步骤: 1. 创建一个作业(job),该作业定义了要执行的刷新物化视图的SQL语句。 例如: ``` BEGIN DBMS_MVIEW.REFRESH('materialized_view_name', 'C', atomic_refresh=>FALSE); END; ``` 其中,'materialized_view_name'是要刷新的物化视图名称,'C'表示使用完全刷新方式,而atomic_refresh=>FALSE表示不使用原子刷新方式。 2. 创建一个调度程序(schedule),该调度程序定义了作业执行的时间和频率。 例如: ``` BEGIN DBMS_SCHEDULER.CREATE_SCHEDULE( schedule_name => 'refresh_schedule', start_date => SYSTIMESTAMP, repeat_interval => 'FREQ=DAILY;BYHOUR=10;BYMINUTE=0;BYSECOND=0'); END; ``` 其中,'refresh_schedule'是调度程序名称,start_date指定了调度程序开始执行的时间,repeat_interval指定了调度程序执行的频率和时间。 3. 创建一个触发器(trigger),该触发器将调度程序与作业关联起来。 例如: ``` BEGIN DBMS_SCHEDULER.CREATE_JOB( job_name => 'refresh_job', job_type => 'PLSQL_BLOCK', job_action => 'BEGIN DBMS_MVIEW.REFRESH(''materialized_view_name'', ''C'', atomic_refresh=>FALSE); END;', start_date => SYSTIMESTAMP, repeat_interval => 'FREQ=DAILY;BYHOUR=10;BYMINUTE=0;BYSECOND=0', enabled => TRUE, auto_drop => FALSE); DBMS_SCHEDULER.SET_ATTRIBUTE('refresh_job', 'schedule_name', 'refresh_schedule'); END; ``` 其中,'refresh_job'是作业名称,job_type指定了作业类型为PLSQL_BLOCK,job_action指定了作业要执行的SQL语句,start_date指定了作业开始执行的时间,repeat_interval指定了作业执行的频率和时间,enabled=>TRUE表示作业启用,auto_drop=>FALSE表示不自动删除作业。 4. 执行触发器(trigger),使其开始执行作业。 例如: ``` BEGIN DBMS_SCHEDULER.RUN_JOB('refresh_job'); END; ``` 以上就是在Oracle中实现每天10点刷新物化视图的具体步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

什么值得,什么难舍

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值