(七)MySQL视图
(七)MySQL视图
一、视图介绍
1.视图的介绍
一张虚表,和真实的表一样。视图包含一系列带有名称的行和列数据。视图是从一个或多个表中导出来的,我们可以通过insert,update,delete来操作视图。当通过视图看到的数据被修改时,相应的原表的数据也会变化。同时原表发生变化,则这种变化也可以自动反映到视图中。
2.视图的优点
- 简单化:看到的就是需要的。视图不仅可以简化用户对数据的理解,也可以简化操作。经常被使用的查询可以制作成一个视图
- 安全性:通过视图用户只能查询和修改所能见到的数据,数据库中其他的数据既看不见也取不到。数据库授权命令可以让每个用户对数据库的检索限制到特定的数据库对象上,但不能授权到数据库特定的行,列上。
- 逻辑数据独立性:视图可帮助用户屏蔽真实表结构变化带来的影响
二、创建视图create view
1.语法
Create [or replace替换] [algroithm视图选择的算法={undefined|merge |temptable}] view 视图名 [(column_list)] as select_statement [with[cascaded|local]check option]mysql> help create view;
Name: 'CREATE VIEW'
Description:
Syntax:
CREATE[OR REPLACE][ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}][DEFINER = user][SQL SECURITY { DEFINER | INVOKER }]VIEW view_name [(column_list)]AS select_statement[WITH [CASCADED | LOCAL] CHECK OPTION]
[algroithm视图选择的算法={undefined|merge |temptable}]
- undefined:不常用。
- merge :表示将使用的视图语句与视图定义合并起来,使视图定义的某一部分取代语句对应的部分
- temptable :表示将视图的结果存入临时表,然后用临时表来执行语句
with[cascaded|local]
- cascaded :默认为cascaded,表示更新视图时,满足所有相关视图和表的条件
- local :表示更新视图时,满足该视图本身定义的条件即可
2.创建单表视图
mysql> create database myview;
Query OK, 1 row affected (0.00 sec)mysql> use myview;
Database changedmysql>
[root@MySQL ~]# cd /usr/local/mysql/data/myview/
[root@MySQL myview]# ll
total 112
-rw-r----- 1 mysql mysql 61 Oct 12 20:50 db.opt
[root@MySQL myview]#
mysql> create table t(quantity int, price int);
Query OK, 0 rows affected (0.04 sec)mysql> desc t;
+----------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------+------+-----+---------+-------+
| quantity | int(11) | YES | | NULL | |
| price | int(11) | YES | | NULL | |
+----------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)mysql> insert into t values (3,50);
Query OK, 1 row affected (0.00 sec)mysql> select * from t;
+----------+-------+
| quantity | price |
+----------+-------+
| 3 | 50 |
+----------+-------+
1 row in set (0.00 sec)mysql> create view view_t as select quantity,price,quantity*price from t;
Query OK, 0 rows affected (0.00 sec)mysql>
[root@MySQL myview]# ll
total 112
-rw-r----- 1 mysql mysql 61 Oct 12 20:50 db.opt
-rw-r----- 1 mysql mysql 8600 Oct 12 20:51 t.frm
-rw-r----- 1 mysql mysql 98304 Oct 12 20:51 t.ibd
[root@MySQL myview]#
查看
mysql> show tables;
+------------------+
| Tables_in_myview |
+------------------+
| t |
| view_t |
+------------------+
2 rows in set (0.00 sec)mysql>
[root@MySQL myview]# ll
total 116
-rw-r----- 1 mysql mysql 61 Oct 12 20:50 db.opt
-rw-r----- 1 mysql mysql 8600 Oct 12 20:51 t.frm #数据结构文件
-rw-r----- 1 mysql mysql 98304 Oct 12 20:51 t.ibd #数据库文件
-rw-r----- 1 mysql mysql 641 Oct 12 20:55 view_t.frm #该表不存数据
[root@MySQL myview]#
mysql> select * from view_t;
+----------+-------+----------------+
| quantity | price | quantity*price |
+----------+-------+----------------+
| 3 | 50 | 150 |
+----------+-------+----------------+
1 row in set (0.00 sec)mysql>
创建视图并命名新视图列表的名称
mysql> create view view_t2(quantity,price,tatal) as select quantity,price,quantity*price from t;
Query OK, 0 rows affected (0.00 sec)mysql>
[root@MySQL myview]# ll
total 120
-rw-r----- 1 mysql mysql 61 Oct 12 20:50 db.opt
-rw-r----- 1 mysql mysql 8600 Oct 12 20:51 t.frm
-rw-r----- 1 mysql mysql 98304 Oct 12 20:51 t.ibd
-rw-r----- 1 mysql mysql 623 Oct 12 21:12 view_t2.frm
-rw-r----- 1 mysql mysql 641 Oct 12 20:55 view_t.frm
[root@MySQL myview]#
查看
mysql> select * from view_t2;
+----------+-------+-------+
| quantity | price | tatal |
+----------+-------+-------+
| 3 | 50 | 150 |
+----------+-------+-------+
1 row in set (0.00 sec)mysql>
3.创建多表视图abc
mysql> create table student(-> s_id int(3) primary key,-> s_name varchar(30),-> s_age int(3),-> s_sex varchar(8));
Query OK, 0 rows affected (0.01 sec)mysql> insert into student values (1,'zhangsan',18,1),(2,'lisi',19,1);
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0mysql> select * from student;
+------+----------+-------+-------+
| s_id | s_name | s_age | s_sex |
+------+----------+-------+-------+
| 1 | zhangsan | 18 | 1 |
| 2 | lisi | 19 | 1 |
+------+----------+-------+-------+
2 rows in set (0.00 sec)mysql> create table stu_info(-> s_id int(3),-> class varchar(50),-> addr varchar(100));
Query OK, 0 rows affected (0.61 sec)mysql> insert into stu_info values-> (1,'erban','anhui'),-> (2,'sanban','chongqing'),-> (3,'yiban','shandong');
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0mysql> select * from stu_info;
+------+--------+-----------+
| s_id | class | addr |
+------+--------+-----------+
| 1 | erban | anhui |
| 2 | sanban | chongqing |
| 3 | yiban | shandong |
+------+--------+-----------+
3 rows in set (0.00 sec)mysql> create view stu_class(id,name,class) as select student.s_id,student.s_name,stu_info.class from student,stu_info where student.s_id=stu_info.s_id;
Query OK, 0 rows affected (0.01 sec)mysql> select * from stu_class;
+----+----------+--------+
| id | name | class |
+----+----------+--------+
| 1 | zhangsan | erban |
| 2 | lisi | sanban |
+----+----------+--------+
2 rows in set (0.00 sec)mysql>
查看视图的基本信息的语法describe
Describe 视图名
查看视图的基本信息
mysql> desc stu_class;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(3) | NO | | NULL | |
| name | varchar(30) | YES | | NULL | |
| class | varchar(50) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)mysql>
查看视图的基本信息的语法show
Show table status like ‘视图名’\G;
查看视图的基本信息
mysql> show table status like 'stu_class'\G;
*************************** 1. row ***************************Name: stu_classEngine: NULLVersion: NULLRow_format: NULLRows: NULLAvg_row_length: NULLData_length: NULL
Max_data_length: NULLIndex_length: NULLData_free: NULLAuto_increment: NULLCreate_time: NULLUpdate_time: NULLCheck_time: NULLCollation: NULLChecksum: NULLCreate_options: NULLComment: VIEW
1 row in set (0.00 sec)ERROR:
No query specifiedmysql> show table status like 'student'\G;
*************************** 1. row ***************************Name: studentEngine: InnoDBVersion: 10Row_format: DynamicRows: 2Avg_row_length: 8192Data_length: 16384
Max_data_length: 0Index_length: 0Data_free: 0Auto_increment: NULLCreate_time: 2020-10-12 21:16:07Update_time: 2020-10-12 21:30:17Check_time: NULLCollation: utf8_general_ciChecksum: NULLCreate_options: Comment:
1 row in set (0.00 sec)ERROR:
No query specifiedmysql> show table status like 'stu_info'\G;
*************************** 1. row ***************************Name: stu_infoEngine: InnoDBVersion: 10Row_format: DynamicRows: 3Avg_row_length: 5461Data_length: 16384
Max_data_length: 0Index_length: 0Data_free: 0Auto_increment: NULLCreate_time: 2020-10-12 21:16:57Update_time: 2020-10-12 21:18:49Check_time: NULLCollation: utf8_general_ciChecksum: NULLCreate_options: Comment:
1 row in set (0.00 sec)ERROR:
No query specifiedmysql>
查看视图的详细信息的语法
Show create view 视图名;
或show create view 视图名\G
查看视图的详细信息
mysql> show create view stu_class\G
*************************** 1. row ***************************View: stu_classCreate View: CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `stu_class` AS select `student`.`s_id` AS `id`,`student`.`s_name` AS `name`,`stu_info`.`class` AS `class` from (`student` join `stu_info`) where (`student`.`s_id` = `stu_info`.`s_id`)
character_set_client: utf8
collation_connection: utf8_general_ci
1 row in set (0.00 sec)mysql>
在mysql中,information schema 数据库下的views表中存储了所有视图的定义。通过对views表的查询,可以查看数据库中所有视图的详细信息。
mysql> desc information_schema.views;
+----------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------------+--------------+------+-----+---------+-------+
| TABLE_CATALOG | varchar(512) | NO | | | |
| TABLE_SCHEMA | varchar(64) | NO | | | |
| TABLE_NAME | varchar(64) | NO | | | |
| VIEW_DEFINITION | longtext | NO | | NULL | |
| CHECK_OPTION | varchar(8) | NO | | | |
| IS_UPDATABLE | varchar(3) | NO | | | |
| DEFINER | varchar(93) | NO | | | |
| SECURITY_TYPE | varchar(7) | NO | | | |
| CHARACTER_SET_CLIENT | varchar(32) | NO | | | |
| COLLATION_CONNECTION | varchar(32) | NO | | | |
+----------------------+--------------+------+-----+---------+-------+
10 rows in set (0.00 sec)mysql> select * from information_schema.views where table_schema='myview'\G
*************************** 1. row ***************************TABLE_CATALOG: defTABLE_SCHEMA: myviewTABLE_NAME: stu_classVIEW_DEFINITION: select `myview`.`student`.`s_id` AS `id`,`myview`.`student`.`s_name` AS `name`,`myview`.`stu_info`.`class` AS `class` from `myview`.`student` join `myview`.`stu_info` where (`myview`.`student`.`s_id` = `myview`.`stu_info`.`s_id`)CHECK_OPTION: NONEIS_UPDATABLE: YESDEFINER: root@localhostSECURITY_TYPE: DEFINER
CHARACTER_SET_CLIENT: utf8
COLLATION_CONNECTION: utf8_general_ci
*************************** 2. row ***************************TABLE_CATALOG: defTABLE_SCHEMA: myviewTABLE_NAME: view_tVIEW_DEFINITION: select `myview`.`t`.`quantity` AS `quantity`,`myview`.`t`.`price` AS `price`,(`myview`.`t`.`quantity` * `myview`.`t`.`price`) AS `quantity*price` from `myview`.`t`CHECK_OPTION: NONEIS_UPDATABLE: YESDEFINER: root@localhostSECURITY_TYPE: DEFINER
CHARACTER_SET_CLIENT: utf8
COLLATION_CONNECTION: utf8_general_ci
*************************** 3. row ***************************TABLE_CATALOG: defTABLE_SCHEMA: myviewTABLE_NAME: view_t2VIEW_DEFINITION: select `myview`.`t`.`quantity` AS `quantity`,`myview`.`t`.`price` AS `price`,(`myview`.`t`.`quantity` * `myview`.`t`.`price`) AS `tatal` from `myview`.`t`CHECK_OPTION: NONEIS_UPDATABLE: YESDEFINER: root@localhostSECURITY_TYPE: DEFINER
CHARACTER_SET_CLIENT: utf8
COLLATION_CONNECTION: utf8_general_ci
3 rows in set (0.00 sec)mysql>
三、修改视图
1.create or replace view 修改视图
mysql> use myview;
Database changed
mysql> show tables;
+------------------+
| Tables_in_myview |
+------------------+
| stu_class |
| stu_info |
| student |
| t |
| view_t |
| view_t2 |
+------------------+
6 rows in set (0.00 sec)mysql> desc view_t;
+----------------+------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+------------+------+-----+---------+-------+
| quantity | int(11) | YES | | NULL | |
| price | int(11) | YES | | NULL | |
| quantity*price | bigint(21) | YES | | NULL | |
+----------------+------------+------+-----+---------+-------+
3 rows in set (0.00 sec)mysql> select * from view_t;
+----------+-------+----------------+
| quantity | price | quantity*price |
+----------+-------+----------------+
| 3 | 50 | 150 |
+----------+-------+----------------+
1 row in set (0.00 sec)mysql> desc t;
+----------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------+------+-----+---------+-------+
| quantity | int(11) | YES | | NULL | |
| price | int(11) | YES | | NULL | |
+----------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)mysql> select * from t;
+----------+-------+
| quantity | price |
+----------+-------+
| 3 | 50 |
+----------+-------+
1 row in set (0.00 sec)mysql> create or replace view view_t as select * from t;
Query OK, 0 rows affected (0.00 sec)mysql> desc view_t;
+----------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------+------+-----+---------+-------+
| quantity | int(11) | YES | | NULL | |
| price | int(11) | YES | | NULL | |
+----------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)mysql> select * from view_t;
+----------+-------+
| quantity | price |
+----------+-------+
| 3 | 50 |
+----------+-------+
1 row in set (0.00 sec)mysql>
2.Alter 修改视图
mysql> alter view view_t as select quantity from t;
Query OK, 0 rows affected (0.00 sec)mysql> select * from view_t;
+----------+
| quantity |
+----------+
| 3 |
+----------+
1 row in set (0.00 sec)mysql>
四、更新视图
测试修改视图,原表是否有变化
1.Update
mysql> select * from view_t;
+----------+
| quantity |
+----------+
| 3 |
+----------+
1 row in set (0.00 sec)mysql> select * from t;
+----------+-------+
| quantity | price |
+----------+-------+
| 3 | 50 |
+----------+-------+
1 row in set (0.00 sec)mysql> update view_t set quantity=5; #更新视图
Query OK, 1 row affected (0.02 sec)
Rows matched: 1 Changed: 1 Warnings: 0mysql> select * from view_t;
+----------+
| quantity |
+----------+
| 5 |
+----------+
1 row in set (0.00 sec)mysql> select * from t;
+----------+-------+
| quantity | price |
+----------+-------+
| 5 | 50 | #可以看出修改视图,原表也有变化
+----------+-------+
1 row in set (0.01 sec)mysql>
2.Insert
mysql> insert into t values (10,20); #在原表上插入数据
Query OK, 1 row affected (0.00 sec)mysql> select * from t;
+----------+-------+
| quantity | price |
+----------+-------+
| 5 | 50 |
| 10 | 20 |
+----------+-------+
2 rows in set (0.00 sec)mysql> select * from view_t;
+----------+
| quantity |
+----------+
| 5 |
| 10 | #修改原表,视图也会有相应的变化
+----------+
2 rows in set (0.00 sec)mysql>
3.delete
mysql> select * from view_t2;
+----------+-------+-------+
| quantity | price | tatal |
+----------+-------+-------+
| 5 | 50 | 250 |
| 10 | 20 | 200 |
+----------+-------+-------+
2 rows in set (0.00 sec)mysql> select * from t;
+----------+-------+
| quantity | price |
+----------+-------+
| 5 | 50 |
| 10 | 20 |
+----------+-------+
2 rows in set (0.00 sec)mysql> delete from view_t2 where price=50; #删除视图中的数据
Query OK, 1 row affected (0.01 sec)mysql> select * from view_t2;
+----------+-------+-------+
| quantity | price | tatal |
+----------+-------+-------+
| 10 | 20 | 200 |
+----------+-------+-------+
1 row in set (0.00 sec)mysql> select * from t;
+----------+-------+
| quantity | price |
+----------+-------+
| 10 | 20 | #删除视图中的数据,原表也会有相应的变化
+----------+-------+
1 row in set (0.00 sec)mysql>
4.视图无法更新的情况
视图存在以下情况时,更新操作无法执行
- 视图中不包含基表中被定义为非空的列
- 在定义视图的select语句后的字段列表中使用了数学表达式
- 在定义视图的select 语句后字段列表中使用了聚合函数时不接受更新操作
- select中,使用了union \top \group by 或having 无法接受
五、删除视图
Drop view [IF EXISTS]视图名1,视图名2 ……
应用:
mysql> select * from information_schema.views where TABLE_SCHEMA='myview'\G
*************************** 1. row ***************************TABLE_CATALOG: defTABLE_SCHEMA: myviewTABLE_NAME: stu_classVIEW_DEFINITION: select `myview`.`student`.`s_id` AS `id`,`myview`.`student`.`s_name` AS `name`,`myview`.`stu_info`.`class` AS `class` from `myview`.`student` join `myview`.`stu_info` where (`myview`.`student`.`s_id` = `myview`.`stu_info`.`s_id`)CHECK_OPTION: NONEIS_UPDATABLE: YESDEFINER: root@localhostSECURITY_TYPE: DEFINER
CHARACTER_SET_CLIENT: utf8
COLLATION_CONNECTION: utf8_general_ci
*************************** 2. row ***************************TABLE_CATALOG: defTABLE_SCHEMA: myviewTABLE_NAME: view_tVIEW_DEFINITION: select `myview`.`t`.`quantity` AS `quantity` from `myview`.`t`CHECK_OPTION: NONEIS_UPDATABLE: YESDEFINER: root@localhostSECURITY_TYPE: DEFINER
CHARACTER_SET_CLIENT: utf8
COLLATION_CONNECTION: utf8_general_ci
*************************** 3. row ***************************TABLE_CATALOG: defTABLE_SCHEMA: myviewTABLE_NAME: view_t2VIEW_DEFINITION: select `myview`.`t`.`quantity` AS `quantity`,`myview`.`t`.`price` AS `price`,(`myview`.`t`.`quantity` * `myview`.`t`.`price`) AS `tatal` from `myview`.`t`CHECK_OPTION: NONEIS_UPDATABLE: YESDEFINER: root@localhostSECURITY_TYPE: DEFINER
CHARACTER_SET_CLIENT: utf8
COLLATION_CONNECTION: utf8_general_ci
3 rows in set (0.00 sec)mysql> drop view view_t2;
Query OK, 0 rows affected (0.00 sec)mysql> show tables;
+------------------+
| Tables_in_myview |
+------------------+
| stu_class |
| stu_info |
| student |
| t |
| view_t |
+------------------+
5 rows in set (0.00 sec)mysql>
[root@MySQL ~]# cd /usr/local/mysql/data/myview/
[root@MySQL myview]# ll
total 336
-rw-r----- 1 mysql mysql 61 Oct 12 20:50 db.opt
-rw-r----- 1 mysql mysql 834 Oct 12 21:25 stu_class.frm
-rw-r----- 1 mysql mysql 8658 Oct 12 21:16 student.frm
-rw-r----- 1 mysql mysql 98304 Oct 12 21:30 student.ibd
-rw-r----- 1 mysql mysql 8622 Oct 12 21:16 stu_info.frm
-rw-r----- 1 mysql mysql 98304 Oct 12 21:18 stu_info.ibd
-rw-r----- 1 mysql mysql 8600 Oct 12 20:51 t.frm
-rw-r----- 1 mysql mysql 98304 Oct 13 01:16 t.ibd
-rw-r----- 1 mysql mysql 418 Oct 13 01:05 view_t.frm
[root@MySQL myview]#
mysql> drop view if exists stu_class;
Query OK, 0 rows affected (0.00 sec)mysql> drop view if exists stu_class;
Query OK, 0 rows affected, 1 warning (0.00 sec)mysql> show warnings;
+-------+------+----------------------------------+
| Level | Code | Message |
+-------+------+----------------------------------+
| Note | 1051 | Unknown table 'myview.stu_class' |
+-------+------+----------------------------------+
1 row in set (0.00 sec)mysql> show create view stu_class;
ERROR 1146 (42S02): Table 'myview.stu_class' doesn't exist
mysql>
六、MySQL中视图和表的区别与联系
MySQL中视图和表的区别以及联系是什么?
1.两者的区别
(1)视图是已经编译好的SQL语句,是基于SQL语句的结果集的可视化的表,是一个虚表。而表不是。
(2)视图没有实际的物理记录,而表有。
(3)表是内容,视图窗口 。
(4)表和视图虽然都占用物理空间,但是视图只是逻辑概念存在,而表可以及时对数据进行修改,但是视图只能用创建语句来修改。
(5)视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL 语句的集合。从安全角度来说,视图可以防止用户接触数据表,因而不知道表结构。
(6)表属于全局模式中的表,是实表。而视图属于局部模式的表,是虚表 。
(7)视图的建立和删除只影响视图本身,而不影响对应表的基本表。
2.两者的联系
(1)视图是在基本表之上建立的表,它的结构和内容都来自于基本表,它依赖基本表存在而存在。
(2)一个视图可以对应一个基本表,也可以对应多个基本表。
(3)视图是基本的抽象和逻辑意义上建立的关系。
这只是我的一些浅薄的见解,望多指教!
(七)MySQL视图相关推荐
- MySQL数据库,从入门到精通:第十四篇——MySQL视图详解
MySQL数据库,从入门到精通:第十四篇--MySQL视图详解 第 14 篇_视图 1. 常见的数据库对象 2. 视图概述 2. 1 为什么使用视图? 2. 2 视图的理解 3. 创建视图 3. 1 ...
- 【数据库优化专题】MySQL视图优化(一)
本期数据库优化专题分享,为大家带来的是DBA+社群MySQL领域原创专家--李海翔所著的MySQL视图优化系列文章.以下是第一部分的内容,未完部分敬请关注后续更新. 专家简介 李海翔 网名:那海蓝蓝 ...
- mysql视图登录_mysql视图
mysql视图机制 什么是视图 视图是一张虚拟的表,为什么是虚拟呢?因为视图与数据库中存在的表不太一样,前面我们创建的4张表都是包含数据的, 如用户信息,订单信息等,而视图则是不包含数据的,下面通过一 ...
- mysql test 映射到实体_将MySql视图映射到JPA Entitites,使用哪个唯一...
我不认为有一种标准方式,但这种方法似乎值得尝试. 想法是为视图动态生成唯一的"id"值(类似于rownum).来自Create a view with column num_row ...
- 1、MySQL视图是什么?
MySQL 视图(View)是一种虚拟存在的表,同真实表一样,视图也由列和行构成,但视图并不实际存在于数据库中.行和列的数据来自于定义视图的查询中所使用的表,并且还是在使用视图时动态生成的. 数据库中 ...
- mysql 视图操作和存储过程
1.mysql 视图的操作是在新版本数据库才支持的,视图操作的好处是可以简化数据库的查询,特别是一些经常查询的数据表我们可以先创建一个视图,以后要在查询这个类式 的数据表时候,就可以直接查询该视图.这 ...
- MYSQL视图用户管理
MYSQL视图 文章目录 MYSQL视图 1. 基本使用 2. 视图规则和限制 用户管理 1. 用户 2. 数据库的权限 视图是一个虚拟表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列 ...
- mysql 视图怎么调用方法_mysql 视图的使用
mysql视图的作用(详细) 测试表:user有id,name,age,sex字段 测试表:goods有id,name,price字段 测试表:ug有id,userid,goodsid字段 视图的作用 ...
- mysql视图实现的_mysql视图是什么?怎么实现?
mysql视图是什么?怎么实现? 发布时间:2020-05-21 18:00:24 来源:亿速云 阅读:152 作者:鸽子 视图本身是一张虚拟表,不存放任何数据.在使用SQL语句访问视图的时候,获取的 ...
最新文章
- ionic 获取input的值
- hibernate.hbm2ddl.auto配置详解
- Asp.net Ajax AutoComplete 控件的用法
- C++实现链式存储二叉树
- php odbc连接mysql数据库_PHP 使用 ODBC 连接 Mysql 数据库
- redistemplate 设置永不过期_解决密码已过期,拒绝访问问题
- iOS开发——UI基础-KVC
- 再谈mysql数据库之索引,联合索引,覆盖索引
- PCB分析神器,一键找出Bug
- Base-calling for next-generation sequencing platforms (译文)
- android数独游戏数据库分析,基于Android实现数独游戏
- Laravel log channel 分组配置
- 用计算机弹出平凡之路节奏,计算机音乐谱平凡之路
- python 多线程 假的_天啦噜!Python多线程居然是骗人的
- P1548 棋盘问题
- goinception审核规则
- Oracle update语句用法
- Isight软件调用matlab
- 2017广州(国际)演艺设备、智能声光产品技术展览会GETshow会刊(参展商名录)
- HTML5 批量大文件上传下载
热门文章
- SCUD Busters POJ - 1264(凸包)
- DFS与深免在海口观澜湖免税城开设大型高端商场;上海第二家Moxy酒店正式开业 | 美通社头条...
- 推荐几个 Windows 小工具
- 利用Win32 API写一个支持多坐标的鼠标连点器.
- 自制操作系统系列(四):进入64位模式
- python防止程序多开,打包EXE实现
- 合肥高考成绩怎么查询2021,2021合肥高考成绩查询系统
- 周董下次发新歌,可以请 AI 来作词吗?
- 一个菜鸟的心得——音量快捷助手软件分享
- IT人看《国富论》系列:第一篇之第四章:论货币的起源及其效用。UML是软件行业的货币...