zoukankan      html  css  js  c++  java
  • 8.7.1 mysql 内置功能

    一 视图

    视图是一个虚拟表(非真实存在),其本质是【根据SQL语句获取动态的数据集,并为其命名】,用户使用时只需使用【名称】即可获取结果集,可以将该结果集当做表来使用。

    使用视图我们可以把查询过程中的临时表摘出来,用视图去实现,这样以后再想操作该临时表的数据时就无需重写复杂的sql了,直接去视图中查找即可,但视图有明显地效率问题,并且视图是存放在数据库中的,如果我们程序中使用的sql过分依赖数据库中的视图,即强耦合,那就意味着扩展sql极为不便,因此并不推荐使用

    mysql> select * from teacher;
    +-----+-------+
    | tid | tname |
    +-----+-------+
    |   1 | 张三  |
    |   2 | 李四  |
    |   3 | 王五  |
    |   4 | 李坤  |
    +-----+-------+
    4 rows in set (0.00 sec)
    
    mysql> select * from course;
    +-----+-------+------------+
    | cid | cname | teacher_id |
    +-----+-------+------------+
    |   1 | 生物  |          1 |
    |   2 | 体育  |          1 |
    |   3 | 物理  |          2 |
    |   4 | 数学  |          1 |
    |   5 | 美术  |          3 |
    +-----+-------+------------+
    5 rows in set (0.00 sec)
    #查询张三老师教授的课程名
    SELECT cname FROM course WHERE teacher_id = ( SELECT tid FROM teacher WHERE tname = '张三' );
    mysql> SELECT
        ->  cname
        -> FROM
        ->  course
        -> WHERE
        ->  teacher_id = (
        ->          SELECT
        ->                  tid
        ->          FROM
        ->                  teacher
        ->          WHERE
        ->                  tname = '张三'
        ->  );
    +-------+
    | cname |
    +-------+
    | 生物  |
    | 体育  |
    | 数学  |
    +-------+
    3 rows in set (0.00 sec)
    #子查询出临时表,作为teacher_id等判断依据
    SELECT tid FROM teacher WHERE tname = '张三' 

     

  • 相关阅读:
    jquery笔记
    css选择器
    Linq 巧用 Max,Sum
    Linq Aggregate
    Linq 对象的比较 Contains,Max
    Linq SelectMany 交叉连接
    JQ 标签相关知识
    C# HttpClient设置cookies的两种办法 (转发)
    使用 HttpClient 请求 Web Api
    MySQL 避免重复数据的批量插入与批量更新
  • 原文地址:https://www.cnblogs.com/caimengzhi/p/8586375.html
Copyright © 2011-2022 走看看