1、准备工作

在MySQL数据库中创建两张表balance(余额表)和customer(客户表)并插入数据。

create table customer(

id int(10) primary key,

name char(20) not null,

role char(20) not null,

phone char(20) not null,

sex char(10) not null,

address char(50) not null

)ENGINE=InnoDB DEFAULT CHARSET=utf8;

#外键为customerId

create table balance(

id int(10) primary key,

customerId int(10) not null,

balance DECIMAL(10,2),

foreign key(customerId) references customer(id)

)ENGINE=InnoDB DEFAULT CHARSET=utf8;

向客户表和余额表中各插入3条数据。

insert into customer values(0001,"xiaoming",'vip1','12566666','male','江宁区888号');

insert into customer values(0002,"xiaohong",'vip10','15209336760','male','建邺区888号');

insert into customer values(0003,"xiaocui",'vip11','15309336760','female','新街口888号');

insert into balance values(1,0001,900.55);

insert into balance values(2,0002,900.55);

insert into balance values(3,0003,10000);

2、视图简介

视图可以简单理解成虚拟表,它和数据库中真实存在数据表不同,视图中的数据是基于真实表查询得到的。视图和真实表一样具备相似的结构。真实表的更新,查询,删除等操作,视图也支持。那么为什么需要视图呢?

a、提升真实表的安全性:视图是虚拟的,可以只授予用户视图的权限而不授予真实表的权限,起到保护真实表的作用。

b、定制化展示数据:基于同样的实际表,可以通过不同的视图来向不同需求的用户定制化展示数据。

c、简化数据操作:适用于查询语句比较复杂使用频率较高的场景,可以通过视图来实现。

......

需要说明一点的是:视图相关的操作需要用户具备相应的权限。以下操作使用root用户,默认用户具备操作权限。

创建视图语法

create view as ;

修改视图语法

修改视图名称可以先删除,再用相同的语句创建。

#更新视图结构

alter view as ;

#更新视图数据相当于更新实际表,不适用基于多表创建的视图

update ....

注意:部分视图的数据是无法更新,也就是无法使用update,insert等语句更新,比如:

a、select语句包含多个表

b、视图中包含having子句

c、试图中包含distinct关键字

......

删除视图语法

drop view

3、视图的操作

基于单表创建视图

mysql> create view bal_view

-> as

-> select * from balance;

Query OK, 0 rows affected (0.22 sec)

创建完成后,查看bal_view的结构和记录。可以发现通过视图查询到数据和通过真实表查询得到的结果完全一样。

#查询bal_view的结构

mysql> desc bal_view;

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

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

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

| id | int(10) | NO | | NULL | |

| customerId | int(10) | NO | | NULL | |

| balance | decimal(10,2) | YES | | NULL | |

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

3 rows in set (0.07 sec)

#查询bal_view中的记录

mysql> select * from bal_view;

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

| id | customerId | balance |

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

| 1 | 1 | 900.55 |

| 2 | 2 | 900.55 |

| 3 | 3 | 10000.00 |

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

3 rows in set (0.01 sec)

通过创建视图的语句不难得出结论:当真实表中的数据发生改变时,视图中的数据也会随之改变。那么当视图中的数据发生改变时,真实表中的数据会变化吗?来实验一下,修改id=1的客户balance为2000。

mysql> update bal_view set balance=2000 where id=1;

Query OK, 1 row affected (0.05 sec)

Rows matched: 1 Changed: 1 Warnings: 0

来看一下真实表balance中的数据。

mysql> select * from bal_view where id=1;

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

| id | customerId | balance |

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

| 1 | 1 | 2000.00 |

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

1 row in set (0.03 sec)

结论:视图表中的数据发生变化时,真实表中的数据也会随之改变。

基于多表创建视图

创建视图cus_bal,共两个字段客户名称和余额。

mysql> create view cus_bal

-> (cname,bal)

-> as

-> select customer.name,balance.balance from customer ,balance

-> where customer.id=balance.customerId;

Query OK, 0 rows affected (0.05 sec)

#查看cus_bal中的数据

mysql> select * from cus_bal;

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

| cname | bal |

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

| xiaoming | 2000.00 |

| xiaohong | 900.55 |

| xiaocui | 10000.00 |

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

3 rows in set (0.28 sec)

修改视图

将cus_bal视图中的cname改成cusname。

mysql> alter view cus_bal

-> (cusname,bal)

-> as

-> select customer.name,balance.balance from customer ,balance

-> where customer.id=balance.customerId;

Query OK, 0 rows affected (0.06 sec)

#查看修改后视图结构。

mysql> desc cus_bal;

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

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

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

| cusname | char(20) | NO | | NULL | |

| bal | decimal(10,2) | YES | | NULL | |

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

2 rows in set (0.00 sec)

修改基于多表创建的视图

mysql> insert into cus_bal(cusname,bal) values ("ee",11);

ERROR 1393 (HY000): Can not modify more than one base table through a join view 'rms.cus_bal'

