mysql学习之路_链接查询

回顾

列属性:主键,自增加,惟一键。php

关系:一对一,一对多,多对多spa

三层范式:设计

1NF:字段设计必须符合原子性排序

2NF:不存在部分依赖(没有复合主键)it

3NF:不存在传递依赖(实体单独成表)class

逆规范化:效率磁盘空间博弈;效率

 

高级数据操做:select

新增操做:主键冲突(更新与替换),蠕虫复制循环

更新操做:限制更新数量: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;

其实 内链接与外链接均可以模拟天然链接!!!!!!!!!

相关文章
相关标签/搜索