MySQL:视图

转载 2015年11月18日 12:17:22
/*样例表*/
CREATE TABLE student
(
  s_id  INT,
  name  VARCHAR(40)
);

CREATE TABLE stu_info
(
  s_id   INT,
  glass  VARCHAR(40),
  addr   VARCHAR(90)
);

【例11.1】在t表格上创建一个名为view_t的视图,代码如下:
CREATE TABLE t (qty INT, price INT);         /*创建基本表t*/
INSERT INTO t VALUES(3, 50);                 /*插入记录*/
CREATE VIEW view_t AS SELECT quantity, price, quantity *price FROM t;    /*创建视图view_t*/
SELECT * FROM view_t;


【例11.2】在t表格上创建一个名为view_t2的视图,代码如下:
CREATE VIEW view_t2(qty, price, total ) AS SELECT quantity, price, quantity *price FROM t;
SELECT * FROM view_t2;


【例11.3】在表student和表stu_info上创建视图stu_glass,代码如下:
INSERT INTO student VALUES(1,'wanglin1'),(2,'gaoli'),(3,'zhanghai');                /*插入记录*/
INSERT INTO stu_info VALUES(1, 'wuban','henan'),(2,'liuban','hebei'),(3,'qiban','shandong');

CREATE VIEW stu_glass (id,name, glass) AS SELECT student.s_id,student.name ,stu_info.glass FROM student ,stu_info WHERE student.s_id=stu_info.s_id;

SELECT * FROM stu_glass;


【例11.4】通过DESCRIBE语句查看视图view_t的定义,代码如下:
DESCRIBE view_t;


【例11.5】下面将通过一个例子来学习使用SHOW TABLE STATUS命令查看视图信息,代码如下:
SHOW TABLE STATUS LIKE 'view_t' \G;
SHOW TABLE STATUS LIKE 't' \G;

【例11.6】SHOW CREATE VIEW查看视图的详细定义,代码如下:
SHOW CREATE VIEW view_t \G;


【例11.7】在views表中查看视图的详细定义,代码如下:
SELECT * FROM information_schema.views \G;


【例11.8】修改视图view_t,代码如下:
DESC view_t;
CREATE OR REPLACE VIEW view_t AS SELECT * FROM t;
DESC view_t;

【例11.9】使用ALTER语句修改视图view_t,代码如下:
DESC view_t;
ALTER VIEW view_t AS SELECT quantity FROM t;
DESC view_t;

【例11.10】使用UPDATE语句更新视图view_t,代码如下:
SELECT * FROM view_t;          /*查看更新之前的视图*/
SELECT * FROM t;               /*查看更新之前的表*/
UPDATE view_t SET quantity=5;  /*更新视图*/
SELECT * FROM t;               /*查看更新之后的表*/
SELECT * FROM view_t;          /*查看更新之后的视图*/
SELECT * FROM view_t2;

【例11.11】使用INSERT语句在基本表t中插入一条记录,代码如下:
INSERT INTO t VALUES (3,5);
SELECT * FROM t;
SELECT * FROM view_t2;

【例11.12】删除stu_glass视图,代码如下:
DROP VIEW IF EXISTS stu_glass;
SHOW CREATE VIEW stu_glass;




综合案例

步骤1:创建学生表stu,插入3条记录。
CREATE TABLE stu
(
s_id INT PRIMARY KEY,
s_name VARCHAR(20),
addr VARCHAR(50),
tel VARCHAR(50)
);
INSERT INTO stu
VALUES(1,'XiaoWang','Henan','0371-12345678'),
(2,'XiaoLi','Hebei','13889072345'),
(3,'XiaoTian','Henan','0371-12345670');


步骤2:创建报名表sign,插入3条记录。
CREATE TABLE sign
(
s_id INT PRIMARY KEY,
s_name VARCHAR(20),
s_sch VARCHAR(50),
s_sign_sch VARCHAR(50)
);
INSERT INTO sign
VALUES(1,'XiaoWang','Middle School1','Peking University'),
(2,'XiaoLi','Middle School2','Tsinghua University'),
(3,'XiaoTian','Middle School3','Tsinghua University');


步骤3:创建成绩表stu_mark,插入3条记录。
CREATE TABLE stu_mark (s_id INT PRIMARY KEY ,s_name VARCHAR(20) ,mark int );
INSERT INTO stu_mark VALUES(1,'XiaoWang',80),(2,'XiaoLi',71),(3,'XiaoTian',70);


