mysql 一年日期视图_MySQL:视图

视图

一、视图的概述

1. 含义:是从数据库中一个或多个表中导出的虚拟表

2. 作用:①简单化 ②安全性 ③逻辑数据独立性

3. 注意:一个表可以由多个视图;

二、视图的创建

1. 总的语法形式

CREATE

[OR REPLACE]

[ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]

VIEW view_name [(column_list)]

AS select_statement

[WITH [CASCADED | LOCAL] CHECK OPTION]

介绍

REPLACE:表示替换已经创建的视图

ALGORITHM:表示视图选择的算法

view_name :视图名

column_list:属性列表

select_statement:select语句

WITH [CASCADED | LOCAL] CHECK OPTION:表示视图在更新时保证在视图的权限范围内

CASCADED:默认值,表示更新视图时要满足所有相关的视图和表的条件

LOCAL:表示更新视图时满足该视图本身定义的条件即可。

UNDEFINED:表示MySQL自动选择算法

MERGE:表示将使用视图语句与视图定义合并起来,使得视图定义的某一部分取代语句对应的部分 TEMPTABLE:表示将视图的结果存入临时表,然后用临时表来执行语句

2. 在单表上创建视图

语法:

CREATE VIEW 视图名 [(视图字段,……,字段n)] AS select 表字段名,……,表字段名n from 数据表;

CREATE or replace VIEW 视图名 [(视图字段,……,字段n)] AS select 表字段名,……,表字段名n from 数据表;

语句2,如果视图没有创建,则创建;如果视图已创建,则修改视图。

实例:

【例】

mysql>create view view_e(a,b,c,d,e,g,h) as select gkbh,yhm,mm,xm,xb,csrq,sfzh from guke;

【附,显示】

select * from view_e;

+-------+----------+----------+------+------+------------+--------------------+

| a | b | c | d | e | g | h |

+-------+----------+----------+------+------+------------+--------------------+

| 00001 | aaaaaaaa | 12345678 | 李明 | 男 | 1990-05-06 | 111111111111111111 |

| 00002 | bbbbbbbb | 12345678 | 李逵 | 男 | 1988-05-06 | 111111111111111111 |

| 00003 | cccccccc | 12345678 | 西施 | 女 | 1990-05-06 | 111111111111111111 |

+-------+----------+----------+------+------+------------+--------------------+

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

(2) 注意:默认情况下创建的视图和基本表的字段是一样的,也可以通过指定视图字段的名称来创建视图。

3. 在多表上创建视图

语法:

CREATE VIEW 视图名 [(视图字段,……,字段n)]

AS A表表名.表字段名,……,A表表名.表字段名n,

B表表名.表字段名,……,B表表名.表字段名

from 数据A表,数据B表

where 连接条件;

实例:

【例】

mysql> create view view_a(订单编号,商品编号,顾客编号,订单日期)

as select dingdanxiangqing.ddbh,dingdanxiangqing.spbh,

dingdan.gkbh,dingdan.ddrq

from dingdan,dingdanxiangqing

where dingdanxiangqing.ddbh=dingdan.ddbh;

【附,效果】

mysql> select * from view_a;

+----------+----------+----------+---------------------+

| 订单编号 | 商品编号 | 顾客编号 | 订单日期 |

+----------+----------+----------+---------------------+

| 1 | 00000001 | 00001 | 2016-01-01 00:00:00 |

| 2 | 00000003 | 00003 | 2016-02-10 00:00:00 |

| 1 | 00000004 | 00001 | 2016-01-01 00:00:00 |

+----------+----------+----------+---------------------+

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

三、视图的查看

语法:

desc 视图表

实例:

【例】

mysql> desc view_a;

+----------+----------+------+-----+---------+-------+

| Field | Type | Null | Key | Default | Extra |

+----------+----------+------+-----+---------+-------+

| 订单编号 | int(11) | NO | | 0 | |

| 商品编号 | char(8) | NO | | | |

| 顾客编号 | char(5) | NO | | NULL | |

| 订单日期 | datetime | NO | | NULL | |

+----------+----------+------+-----+---------+-------+

作用:显示视图的字段定义、字段的数据类型、是否为空、是否是主键\外键、默认值和额外信息

语法

show table status like'视图表名’\G;

实例

mysql> show table status like'view_a';

+--------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+

| Name | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length |

+--------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+

| view_a | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL |

+--------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+

-----------+----------------+-------------+-------------+------------+-----------+----------+----------------+

Data_free |Auto_increment | Create_time | Update_time | Check_time | Collation |Checksum | Create_options |

-----------+----------------+-------------+-------------+------------+-----------+----------+----------------+

NULL | NULL |NULL | NULL | NULL | NULL | NULL | NULL |

-----------+----------------+-------------+-------------+------------+-----------+----------+----------------+

---------+

Comment |

---------+

VIEW |

---------+

或者mysql>show table status like'view_a'\G;

*************************** 1. row ***************************

Name: view_a

Engine: NULL

Version: NULL

Row_format: NULL

Rows: NULL

Avg_row_length: NULL

Data_length: NULL

Max_data_length: NULL

Index_length: NULL

