zoukankan      html  css  js  c++  java
  • Mysql学习之路_连接查询

    回顾
    列属性:主键,自增长,唯一键。
    关系:一对一,一对多,多对多
    三层范式:
    1NF:字段设计必须符合原子性
    2NF:不存在部分依赖(没有复合主键)
    3NF:不存在传递依赖(实体单独成表)
    逆规范化:效率磁盘空间博弈;

    高级数据操作:
    新增操作:主键冲突(更新与替换),蠕虫复制
    更新操作:限制更新数量:limit
    删除操作:限制删除数量:limit。清空表结构:truncate
    查询操作:select选项;
    字段别名: 数据源(单表,多表,子查询[别名])
    Where子句(条件判断:从磁盘)
    Group by子句(判断结构,针对分组统计结果)
    Order by子句(排序,多字段排序)
    Having 子句 (判断结果,针对分组进行统计结果)
    Limit子句 (限制记录数,分页)
    连接查询
    连接查询:将多张表(可以大于2张)进行记录的连接(按照某个指定条件进行数据拼接)
    最终结果:记录数有可能变化,字段数一定会增加(至少两张表合并)
    连接查询的意义:用户查看数据的时候,需要现实的数据来自多张表。
    连接查询分类
    Sql将连接查询分为四类:外链接,自然连接,内连接,交叉连接
    连接查询:join,使用方式 左表join 右表;
    左表;在join关键字左边的表;
    右表:在join 关键字右边的表;

    交叉连接
    Cross join从一张表中循环取出每一条记录,每张记录都去另一张表进行匹配。
    匹配一定保留(没有条件匹配),而连接本身字段就全增加(保留),最终会形成的结果叫做笛卡尔积
    基本语法:
    左表 cross join 右表;==from 左表,右表;
    笛卡尔积没有意义:应该尽量避免(交叉查询没用)交叉连接的价值:保证连接结构的完整性。
    例:select * from my_stu cross join my_class;

    内连接:
    内连接:[inner] join;
    从左表中取出没一条记录去右表中所有记录进行匹配,匹配必须是某个条件,在左表中与右表中相同的最终会保留,否则不保留。
    基本语法
    左表 [inner] 右表 on 左表.字段=右边.字段;
    On 表示连接条件;
    条件字段就是代表相同的业务含义
    如:内连接
    Select *from my_stu a join my_class b
    On a.c_id=b.id;
    在php中会覆盖:
    字段别名以及表别名对的使用:在查询数据的时候,不同表有同名字段,这个时候需要加上表名才能区分,而表名太长,通常使用别名。
    内连接可以使用where 代替on关键字(where没有on效率高)
    外链接:
    外链接:outer join ,以某张表为主,取出里面所有的记录,然后每条与另一表进行连接,不管能不能匹配上条件,最终都会保留。
    能匹配,正确保留,不能匹配其他字段制空null;
    外连接分为两种:以某张表为主
    以左表为主: left join :左外连接
    以右表为主 right join :右外连接

    基本语法
    左表 left/right join 右表 on 左表.字段=右表.字段;
    例: select * from My_stu a left/right join My_class b
    On a.c_id=b.id
    虽然左连接和右连接有主表差异,但是显示的结果永远是左表数据在左边,右表数据在右边,左连接和右连接可以相互转
    自然连接
    Natural join :自动匹配连接条件,系统以字段名为匹配模式(同名字段作为条件,多个同名字段作为条件)
    自然连接分为自然内连接。自然外连接
    自然内连接 :select * from My_stu
    Natural join my_class;
    自然外连接 :左表 natural left/right join 右表
    例:select * from my_stu natural left/right join my_class;
    其实 内连接与外连接都可以模拟自然连接!!!!!!!!!

  • 相关阅读:
    iOS开发者程序许可协议
    IOS升级之 Objective-c新特性
    ios 性能优化之自动化UI测试
    ios 性能优化之CPU性能调优
    ios 性能优化之图形性能测试
    ios 性能优化之测试 iOS设备I/O活动
    ios 性能优化之定位应用程序的内存问题
    ios 性能优化之app运行时数据收集
    IOS8 理解应用程序扩展是如何工作的
    IOS8 创建一个应用程序扩展
  • 原文地址:https://www.cnblogs.com/lqh969696/p/13081719.html
Copyright © 2011-2022 走看看