MYSQL数据库MySQL 视图的基础操作(五)
|
《MYSQL数据库MySQL 视图的基础操作(五)》要点: 1.为什么使用视图: 2.创建视图: CREATE VIEW view_name AS 查询语句 示例: use zhaojd_test; //选择一个自己创建的库 create table t_product( //创建表 id int primary key,pname varchar(20),price decimal(8,2) ); insert into t_product values(1,'apple',6.5); //向表中插入数据 insert into t_product values(2,'orange',3); //向表中插入数据 create view view_product as select id,name from t_product; //创建视图 select * from view_product; 结果为: 2.2 创建各种视图: 2.2.1 封装实现查询常量语句的视图(常量视图):MYSQL必读 示例: mysql> create view view_test1 as select 3.1415926; Query OK,0 rows affected (0.07 sec) mysql> select * from view_test1; +-----------+ | 3.1415926 | +-----------+ | 3.1415926 | +-----------+ 1 row in set (0.00 sec) 2.2.2 封装使用聚合函数(SUM、MIN、MAX、COUNT等)查询语句的视图:MYSQL必读 示例:
CREATE TABLE t_group(
id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(20)
);
CREATE TABLE t_student(
id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(20),sex CHAR(1),group_id INT,FOREIGN KEY (group_id) REFERENCES t_group (id)
);
//t_group表中插入数据
INSERT INTO t_group (NAME) VALUES('group_1');
INSERT INTO t_group (NAME) VALUES('group_2');
INSERT INTO t_group (NAME) VALUES('group_3');
INSERT INTO t_group (NAME) VALUES('group_4');
INSERT INTO t_group (NAME) VALUES('group_5');
//t_student表中插入数据
INSERT INTO t_student (NAME,sex,group_id) VALUES('zjd_1','M',1);
INSERT INTO t_student (NAME,group_id) VALUES('zjd_2',group_id) VALUES('zjd_3',2);
INSERT INTO t_student (NAME,group_id) VALUES('zjd_4','W',group_id) VALUES('zjd_5',group_id) VALUES('zjd_6',group_id) VALUES('zjd_7',3);
INSERT INTO t_student (NAME,group_id) VALUES('zjd_8',4);
INSERT INTO t_student (NAME,group_id) VALUES('zjd_9',4);
================================================================
mysql> create view view_test2 as select count(name) from t_student;
Query OK,0 rows affected (0.71 sec)
mysql> select * from view_test2;
+-------------+
| count(name) |
+-------------+
| 9 |
+-------------+
1 row in set (0.01 sec)
2.2.3 封装了实现排序功能(ORDER BY)查询语句的视图:MYSQL必读 示例: mysql> create view view_test3 as select name from t_student order by id desc; Query OK,0 rows affected (0.06 sec) mysql> select * from view_test3; +-------+ | name | +-------+ | zjd_9 | | zjd_8 | | zjd_7 | | zjd_6 | | zjd_5 | | zjd_4 | | zjd_3 | | zjd_2 | | zjd_1 | +-------+ 9 rows in set (0.00 sec) 2.2.4 封装了实现表内连接查询语句的视图:MYSQL必读 示例:(第二组学生的姓名) mysql> create view view_test5 as select s.name from t_student s,t_group g where s.group_id=g.id and g.id=2; Query OK,0 rows affected (0.07 sec) mysql> select * from view_test5; +-------+ | name | +-------+ | zjd_3 | | zjd_4 | | zjd_5 | | zjd_6 | +-------+ 4 rows in set (0.00 sec) 2.2.5 封装了实现表外连接(LEFT JOIN和RIGHT JOIN)查询语句的视图:MYSQL必读 示例:(第二组学生姓名) mysql> create view view_test6 as select s.name from t_student s left join t_group g on s.group_id=g.id where g.id=2; Query OK,0 rows affected (0.09 sec) mysql> select * from view_test6; +-------+ | name | +-------+ | zjd_3 | | zjd_4 | | zjd_5 | | zjd_6 | +-------+ 4 rows in set (0.01 sec) 2.2.6 封装了实现子查询相关查询语句的视图:MYSQL必读 示例: mysql> create view view_test7 as select s.name from t_student s where s.id in(select id from t_group); Query OK,0 rows affected (0.08 sec) mysql> select * from view_test7; +-------+ | name | +-------+ | zjd_1 | | zjd_2 | | zjd_3 | | zjd_4 | | zjd_5 | +-------+ 5 rows in set (0.00 sec) 2.2.7 封装了实现记录联合(UNION和UNION ALL)查询语句的视图:MYSQL必读 mysql> create view view_test8 as select id,name from t_student union all select id,name from t_group; Query OK,0 rows affected (0.08 sec) mysql> select * from view_test8; +----+---------+ | id | name | +----+---------+ | 1 | zjd_1 | | 2 | zjd_2 | | 3 | zjd_3 | | 4 | zjd_4 | | 5 | zjd_5 | | 6 | zjd_6 | | 7 | zjd_7 | | 8 | zjd_8 | | 9 | zjd_9 | | 1 | group_1 | | 2 | group_2 | | 3 | group_3 | | 4 | group_4 | | 5 | group_5 | +----+---------+ 14 rows in set (0.01 sec) 3.查看视图: 示例: mysql> show tables; +------------------+ | Tables_in_zhaojd | +------------------+ | t_group | | t_product | | t_student | | v_product | | view_test1 | | view_test2 | | view_test3 | | view_test4 | | view_test5 | | view_test6 | | view_test8 | +------------------+ 11 rows in set (0.00 sec) 3.2 SHOW TABLE STATUS语句查看视图详细信息: 和SHOW TABLES语句一样,SHOW TABLE STATUS语句不仅会显示表的详细信息,同时也会显示视图的详细信息.MYSQL必读 语法如下:
mysql> show table status from zhaojd G
*************************** 1. row ***************************
Name: t_group
Engine: InnoDB
Version: 10
Row_format: Compact
Rows: 5
Avg_row_length: 3276
Data_length: 16384
Max_data_length: 0
Index_length: 0
Data_free: 7340032
Auto_increment: 6
Create_time: 2016-08-19 16:26:06
Update_time: NULL
Check_time: NULL
Collation: utf8_general_ci
Checksum: NULL
Create_options:
Comment:
=============================================================
Name: view_test8
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
3.3 SHOW CREATE VIEW语句查看视图定义信息:MYSQL必读 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
