站保站

服务市场
  • 网站市场
  • 单机游戏
  • 平台大厅
  • 转让市场
  • 发卡市场
  • 广告市场
  • 下载市场
  • 收录市场
  • 本站平台
    平台客服
    微信Q群



    平台微博/weibo    平台微信/公众号    平台抖音/快手   
    曝光台    保障    地图   
    上传资源 快速赚钱
    站保站    登录      |  注册  |  

    只需一步,快速开始!

     找回密码   |   协议
    热门搜索: 网站开发 App报毒 挖矿源码 代办资质

    MySQL数据库--视图

    • 时间:2020-10-27 19:52 编辑:After Raining 来源: 阅读:135
    • 扫一扫,手机访问
    摘要:

      MySQL从5.1版本开始提供视图功能。视图是一种虚拟存在的表,只保存sql逻辑(语句),不保存查询结果。类似于Java将一组查询语句封装起来。

    优势

    • 可重用sql语句;
    • 简化复杂的sql操作,不必知道或透露查询细节,保护数据,提高安全性。

    应用场景

    • 多个地方使用同样的查询语句;
    • 该查询使用的sql语句比较复杂。

    创建视图

    语法:

    create view 视图名
    as
    查询语句;
    
    -- 使用语法
    select * from 视图名 
    where 
    条件语句;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    修改视图

    语法:

    -- 表示若是图存在则修改,不存在则创建
    create or replace view 视图名
    as
    查询语句;
    
    -- 方法二
    alter view 视图名
    as
    查询语句;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    删除视图

    语法

    drop view 视图名,视图名,视图名,...;
    
    • 1

    查看视图

    语法:

    desc 视图名;
    show create view 视图名; -- 后面可以加上\G格式化一下
    
    • 1
    • 2

    视图的更新

      视图可像表一样进行更新数据,在这时视图就是“虚拟表”。但以下视图不可更新。

    1. 包含分组函数、distinct、group by、having、union、union all关键字的sql语句;
    2. 常量视图;
    3. select中包含子查询;
    4. 连接不同表的视图(可以update);
    5. from一个不能更新的试图;
    6. where子句的子查询引用了from子句中的表。

    视图和表的区别

      视图与表的最大,最本质的区别是视图只保存sql逻辑,而表保存了数据。所以视图一般只用于查询。

      
    创建测试用数据库和表,并插入数据。

    create database if not exists `school`;
    use ’school‘;-- 创建学生表
    drop table if exists `student`;
    create table `student`(
    	`studentno` int(4) not null comment '学号',
        `loginpwd` varchar(20) default null,
        `studentname` varchar(20) default null comment '学生姓名',
        `sex` tinyint(1) default null comment '性别,0或1',
        `gradeid` int(11) default null comment '年级编号',
        `phone` varchar(50) not null comment '联系电话,允许为空',
        `address` varchar(255) not null comment '地址,允许为空',
        `borndate` datetime default null comment '出生时间',
        `email` varchar (50) not null comment '邮箱账号允许为空',
        `identitycard` varchar(18) default null comment '身份证号',
        primary key (`studentno`),
        unique key `identitycard`(`identitycard`),
        key `email` (`email`)
    )engine=myisam default charset=utf8;
    
    -- 创建年级表
    drop table if exists `grade`;
    create table `grade`(
    	`gradeid` int(11) not null auto_increment comment '年级编号',
      `gradename` varchar(50) not null comment '年级名称',
        primary key (`gradeid`)
    ) engine=innodb auto_increment = 6 default charset = utf8;
    
    -- 创建科目表
    drop table if exists `subject`;
    create table `subject`(
    	`subjectno`int(11) not null auto_increment comment '课程编号',
        `subjectname` varchar(50) default null comment '课程名称',
        `classhour` int(4) default null comment '学时',
        `gradeid` int(4) default null comment '年级编号',
        primary key (`subjectno`)
    )engine = innodb auto_increment = 19 default charset = utf8;
    
    -- 创建成绩表
    drop table if exists `result`;
    create table `result`(
    	`studentno` int(4) not null comment '学号',
        `subjectno` int(4) not null comment '课程编号',
        `examdate` datetime not null comment '考试日期',
        `studentresult` int (4) not null comment '考试成绩',
        key `subjectno` (`subjectno`)
    )engine = innodb default charset = utf8;
    
    -- 插入学生数据 其余自行添加 这里只添加了2行
    insert into `student` (`studentno`,`loginpwd`,`studentname`,`sex`,`gradeid`,`phone`,`address`,`borndate`,`email`,`identitycard`)
    values
    (1000,'123456','张伟',0,2,'13800001234','北京朝阳','1980-1-1','text123@qq.com','123456198001011234'),
    (1001,'123456','赵强',1,3,'13800002222','广东深圳','1990-1-1','text111@qq.com','123456199001011233');
    
    -- 插入成绩数据  这里仅插入了一组,其余自行添加
    insert into `result`(`studentno`,`subjectno`,`examdate`,`studentresult`)
    values
    (1000,1,'2013-11-11 16:00:00',85),
    (1000,2,'2013-11-12 16:00:00',70),
    (1000,3,'2013-11-11 09:00:00',68),
    (1000,4,'2013-11-13 16:00:00',98),
    (1000,5,'2013-11-14 16:00:00',58);
    
    -- 插入年级数据
    insert into `grade` (`gradeid`,`gradename`) values(1,'大一'),(2,'大二'),(3,'大三'),(4,'大四'),(5,'预科班');
    
    -- 插入科目数据
    insert into `subject`(`subjectno`,`subjectname`,`classhour`,`gradeid`)values
    (1,'高等数学-1',110,1),
    (2,'高等数学-2',110,2),
    (3,'高等数学-3',100,3),
    (4,'高等数学-4',130,4),
    (5,'C语言-1',110,1),
    (6,'C语言-2',110,2),
    (7,'C语言-3',100,3),
    (8,'C语言-4',130,4),
    (9,'Java程序设计-1',110,1),
    (10,'Java程序设计-2',110,2),
    (11,'Java程序设计-3',100,3),
    (12,'Java程序设计-4',130,4),
    (13,'数据库结构-1',110,1),
    (14,'数据库结构-2',110,2),
    (15,'数据库结构-3',100,3),
    (16,'数据库结构-4',130,4),
    (17,'C#基础',130,1);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84

    创建视图:

    create view myview1
    AS
    select classhour,gradeid from subject group by classhour,gradeid;
    -- 查询
    select* from myview1 order by classhour;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 全部评论(0)
    • 最新

    信息加载中,请等待

    微信客服(速回)

    微信客服(慢回)



    企业微信客服二维码
    联系我们
    平台客服: 平台QQ客服

    平台电话:400电话迁移中!

    平台邮箱:28292383@qq.com

    工作时间:周一至周五:早10:00 晚:18:00

    营业执照     网站ICP备案:鲁ICP备20027607号-1     鲁公网安备:37068702000078号     增值电信业务经营许可证、在线数据与交易处理业务许可证:鲁B2-20200681      © 2016-2024 站保站  https://www.zhanbaozhan.com/ 版权所有!      平台规范:   关于我们   广告合作   隐私条款   免责声明   法律声明   服务条款   网站地图   平台工单!