mysql视图

#使用视图的意义
#1.简化查询,用户不需要复杂的sql去查询多张复杂的关联表
#2. 安全,使用视图的用户只能访问被允许查询的结果,使用视图可以限制用户访问一些敏感信息

drop table if exists users;
create table `users`(
    `u_id` int(4) not NULL auto_increment,
		`username` varchar(20) DEFAULT NULL,
		`age` int(4) default NULL,
		`country` varchar(20) default NULL,
		PRIMARY KEY (`u_id`)
	)ENGINE = INNODB auto_increment=1 DEFAULT CHARSET=utf8;
	
drop table if exists course;
	CREATE TABLE `course`(
	    `c_id` int(4) NOT NULL auto_increment,
			`coursename` varchar(20) default NULL,
			`description` varchar(255) default NULL,
			PRIMARY key(`c_id`)
	)ENGINE=INNODB auto_increment=1 DEFAULT CHARSET=utf8;
	
drop table if exists user_course;
	CREATE TABLE `user_course`(
	    `u_c_id`  int(4) NOT NULL auto_increment,
			`userid`  int(4) NOT NULL,
			`courseid` int(4) NOT NULL,
			PRIMARY KEY (`u_c_id`)
	)ENGINE=INNODB,auto_increment=1,default CHARSET= utf8;
	
	

	insert into users(username,age,country)
	    values
	('Tom',23,'china'),
	('JIM',24,'USA'),
	('Jean',25,'canda'),
	('rof',26,'russa');
	
	insert into course(coursename,description)
	    values
	('java','mysql'),
	('web','web class'),
	('c++','computer'),
	('c','base class');

	insert into user_course(userid,courseid)
	    values
			(1,1),
			(1,2),
			(1,4),
			(2,3),
			(2,4),
			(3,1),
			(4,2);
			
select * from users;

select * from course;

select * from user_course;

子查询方式获取某用户的课程

select username,coursename from user_course left join course on user_course.courseid = course.c_id left join users on user_course.courseid = users.u_id where username='Tom';

#创建视图的方式获取某用户的课程

create view user_course_view as select * from user_course left join course on user_course.courseid = course.c_id left join users on user_course.courseid = users.u_id;

select username,coursename from user_course_view where username='Tom'

#如果有些信息是隐秘的话,可以通过视图的方式进行隐藏
#创建视图,隐藏课程的描述信息

create view user_course_view as
    select user_course.*,users.*,course.c_id,course.coursename from 
    user_course
    left join course on user_course.courseid = course.c_id
    left join users on user_course.userid = users.u_id;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值