mysql 视图使用场景,mysql 视图使用

视图是由一个或多个基础表(或视图)产生的虚拟表,数据库里存放了视图的定义,对应的数据是存放在物理数据表中。

使用视图有时可以简化用户操作,尤其是在需要关联多表查询时,不用关心视图查询的内部结构,只关注在索要获取的数据上

语法格式如下:

CREATE VIEW AS

语法说明如下。

:指定视图的名称。该名称在数据库中必须是唯一的,不能与其他表或视图同名。

:指定创建视图的 SELECT 语句,可用于查询多个基础表或源视图。

1、准备工作

订单表:

DROP TABLE IF EXISTS `t_order`;

CREATE TABLE `t_order` (

`id` int(11) NOT NULL AUTO_INCREMENT ,

`user_id` int(11) NOT NULL ,

`order_time` int(10) NOT NULL ,

`fee` int(11) NOT NULL ,

PRIMARY KEY (`id`)

)

ENGINE=InnoDB

DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci;

订单详情表:

DROP TABLE IF EXISTS `t_order_detail`;

CREATE TABLE `t_order_detail` (

`id` int(11) NOT NULL AUTO_INCREMENT ,

`goods_id` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,

`count` int(11) NOT NULL ,

`order_id` int(11) NOT NULL ,

PRIMARY KEY (`id`)

)

ENGINE=InnoDB

DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci;

商品表:

DROP TABLE IF EXISTS `t_goods`;

CREATE TABLE `t_goods` (

`id` int(11) NOT NULL AUTO_INCREMENT ,

`good_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,

`price` int(11) NOT NULL ,

`stock` int(11) NOT NULL ,

PRIMARY KEY (`id`)

)

ENGINE=InnoDB

DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci;

初始化测试数据:

INSERT INTO `t_goods` VALUES ('1', 'a', '12', '100'), ('2', 'b', '1', '100');

INSERT INTO `t_order` VALUES ('1', '1', '20190912', '1000000');

INSERT INTO `t_order_detail` VALUES ('1', '1', '10', '1'), ('2', '2', '5', '1');

2、创建视图

CREATE VIEW order_detail_2 (id, user_id, goods_name, goods_price, count, fee) AS SELECT

o.id,

o.user_id,

tg.good_name,

tg.price,

tod.count,

(tg.price * tod.count)

FROM

t_order o

RIGHT JOIN t_order_detail tod ON o.id = tod.order_id

RIGHT JOIN t_goods tg ON tod.goods_id = tg.id

WHERE o.id = 1;

该视图是查询订单号为1的详细信息,之后就可以直接使用视图来查询了,查询过程就和基础表一样

SELECT * from order_detail;

标签:int,utf8,mysql,视图,id,使用,NULL,order

来源: https://www.cnblogs.com/kingsonfu/p/11511115.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值