视图,虚拟表,从一个表或多个表中导出来的表,作用和真实表一样,包含一系列带有行和列的数据 视图中,用户可以使用SELECT语句查询数据,也可以使用INSERT,UPDATE,DELETE修改记录,视图可以使用户操作方便,并保障数据库系统安全
工具/原料
电脑
MySQL
Navicat等数据库可视化管理软件
优点及缺点
1、优点简单化,数据所见即所得安全性,用户只能查询或修改他们所能见到得到的数据逻辑独立性,可以屏蔽真实表结构变化带来的影响
2、缺点性能相对较差,简单的查询也会变得稍显复杂修改不方便,特变是复杂的聚合视图基本无法修改
创建示例数据表
1、创建用户表DROP TABLE IF EXISTS `t_user`;CREATE TA幞洼踉残BLE `t_user` ( `id` int烫喇霰嘴(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4;插入演示用户数据INSERT INTO `t_user` VALUES ('1', '甲');INSERT INTO `t_user` VALUES ('2', '乙');INSERT INTO `t_user` VALUES ('3', '丙');INSERT INTO `t_user` VALUES ('4', '丁');INSERT INTO `t_user` VALUES ('5', '戍');INSERT INTO `t_user` VALUES ('6', '己');INSERT INTO `t_user` VALUES ('7', '庚');INSERT INTO `t_user` VALUES ('8', '辛');INSERT INTO `t_user` VALUES ('9', '壬');INSERT INTO `t_user` VALUES ('10', '癸');
2、创建用户信息表DROP TABLE IF EXISTS `t_user_info`;CR苇质缵爨EATE TABLE `t_user_info` ( `id` int(11) NOT NULL AUTO_INCREMENT, `uid` int(11) DEFAULT NULL, `age` varchar(20) DEFAULT NULL, `sex` varchar(20) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4;插入演示信息数据INSERT INTO `t_user_info` VALUES ('1', '1', '11', '男');INSERT INTO `t_user_info` VALUES ('2', '2', '12', '女');INSERT INTO `t_user_info` VALUES ('3', '3', '13', '男');INSERT INTO `t_user_info` VALUES ('4', '4', '14', '女');INSERT INTO `t_user_info` VALUES ('5', '5', '15', '男');INSERT INTO `t_user_info` VALUES ('6', '6', '16', '女');INSERT INTO `t_user_info` VALUES ('7', '7', '17', '男');INSERT INTO `t_user_info` VALUES ('8', '8', '18', '女');INSERT INTO `t_user_info` VALUES ('9', '9', '19', '男');INSERT INTO `t_user_info` VALUES ('10', '10', '20', '女');
创建视图
1、语法结构:{ CREATE|REPLACE } [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]VIEW view_name [{column_list}]AS SELECT_STATEMENT[WITH [CASCADED | LOCAL |] CHECK OPTION]释义:CREATE|REPLACE : 【创建|替换已创建的】视图ALGORITHM : 视图算法 1.UNDEFINED 系统自动选择算法 2.MERGE使用的视图语句与视图定义合并起来 3.TEMPTABLE 结果存入临时表,然后用临时表执行语句view_name : 视图名称column_list : 属性列SELECT_STATEMENT :SELECT语句[WITH [CASCADED | LOCAL |] CHECK OPTION] 表示视图在更新时保证在视图的权限范围内 1.CASCADED 默认值 更新视图时要满足所有相关视图和表的条件,LOCAL表示更新视图时满足该视图本身定义的条件即可。
2、示例1:在单表中创建视图创建视图CREATE VIEW test_view_1 AS SELECT `name` FROM t_user;查询视图SELECT * FROM test_view_1;
3、示例2:指定视图字段名创建视图CREATE VIEW test_view_2(username) AS SELECT `name` FROM t_user;查询视图SELECT * FROM test_view_2;
4、示例3:在多表中创建视图创建视图CREATE VIEW test_view_3 (username, userage, usersex) AS SELECT t_user.`name`, t_user_info.age, t_user_info.sexFROM t_user, t_user_infoWHERE t_user.id = t_user_info.uid;查询视图SELECT * FROM test_view_3;