• 多表查询,子查询,及查询语句中语句执行的先后顺序和特点


    对多张表进行查询操作
      查询方式1:
        笛卡尔积查询
          select * from 表1,表2;
          结果:让表1中的每一条记录和表2中每一条记录一次组合
          表1 n条记录
          表2 m条记录
          最终查询结果:n * m 条

        注意:
          1.观察笛卡尔积查询的最终结果,很多数据没有实际作用
          2.查询结果太多,对内存压力大

      笛卡尔积查询优化(内连接)
      加上条件
        隐式内连接
          select * from 表1,表2 where 表1.字段 = 表2.字段;

        显示内连接语法
          select * from 表1 inner join 表2 on 条件;
            注意:内连接语法条件过滤时,使用的是 on 关键字
            例1:select * from kecheng,teacher where kecheng.teacherid = teacher.tid;
            例2:select * from kecheng inner join teacher on kecheng.teacherid = teacher.tid;

      外链接(outer join)(谁在前面就先显示哪个表的数据)
        左外连接 ---- left outer join
          结果:
            以左表为准,左表中的所有数据都有 + 右表中符合条件的数据(连接条件on和判断条件where)
        右外连接 ---- right outer join
          结果:
            以右表为准,右表中的所有数据都有 + 左表中符合条件的数据

      外连接和内连接的区别:
        1.内连接获取的是严格符合条件的数据
        2.外连接获取的是严格符合条件的数据 + 左表(left)/右表(right)中不符合条件的数据

    子查询:一个查询的结果作为另外一个查询的条件(一个查询中包含另一个查询)
        必须保证查询的结果为一个具体的值!!!(作为条件时)

    难点:char与varchar的比较:
        相同点:二者都是存储文本(字符串)的
        不同点:
          1.数据声明的长度范围不同
            char --- 0 --- 255
            varchar --- 0 --- 65535
          拓展:varchar(10)
            长度:在mysql 4.0 之前代表的字节数
               在mysql 5.0 开始,代表字符数
          2.底层存储格式不同
            char(10) ---- 'AB' ---- 'AB             '       (已经定义了长度了,就像数组一样,你不用也有)
            varchar(10) ---- 'AB' ---- '2AB'             (有算法封装了长度,你定义的长度是最大长度)
              A、varchar 空间分配更灵活
              B、虽然char可能浪费空间,但是效率高
                char 比 varchar 效率高
          3.什么时候使用 char? 什么时候使用 varchar?
            具体情况具体分析
              用于固定格式的数据 char
              不确定格式 varchar

    语句查询中的顺序:
      select D_*
        from 表名
        where A_条件
        group by B_字段
        having C_条件
        order by E_字段;

        0、先执行from
        1、执行where后的A_条件
        2、执行group by的 B_字段,拆分成子表
        3、执行having的C_条件,对子表进行筛选
        4、执行select的D_*,将子表合成一张表
        5、执行order by的E_字段,对4中的表进行排序(如果是用基础属性,就是按照符合条件的第一条的语句的基础属性在排序)

    show create table 表名;
      显示所有的建表信息(可用于查询约束名等然后对约束进行操作)

    limit

      select * from 表名 limit n, m;   用于显示数据库中从第(n+1)条数据开始的共m条语句

  • 相关阅读:
    git 常用操作命令行
    Mysql 命令行...
    bootstrap
    10.11 android输入系统_补充知识_activity_window_decor_view关系
    10.10 android输入系统_APP获得并处理输入事件流程
    10.9 android输入系统_APP跟输入系统建立联系和Dispatcher线程_分发dispatch
    10.8 android输入系统_实战_使用GlobalKey一键启动程序
    10.7 android输入系统_Dispatcher线程情景分析_Reader线程传递事件和dispatch前处理
    10.6 android输入系统_Dispatcher线程_总体框架
    10.5 android输入系统_Reader线程_使用EventHub读取事件和核心类及配置文件_实验_分析
  • 原文地址:https://www.cnblogs.com/chonglchong/p/6725593.html
Copyright © 2020-2023  润新知