mysql必知必会 - 使用完全限定名

    现实案例:比如村子中有户人家叫王a家,王a家有个孩子叫王小三,那么王a在家里叫王小三吃饭有一下情景:

    a.王a说:王小三赶紧吃饭;

    b.王a说:王a家的王小三赶紧吃饭(现实生活中这就是有病啊!);

    这两种方式都可以达到目的,同时不会有任何误解,b方式就是使用谁家的小谁,完全限定名!有点类似什么呢?当有人问你是哪里人的时候,你可以直接说我是吉林人,也可以说我是中国吉林人。

   

    需求场景:查询所有商品名称。

    查询方式:使用a方式,王小三跟进吃饭。

    SQL1:SELECT prod_name FROM Products;

    mysql必知必会 - 使用完全限定名_第1张图片   


    查询方式:使用b方式,王a家的王小三赶紧吃饭,虽然在自己家中这么说有点神经病的感觉。

    SQL2:SELECT Products.prod_name FROM Products;

    mysql必知必会 - 使用完全限定名_第2张图片


    SQL1和SQL2进行对比:

    1.在自家叫自己的孩子,为何不使用SQL2呢,因为它比较别扭,但是是正确的方式;

    2.不同之处在于,在查询的列之前加上表名来表示这个列是属于哪个表的,这就是完全限定名。

   

    拓展解释:

    对于列的完全限定名:表名.列名

    对于表的完全限定名:数据库.表名

    mysql必知必会 - 使用完全限定名_第3张图片   

    我们查看SQL就可以看出完全限定名。

   

    完全限定名使用场景:如果只在自己内部使用,那么完全限定名基本上是不用的,这种情况太简单了。那么什么时候去使用呢?比如村里有两家分别叫王a和王b,并且两家都有个孩子叫王小三,这两个王小三并且在一个班级学习上课,那么老师叫王小三,这两个孩子就不知道叫谁了。说王a家王小三,那么王a家王小三就会知道是他。所以当在单表内查询时一般不用完全限定名,只有多个表涉及到相同的列名时,才会使用到完全限定名。比如用户表有个列叫name,商品表有个字段叫name,当查询时只使用name,那么数据库是不知道叫用户的name,还是商品的name,此时完全限定名就可以体现出来。使用完全限定名的作用就是防止歧义的发生!

你可能感兴趣的:(MySQL)