Data_free: NULL

Auto_increment: NULL

Create_time: NULL

Update_time: NULL

Check_time: NULL

Collation: NULL

Checksum: NULL

Create_options: NULL

Comment: VIEW

作用:显示视图的存储引擎,创建时间

语法

show create view 视图名

实例

【例】

mysql> show create view view_a\G;

*************************** 1. row ***************************

View: view_a

Create View: CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `view_a` AS select `dingdanxiangqing`.`ddbh` AS `订单编号`,`dingdanxiangqing`.`spbh` AS `商品编号`,`dingdan`.`gkbh` AS `顾客编号`,`dingdan`.`ddrq` AS `订单日期` from (`dingdan` join `dingdanxiangqing`) where (`dingdanxiangqing`.`ddbh` = `dingdan`.`ddbh`)

character_set_client: gbk

collation_connection: gbk_chinese_ci

作用:显示视图的名称和创建语句

语法

select * from information_schema.views\G;

实例

mysql> select * from information_schema.views\G;

*************************** 1. row ***************************

TABLE_CATALOG: def

TABLE_SCHEMA: webshop

TABLE_NAME: view_a

VIEW_DEFINITION: select `webshop`.`dingdanxiangqing`.`ddbh` AS `订单编号`,`webshop`.`dingdanxiangqing`.`spbh` AS `商品编号`,`webshop`.`dingdan`.`gkbh` AS `顾客编号`,`webshop`.`dingdan`.`ddrq` AS `订单日期` from `webshop`.`dingdan` join `webshop`.`dingdanxiangqing` where (`webshop`.`dingdanxiangqing`.`ddbh` = `webshop`.`dingdan`.`ddbh`)

CHECK_OPTION: NONE

IS_UPDATABLE: YES

DEFINER: root@localhost

SECURITY_TYPE: DEFINER

CHARACTER_SET_CLIENT: gbk

COLLATION_CONNECTION: gbk_chinese_ci

作用:显示所有的数据表

四、视图的修改

①CREATE语句

总的语法

CREATE

[OR REPLACE]

[ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]

VIEW view_name [(column_list)]

AS select_statement

[WITH [CASCADED | LOCAL] CHECK OPTION]

简化版

CREATE or replace view 视图名 as select 表字段 from 表名

注意:该语法与创建语法完全一样,当视图不存在时,此语法是创建视图;视图存在时,此语法是修改视图;

②ALTER语法

总的语法:

ALTER

[ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]

[DEFINER = { user | CURRENT_USER }]

[SQL SECURITY { DEFINER | INVOKER }]

VIEW view_name [(column_list)]

AS select_statement

[WITH [CASCADED | LOCAL] CHECK OPTION]

简化版:

ALTER view 视图名 as select 表字段 from 表名

五、视图的更新

注意:

①因为视图是虚拟表所以,所以对视图的操作,实际上是对基本表的操作;

②对其中的一个视图更新后,其基本表也更新了,从而与这个基本表相关的视图表的内容也更新。

③不可以更新的视图

1.包含以下关键字的sql语句:聚合函数(sum、min、max、count)、distinct、group by 、having、union 或者uinon all

2.常量视图

3.select 中包含子查询

4.join

5.from一个不可更新的试图

6.where字句的子查询引用了from字句中的表

(1)更新视图

语法:

update 视图名 set 更新数据;

实例:

原数据表:

mysql> select * from guke;

+-------+------+------------+

| gkbh | xm | csrq |

+-------+------+------------+

| 00001 | 李明 | 1990-05-06 |

| 00002 | 李逵 | 1988-05-06 |

| 00003 | 西施 | 1990-05-06 |

+-------+------+------------+

原视图:

mysql> select * from view_c;

+----------+------+------------+

| 顾客编号 | 姓名 | 出生日期 |

+----------+------+------------+

| 00001 | 李明 | 1990-05-06 |

| 00002 | 李逵 | 1988-05-06 |

| 00003 | 西施 | 1990-05-06 |

+----------+------+------------+

改后:

视图:

mysql> update view_c set 姓名='哈哈在笑' where 顾客编号='00002';

mysql> select * from view_c;

+----------+----------+------------+

| 顾客编号 | 姓名 | 出生日期 |

+----------+----------+------------+

| 00001 | 哈哈一笑 | 1990-05-06 |

| 00002 | 哈哈在笑 | 1988-05-06 |

| 00003 | 哈哈一笑 | 1990-05-06 |

+----------+----------+------------+

基本表:

mysql> select gkbh,xm,csrq from guke;

+-------+----------+------------+

| gkbh | xm | csrq |

+-------+----------+------------+

| 00001 | 哈哈一笑 | 1990-05-06 |

| 00002 | 哈哈在笑 | 1988-05-06 |

| 00003 | 哈哈一笑 | 1990-05-06 |

+-------+----------+------------+

注意:基本表已经改变

(2)插入记录

语法:

insert into 数据表名 values(插入的数据,……,插入的数据n);

六、视图的删除

1. 总的语法

DROP VIEW [IF EXISTS]

view_name [, view_name] ...

[RESTRICT | CASCADE]

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值