Lo Mysql Las vistas son? ¿Cuál es el papel?

MySQL a la vista, de hecho, es una tabla virtual, consulta dinámica para recuperar el uso de datos, la manera de entender este concepto? Primero creamos la tabla subyacente, la declaración es el siguiente:

DROP TABLE IF EXISTS `user_info`;
CREATE TABLE `user_info` (
  `id` int(20) NOT NULL AUTO_INCREMENT,
  `arts_name` varchar(20) DEFAULT NULL,
  `user_name` varchar(20) DEFAULT NULL,
  `user_pwd` varchar(20) DEFAULT NULL,
  `rank_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `FK1gy0qoa8oxhd6lv5j41ubn0if` (`rank_id`),
  CONSTRAINT `FK1gy0qoa8oxhd6lv5j41ubn0if` FOREIGN KEY (`rank_id`) REFERENCES `user_rank` (`rank_id`)
) ENGINE=InnoDB AUTO_INCREMENT=34 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of user_info
-- ----------------------------
INSERT INTO `user_info` VALUES ('1', '扫地僧', 'admin', '000000', '6');
INSERT INTO `user_info` VALUES ('2', '降龙十八掌', '萧峰', '111111', '5');
INSERT INTO `user_info` VALUES ('3', '六脉神剑', '段誉', '111111', '5');
INSERT INTO `user_info` VALUES ('4', '小无相功', '虚竹', '222222', '5');
INSERT INTO `user_info` VALUES ('5', '易筋经', '游坦之', '222222', '3');
INSERT INTO `user_info` VALUES ('6', '斗转星移', '慕容复', '1111', '3');
INSERT INTO `user_info` VALUES ('7', '化功大法', '丁春秋', '11111', '3');
INSERT INTO `user_info` VALUES ('8', '天长地久不老长春功', '天山童姥', '222', '4');
INSERT INTO `user_info` VALUES ('9', '天山六阳掌', '无崖子', '333', '4');
INSERT INTO `user_info` VALUES ('11', '小无相功', '李秋水', '555', '3');
INSERT INTO `user_info` VALUES ('12', '颜值', '王语嫣', '2222222', '1');
INSERT INTO `user_info` VALUES ('13', '毒', '阿紫', '111111', '1');
INSERT INTO `user_info` VALUES ('14', '易容术', '阿朱', '111111', '2');
INSERT INTO `user_info` VALUES ('15', '一阳指', '段正淳', '111111', '2');
INSERT INTO `user_info` VALUES ('16', '鳄嘴剪', '南海鳄神', '111111', '2');
INSERT INTO `user_info` VALUES ('17', '轻功', '云中鹤', '111111', '1');
INSERT INTO `user_info` VALUES ('20', '嘴炮', '钟万仇', '666666', '1');
DROP TABLE IF EXISTS `user_rank`;
CREATE TABLE `user_rank` (
  `rank_id` int(11) NOT NULL AUTO_INCREMENT,
  `user_rank_name` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`rank_id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of user_rank
-- ----------------------------
INSERT INTO `user_rank` VALUES ('1', '青铜');
INSERT INTO `user_rank` VALUES ('2', '白银');
INSERT INTO `user_rank` VALUES ('3', '黄金');
INSERT INTO `user_rank` VALUES ('4', '铂金');
INSERT INTO `user_rank` VALUES ('5', '钻石');
INSERT INTO `user_rank` VALUES ('6', '王者');

la forma construida se ha completado, podemos construir una visión para establecer Mysql en vista de la declaración como se indica a continuación (además de crear una preselección de declaración view nombre de la vista como) a:

CREATE VIEW view_name
AS
SELECT * FROM table_name ;

>>>>>示例<<<<<
CREATE VIEW userView
AS
SELECT * FROM user_info ; //创建视图

SELECT * FROM userView; //查询视图

UPDATE userView SET user_pwd='admin' WHERE user_name='admin'; //使用视图更新底层数据

Si nos fijamos en la opinión anterior, este punto de vista parece ser inútil, entonces, vemos un ejemplo Liezi:

CREATE VIEW userView2
AS
SELECT * FROM user_info WHERE id<10

SELECT * FROM userView2;

INSERT INTO `user_info` VALUES ('22', '梅剑', '333', 'new', '1');

Crear una vista de los datos demuestran solamente 1-10, insertar una fila en la tabla user_info subyacente, el userView2 no es visible, la aplicación real puede ser usado con CHECK OPTION al crear o editar la vista (para asegurar una visión consistente de la sexual), con WITH CHECK OPTION, el usuario puede visualizar la vista visto por o datos actualizados, tales como:

Identificación contraseña para ver actualizaciones a través de 11 es 888, pero en realidad la actualización no tiene éxito debido a las restricciones userView3 id <10. Por lo tanto, permite ver qué sirve?

1) la simplificación, los datos WYSIWYG (tabla de asociación, tales como 5, pero sólo necesita consultar cada uno de campo en la Tabla 1-2, para establecer el punto de vista más adecuado)

2) implementar el control de acceso, más seguridad (los usuarios pueden consultar o modificar los datos de los que las restricciones, que se encubierta de la estructura de datos de las tablas reales)

Hablando de ventajas, desventajas inevitablemente naturalmente, una desventaja de vista de la siguiente manera:

1) relativamente bajo rendimiento (si la vista es crear un punto de vista diferente, basado en la consulta será muy lento)

2) modificar la inconveniencia

Para crear vista actualizable, instrucción SELECT que define la vista no contiene ninguno de los siguientes elementos:
➢ funciones agregadas;
cláusula ➢distinct;
➢group por la cláusula;
➢having cláusula;
➢union y la unión de todas las cláusulas;
➢ conexión externa
NOTA: no se recomienda operaciones de actualización para crear una vista de varias tablas basadas.

>>>>>查看视图<<<<<
SHOW TABLE STATUS [LIKE 'view_name%'] ; (查看基本信息)

DESC view_name ; 或者 DESCRIBE view_name; (查看基本信息)

SHOW CREATE VIEW view_name ; (查看详细信息)

SELECT * FROM information_schema.views; (查看数据库中所有视图详细信息)

>>>>>删除视图<<<<<
DROP VIEW IF EXISTS view_name ;

 

Publicados 224 artículos originales · ganado elogios 34 · Vistas a 70000 +

Supongo que te gusta

Origin blog.csdn.net/weixin_39309402/article/details/105233917
Recomendado
Clasificación