mysql如何显示ddl_Mysql DDL语句之视图

Mysql 视图是一个虚拟表,内容由 select 查询语句定义, 同真实的表数据一致, 但是视图并不在数据库中以存储的数据值形式存在。

试图引用自定义查询表的字段, 并且在引用试图时动态生成, 对其所引用的基础表来说 Mysql 视图的作用类似于筛选。

toc

定义视图的筛选可以来自当前或其它数据库的一个或多个表,或者其它视图。

视图查询没有任何限制,通过它们进行数据修改时的限制也很少。

视图是存储在数据库中的 SQL 查询语句,它主要出于两种原因:

安全原因, 视图可以隐藏一些敏感的信息。

简化查询, 使复杂的查询易于理解和使用

创建视图

创建单表视图环境准备

## 创建表

mysql> use test;

mysql> create table t2(

id int primary key AUTO_INCREMENT not null,

name varchar(30) not null,

sex enum('man','gril') default 'man' not null,

time date not null,

post varchar(50) not null,

job varchar(100),

salary double(15,2) not null,

dep_id int

);

## 插入数据

mysql> insert into t2(name,sex,time,post,job,salary,dep_id) values

('jack','man','20180202','it','teach',5000,100),

('tom','man','20180203','it','teach',5500,100),

('robin','man','20180202','it','teach',8000,100),

('alice','gril','20180202','it','teach',7200,100),

('lisi','man','20180202','hr','hrcc',600,101),

('harry','man','20180202','hr', NULL,6000,101),

('trf','gril','20180206','sale','salecc',20000,102),

('test','gril','20180205','sale','salecc',2200,102),

('dog','man','20180205','sale', NULL,2200,102),

('alex','man','20180205','sale','',2200,102);

## 查看表结构

mysql> desc t2;

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

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

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

| id | int(11) | NO | PRI | NULL | auto_increment |

| name | varchar(30) | NO | | NULL | |

| sex | enum('man','gril') | NO | | man | |

| time | date | NO | | NULL | |

| post | varchar(50) | NO | | NULL | |

| job | varchar(100) | YES | | NULL | |

| salary | double(15,2) | NO | | NULL | |

| dep_id | int(11) | YES | | NULL | |

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

## 查询所有数据

mysql> select * from t2;

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

| id | name | sex | time | post | job | salary | dep_id |

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

| 1 | jack | man | 2018-02-02 | it | teach | 5000.00 | 100 |

| 2 | tom | man | 2018-02-03 | it | teach | 5500.00 | 100 |

| 3 | robin | man | 2018-02-02 | it | teach | 8000.00 | 100 |

| 4 | alice | gril | 2018-02-02 | it | teach | 7200.00 | 100 |

| 5 | lisi | man | 2018-02-02 | hr | hrcc | 600.00 | 101 |

| 6 | harry | man | 2018-02-02 | hr | NULL | 6000.00 | 101 |

| 7 | trf | gril | 2018-02-06 | sale | salecc | 20000.00 | 102 |

| 8 | test | gril | 2018-02-05 | sale | salecc | 2200.00 | 102 |

| 9 | dog | man | 2018-02-05 | sale | NULL | 2200.00 | 102 |

| 10 | alex | man | 2018-02-05 | sale | | 2200.00 | 102 |

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

创建单表视图

语法:CREATE VIEW 视图名 AS SELECT 语句;

## 创建视图,只能看到姓名,性别,部门,职责

mysql> create view view_t2 as select name,sex,post,job from test.t2;

## 查看视图表结构

mysql> desc view_t2;

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

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

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

| name | varchar(30) | NO | | NULL | |

| sex | enum('man','gril') | NO | | man | |

| post | varchar(50) | NO | | NULL | |

| job | varchar(100) | YES | | NULL | |

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

## 查看视图所有内容

mysql> select * from view_t2;

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

| name | sex | post | job |

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

| jack | man | it | teach |

| tom | man | it | teach |

| robin | man | it | teach |

| alice | gril | it | teach |

| lisi | man | hr | hrcc |

| harry | man | hr | NULL |

| trf | gril | sale | salecc |

| test | gril | sale | salecc |

| dog | man | sale | NULL |

| alex | man | sale | |

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

创建多表视图环境准备

mysql> create database shop;

mysql> use shop;

## 创建产品表

mysql> create table product(

id int unsigned auto_increment primary key not null,

name varchar(60) not null,

price double not null

);

## 插入产品数据

mysql> insert into product(name,price) values

('apple',5),

('balane',6),

('pear',7);

## 创建销售表

mysql> create table purchase(

id int unsigned auto_increment primary key not null,

name varchar(60) not null,

quantity int not null default 0,

gen_time datetime not null

);

## 插入销售数据

mysql> insert into purchase(name,quantity,gen_time) values

('apple',7,now()),

('pear',10,now());

## 查询产品卖出金额

mysql> select product.name,product.price,purchase.quantity,product.price * purchase.quantity as total_value from product,purchase where product.name = purchase.name;

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

| name | price | quantity | total_value |

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

| apple | 5 | 7 | 35 |

| pear | 7 | 10 | 70 |

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

创建多表视图

创建视图

mysql> create view total_product as select product.name,product.price,purchase.quantity,product.price * purchase.quantity as total from purchase,product where purchase.name = product.name;

## 查询视图数据

mysql> select * from total_product;

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

| name | price | quantity | total |

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

| apple | 5 | 7 | 35 |

| pear | 7 | 10 | 70 |

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

## 再次卖出产品后

mysql> insert into purchase(name,quantity,gen_time) values ('balane',20,now());

## 再次查询视图数据

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

| name | price | quantity | total |

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

| apple | 5 | 7 | 35 |

| balane | 6 | 20 | 120 |

| pear | 7 | 10 | 70 |

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

查看视图

查看视图名

SHOW TABLES 视图名;

查看视图详细信息

SHOW TABLE STATUS FROM 视图名\G

查看视图定义信息

SHOW CREATE VIEW 视图名\G

查看视图表结构

DESC 视图名;

修改视图

语法:ALTER VIEW 视图名 AS 新 SELECT 语句

mysql> use test;

mysql> alter view view_t2 as select name,post,job from test.t2;

mysql> desc view_t2;

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

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

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

| name | varchar(30) | NO | | NULL | |

| post | varchar(50) | NO | | NULL | |

| job | varchar(100) | YES | | NULL | |

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

mysql> select * from view_t2;

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

| name | post | job |

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

| jack | it | teach |

| tom | it | teach |

| robin | it | teach |

| alice | it | teach |

| lisi | hr | hrcc |

| harry | hr | NULL |

| trf | sale | salecc |

| test | sale | salecc |

| dog | sale | NULL |

| alex | sale | |

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

删除视图

语法:DROP VIEW view_name [,view_name]…;

mysql> drop view view_t2;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值