步骤4:创建考上Peking University的学生的视图
CREATE VIEW beida (id,name,mark,sch)
AS SELECT stu_mark.s_id,stu_mark.s_name,stu_mark.mark, sign.s_sign_sch
FROM stu_mark ,sign
WHERE stu_mark.s_id=sign.s_id AND stu_mark.mark>=41 AND sign.s_sign_sch='Peking University';


步骤5:创建考上Tsinghua University的学生的视图
CREATE VIEW qinghua (id,name,mark,sch)
AS SELECT stu_mark.s_id, stu_mark.s_name, stu_mark.mark, sign.s_sign_sch
FROM stu_mark ,sign
WHERE stu_mark.s_id=sign.s_id  AND stu_mark.mark>=40 AND sign.s_sign_sch='Tsinghua University';



步骤6:XiaoTian的成绩在录入的时候录入错误多录了50分,对其录入成绩进行更正。
UPDATE stu_mark SET mark = mark-50 WHERE stu_mark.s_name ='XiaoTian';


步骤7:查看更新过后视图和表的情况。
SELECT * FROM stu_mark;
SELECT * FROM qinghua;
SELECT * FROM beida;

步骤8:查看视图的创建信息。
 SELECT * FROM information_schema.views\G


步骤9:删除创建的视图。
DROP VIEW beida;
DROP VIEW qinghua;

MySql视图原理讲解与使用大全

摘要:本文主要讲了MySql中视图的定义、原理和如何使用、创建、删除等
  • Evankaka
  • Evankaka
  • 2015-07-31 16:58:42
  • 5586

MySQL视图的使用

视图即是虚拟表,也称为派生表,因为它们的内容都派生自其它表的查询结果。虽然视图看起来感觉和基本表一样,但是它们不是基本表。基本表的内容是持久的,而视图的内容是在使用过程中动态产生的。...
  • u013761665
  • u013761665
  • 2015-05-29 11:49:58
  • 7953

Mysql视图使用总结

视图可以看作为“虚拟表”,因为它返回的结果集格式与实体数据表返回的数据集格式类似,并且引用视图的方式与引用数据表的方式相同。每次查询使用视图时,DBMS会动态生成视图结果集所需要的逻辑合并到从基表数据...
  • why_2012_gogo
  • why_2012_gogo
  • 2016-03-20 16:53:11
  • 3429

Mysql 开启视图权限与创建视图教程

Mysql 开启视图权限与创建视图教程
  • qq_37022150
  • qq_37022150
  • 2017-08-09 19:56:45
  • 3246

MySql视图概念与实际应用

一. 视图概述 视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并...
  • qq_22642239
  • qq_22642239
  • 2016-08-05 17:10:50
  • 1330

mysql视图使用总结

一、什么是视图         视图是指计算机数据库中的视图,是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行...
  • wuyujian11
  • wuyujian11
  • 2016-11-25 17:09:22
  • 5604

MySQL优化之——视图

使用视图的理由是什么? 1、安全性:一般是这样做的:创建一个视图,定义好该视图所操作的数据。 之后将用户权限与视图绑定,这样的方式是使用到了一个特性:grant语句可以针对视图进行授予权限。 2、查询...
  • l1028386804
  • l1028386804
  • 2015-07-05 09:58:01
  • 2170

MySQL视图操作命令详解

创建视图 在MySQL中,创建视图的完整语法如下: CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] ...
  • zhangyong329
  • zhangyong329
  • 2016-10-08 11:00:12
  • 3352

MySQL查看视图

查看视图 是指查看数据库中,已经存在的视图的定义 查看视图,必须要有SHOW VIEW的权限查看视图有三种方式使用DESCRIBE语句使用DESCRIBE语句,查看视图 MySQL中,使用DES...
  • nangeali
  • nangeali
  • 2017-07-29 23:46:16
  • 3337

mysql中视图更新详解

视图的可更新性与视图中查询的定义是有关的 一、mysql中那些试图使不可更新的?以下类型的视图是不可更新的 1.包含以下关键字的sql语句:聚合函数(sum、min、max、count)、di...
  • hsd2012
  • hsd2012
  • 2016-04-09 12:04:33
  • 5946
收藏助手
不良信息举报
您举报文章:MySQL:视图
举报原因:
原因补充:

(最多只允许输入30个字)