0
点赞
收藏
分享

微信扫一扫

Git版本管理(03)stash临时操作和.gitignore配置

扒皮狼 2023-08-24 阅读 54

目录

一、视图概述

二、视图的作用和优点

三、视图的使用规则

四、视图操作

1、创建视图

 2、查看视图

1)查看视图基本信息

2)查看视图详细信息

3、修改视图

4、更新视图

5、删除视图


一、视图概述

视图是数据库中的一个虚拟表,同真实表一样,视图包含一系列带有名称的行和列数据。

视图是从一个或者多个表中导出来的,视图的行为与表非常相似,在视图中,用户可以使用SELECT、INSERT、UPDATE、DELETE等语句。从MySQL5.0开始就可以使用视图,视图可以使用户操作方便,而且可以保障数据库系统的安全性。视图其实没有存储任何数据,它只是对表的一个查询,视图的定义保存在数据字典内,创建视图所基于的表叫做‘基表’。

二、视图的作用和优点

作用:控制安全、保存查询数据

优点:提供了灵活一致级别安全性、隐藏了数据的复杂性、简化了用户的SQL指令、通过重命名列,从另一个角度提供数据。

三、视图的使用规则

1、视图名必须有唯一的命名;

2. 在mysql中视图的数量没有限制;

3. 创建视图必须从管理员那里获得必要的权限;

4. 视图支持嵌套,也就是说可以利用其他视图检索出来的数据创建新的视图;

5. 在视图中可以使用OREDR BY,但是如果视图内已经使用该排序子句,则视图的ORDER BY将覆盖前面的 ORDER BY;

6. 视图不能索引,也不能关联触发器或默认值;

7. 视图可以和表同时使用。

四、视图操作

1、创建视图

基本语法

create [or replace] [algorithm = {undefined | merge | temptable}]
view 视图名 [字段列表] as 查询语句
[with [cascaded | local] check option]

例如:

mysql> create view view_emp3 as select * from emp3;
Query OK, 0 rows affected (0.00 sec)

mysql> show tables;
+-----------------+
| Tables_in_mydb3 |
+-----------------+
| dept3           |
| emp3            |
| view_emp3       |
+-----------------+
3 rows in set (0.00 sec)

mysql> select * from view_emp3;
+-----+--------------+------+---------+
| eid | ename        | age  | dept_id |
+-----+--------------+------+---------+
| 1   | 乔峰         |   20 | 1001    |
| 10  | 丁春秋       |   71 | 1005    |
| 2   | 段誉         |   21 | 1001    |
| 3   | 虚竹         |   23 | 1001    |
| 4   | 阿紫         |   18 | 1001    |
| 5   | 扫地僧       |   85 | 1002    |
| 6   | 李秋水       |   33 | 1002    |
| 7   | 鸠摩智       |   50 | 1002    |
| 8   | 天山童姥     |   60 | 1003    |
| 9   | 慕容博       |   58 | 1003    |
+-----+--------------+------+---------+
10 rows in set (0.03 sec)

 2、查看视图

1)查看视图基本信息

语法1

describe 视图名;

例如

mysql> describe view_emp3;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| eid     | varchar(20) | NO   |     | NULL    |       |
| ename   | varchar(20) | YES  |     | NULL    |       |
| age     | int(11)     | YES  |     | NULL    |       |
| dept_id | varchar(20) | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

语法2

show table status like '视图名' \G

例如

mysql> show table status like 'view_emp3' \G
*************************** 1. row ***************************
           Name: view_emp3
         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
1 row in set (0.00 sec)

2)查看视图详细信息

语法

show create view 视图名;

例如

mysql> show create view view_emp3;
+-----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
| View      | Create View                                                                                                                                                                                                           | character_set_client | collation_connection |
+-----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
| view_emp3 | CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `view_emp3` AS select `emp3`.`eid` AS `eid`,`emp3`.`ename` AS `ename`,`emp3`.`age` AS `age`,`emp3`.`dept_id` AS `dept_id` from `emp3` | utf8                 | utf8_general_ci      |
+-----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------------+----------------------+
1 row in set (0.00 sec)