删除视图

删除视图cus_bal

drop view cus_bal;

mysql> drop view cus_bal;

Query OK, 0 rows affected (0.00 sec)

linux创建mysql视图_MySQL视图基本操作相关推荐

  1. linux创建mysql视图,MySQL视图入门浅析

    一. 什么是视图 视图是一种虚拟存在的表,行和列数据来自,定义视图的查询中使用的表,并且是在使用视图时动态生成的.优势有: 简单: 使用视图的用户完全不需要关心后面对应的表的结构,关联条件,筛选条件. ...

  2. mysql常用的视图_MySQL视图

    MySQL视图的基本操作 视图是数据库中的虚拟表.包含一系列带有名称的行和列数据.视图是从一个或者多个表中导出的,视图的行为与表非常相似,用户可以使用SELECT语句查询数据,以及使用INSERT.U ...

  3. mysql 视图_mysql视图

    一.为什么使用视图 1.重用SQL语句. 2.简化复杂的SQL操作.在编写查询后,可以方便地重用它而不必知道它的基本查询细节. 3.使用表的组成部分而不是整个表. 4.保护数据.可以给用户授予表的特定 ...

  4. mysql视图_MySQL视图详解

    在讲解视图的时候我们的明白下面几个概念. 什么是视图? 视图(view)是一种虚拟存在的表,是一个逻辑表,本身并不包含数据.作为一个select语句保存在数据字典中的. 视图是干什么用的? 通过视图, ...

  5. mysql 数据库视图_MySQL视图介绍

    /* 视图 */ ------------------ 什么是视图: 视图是一个虚拟表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据.但是,视图并不在数据库中以存储的数据值集形 ...

  6. mysql front 视图_mysql 视图

    mysql 视图 那随意了 • 2020 年 06 月 02 日 视图 简介 定义 视图是一个虚拟的表,其内容有查询定义.同真实的表一样,视图包含一些力带有名称的列和行数据.行和列的数据来自定义视图查 ...

  7. c mysql 视图_mysql 视图

    六.mysql 视图 6.1.什么是视图 ① 定义 视图是指计算机数据库中的视图,是一个虚拟表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据.但是,视图并不在数据库中以存储的数 ...

  8. mysql修改视图_MySQL视图的应用之修改视图

    MySQL视图的应用之修改视图 为了提高工作效率,对不满足条件的视图可以通过修改的方式进行更改.实现本章中的实例,我们首先要创建数据表,然后在创建视图,先不要着急,我们下面会详细介绍!~ 那么在我们开 ...

  9. mysql建立视图_MySQL视图的应用之创建视图

    MySQL视图的应用之创建视图 视图也称虚表,包括执行某个查询返回的一组记录.视图可以简化获取数据的方法,并通过别名来实现抽象查询. 为了简化查询,在实际项目开发过程中,通常可以采用为数据库中的某个表 ...

最新文章

  1. KL变换+PCA+关系
  2. 二次开发基于无线网卡的扫描
  3. [转载]抓大放小,要事为先
  4. 图表样式无法实现个性化定制?这个ECharts插件解锁多图表样式
  5. 疫情中该如何保证高效远程办公(1)-员工到底是在家办公,还是在家躺着??
  6. ee可以有js吗 jvaa_EE今年最后一次邀请,最低分数线468分!2021年的40万新移民指标,你准备好了吗?!...
  7. Mybatis if test中字符串比较
  8. 图片处理--连环画特效
  9. Panel控件—让你的界面变好看
  10. VS2003添加.BMP资源
  11. 10g gtx 光纤通信测试_光纤通信系统仿真实验
  12. html5设置谷歌浏览器兼容性,谷歌浏览器如何设置兼容性视图_谷歌浏览器设置兼容性视图的方法-系统城...
  13. 使用JS数组迭代方法渲染页面数据并实现查询功能
  14. 今天终于知道了!阿里巴巴 P8、P9 及以上到底是什么水平?
  15. 【Android Tricks 6】ViewPager首页与尾页的滑动动作响应
  16. windows配置本地hosts
  17. 疫情之下:如何高效远程办公
  18. 【Linux-Linux常用命令】Linux常用命令总结
  19. 动态规划-买卖股票的最佳时机 专题
  20. 资源 | 吴恩达斯坦福CS230深度学习课程全套资料放出(附下载)

热门文章

  1. centos6_64位系统安装部署puppet(master、agent)
  2. 企业架构研究总结(2)——问题的由来和基本概念
  3. C#/Net代码精简优化技巧(3)
  4. 【转载】Hadoop 2.7.3 和Hbase 1.2.4安装教程
  5. ASP.NET Core 入门教程 2、使用ASP.NET Core MVC框架构建Web应用
  6. Django 2.1.3 中间件使用
  7. 用 Fiddler 来弥补 Chrome Network 的小缺点
  8. Oracle查看用户权限
  9. 利用 Swoole 给应用写个防火墙
  10. sql server 语句