MySQL 视图、触发器、函数、存储过程

通俗来讲,视图就是一条 select 语句执行后返回的结果集。所有我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上。

1.2 视图的特性

视图是对若干张基本表的引用,一张虚表,查询语句的执行结果,不存储具体的数据(基本表数据发生了改变,视图也会跟着改变)

1.3 视图的作用

方便操作,特别是查询操作,减少复杂的SQL语句,增强可读性;更加安全,数据库授权命令不能限定到特定的行和特定的列,但通过合理创建视图,可以把权限限定到行列级别;

1.4 使用场合

权限控制的时候,不希望用户访问表中某些敏感信息的列,比如 salary… 关键信息来源于多个复杂关联表,可以创建视图提取我们需要的信息,简化操作;

1.5 视图的使用

视图实例1-创建视图及查询数据操作

现有三张表:用户(user)、课程(course)、用户课程中间表(user_course),表结构及数据如下:

MySQL 视图、触发器、函数、存储过程

MySQL 视图、触发器、函数、存储过程

SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for course -- ---------------------------- DROP TABLE IF EXISTS `course`; CREATE TABLE `course` (   `sid` int(11) NOT NULL AUTO_INCREMENT,   `sname` varchar(32) NOT NULL,   PRIMARY KEY (`sid`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of course -- ---------------------------- INSERT INTO `course` VALUES (\'1\', \'语文\'); INSERT INTO `course` VALUES (\'2\', \'数学\'); INSERT INTO `course` VALUES (\'3\', \'英语\'); INSERT INTO `course` VALUES (\'4\', \'物理\'); INSERT INTO `course` VALUES (\'5\', \'\'); -- ---------------------------- -- Table structure for student -- ---------------------------- DROP TABLE IF EXISTS `student`; CREATE TABLE `student` (   `id` int(11) NOT NULL AUTO_INCREMENT,   `name` varchar(32) NOT NULL,   `course_id` int(11) NOT NULL,   PRIMARY KEY (`id`),   KEY `fk_student_course` (`course_id`),   CONSTRAINT `fk_student_course` FOREIGN KEY (`course_id`) REFERENCES `course` (`sid`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of student -- ---------------------------- INSERT INTO `student` VALUES (\'1\', \'小飞\', \'1\'); INSERT INTO `student` VALUES (\'2\', \'hukey\', \'2\'); INSERT INTO `student` VALUES (\'3\', \'小王\', \'3\'); INSERT INTO `student` VALUES (\'4\', \'阿狗\', \'4\');

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwpsfy.html