3、修改视图

语法1

create [or replace] [algorithm = {undefined | merge | temptable}]
view 视图名 [字段列表] as 查询语句
[with [cascaded | local] check option]

 语法2

alter [algorithm = {undefined | merge | temptable}]
view 视图名 [字段列表] as 查询语句
[with [cascaded | local] check option]

例如

mysql> alter view view_emp3 as select eid,ename from emp3;
Query OK, 0 rows affected (0.01 sec)
#修改后查看表基本信息
mysql> desc view_emp3;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| eid   | varchar(20) | NO   |     | NULL    |       |
| ename | varchar(20) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

4、更新视图

语法

#更新数据
update 视图名 set 字段名1=值1,……  [where <条件>];
#插入数据
insert into 视图名 [字段名列表] values (字段1值,字段2值,……) [,(字段1值,字段2值,……)……];
#删除数据
delete from 视图名 [where <条件>];

例如

#更新数据前查看表数据
mysql> select * from view_emp3;
+-----+--------------+
| eid | ename        |
+-----+--------------+
| 1   | 乔峰         |
| 10  | 丁春秋       |
| 2   | 段誉         |
| 3   | 虚竹         |
| 4   | 阿紫         |
| 5   | 扫地僧       |
| 6   | 李秋水       |
| 7   | 鸠摩智       |
| 8   | 天山童姥     |
| 9   | 慕容博       |
+-----+--------------+
10 rows in set (0.00 sec)

#修改数据 eid=10 的记录ename为‘张三’
mysql> update view_emp3 set ename='张三' where eid=10;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

#插入一个数据eid=20 ename='李四'的数据
mysql> insert into view_emp3 values (20,'李四');
Query OK, 1 row affected (0.00 sec)

#更新数据后进行查看
mysql> select * from view_emp3;
+-----+--------------+
| eid | ename        |
+-----+--------------+
| 1   | 乔峰         |
| 10  | 张三         |
| 2   | 段誉         |
| 20  | 李四         |
| 3   | 虚竹         |
| 4   | 阿紫         |
| 5   | 扫地僧       |
| 6   | 李秋水       |
| 7   | 鸠摩智       |
| 8   | 天山童姥     |
| 9   | 慕容博       |
+-----+--------------+

#删除eid=20的数据
mysql> delete from view_emp3 where eid=20;
Query OK, 1 row affected (0.00 sec)

#删除后再进行查看
mysql> select * from view_emp3;
+-----+--------------+
| eid | ename        |
+-----+--------------+
| 1   | 乔峰         |
| 10  | 张三         |
| 2   | 段誉         |
| 3   | 虚竹         |
| 4   | 阿紫         |
| 5   | 扫地僧       |
| 6   | 李秋水       |
| 7   | 鸠摩智       |
| 8   | 天山童姥     |
| 9   | 慕容博       |
+-----+--------------+
10 rows in set (0.00 sec)

5、删除视图

语法

drop view [if exists] 视图视 [,视图名] …… [restrict | cascade];

例如

#删除前先查看存在的表
mysql> show tables;
+-----------------+
| Tables_in_mydb3 |
+-----------------+
| dept3           |
| emp3            |
| view_emp3       |
+-----------------+
3 rows in set (0.00 sec)

#删除视图view_emp3
mysql> drop view view_emp3;
Query OK, 0 rows affected (0.00 sec)

#删除后再进行查看
mysql> show tables;
+-----------------+
| Tables_in_mydb3 |
+-----------------+
| dept3           |
| emp3            |
+-----------------+
2 rows in set (0.00 sec)

参考书籍:MySQL5.7从入门到精通-清华大学出版社 

举报

相关推荐

0 条评论