zoukankan      html  css  js  c++  java
  • 数据库内连接、外连接、左连接、右连接、全连接

    行级锁是一种排他锁,防止其他事务修改此行;在使用以下语句时,Oracle会自动应用行级锁:
    INSERT、UPDATE、DELETE、SELECT … FOR UPDATE [OF columns] [WAIT n | NOWAIT];
    SELECT … FOR UPDATE语句允许用户一次锁定多条记录进行更新
    使用COMMIT或ROLLBACK语句释放锁

    表级锁又分为5类:

    行共享 (ROW SHARE) – 禁止排他锁定表
    行排他(ROW EXCLUSIVE) – 禁止使用排他锁和共享锁
    共享锁(SHARE) - 锁定表,对记录只读不写,多个用户可以同时在同一个表上应用此锁
    共享行排他(SHARE ROW EXCLUSIVE) – 比共享锁更多的限制,禁止使用共享锁及更高的锁
    排他(EXCLUSIVE) – 限制最强的表锁,仅允许其他用户查询该表的行。禁止修改和锁定表。

    两张表查询的时候就会连接,从两个表中记录的笛卡尔积中选取满足连接的记录

    自然连接(natural join)

    自然连接是一种特殊的等值连接,他要求两个关系表中进行比较的必须是相同的属性列,无须添加连接条件,并且在结果中消除重复的属性列。

    sql语句:Select …… from 表1 natural join 表2

    内连接(inner  join)

    内连接基本与自然连接相同,不同之处在于自然连接要求是同名属性列的比较,而内连接则不要求两属性列同名,可以用using或on来指定某两列字段相同的连接条件。

    sql语句:Select …… from 表1 inner join 表 2 on 表1.A=表2.E

    左外连接(left outer join)

    左外连接是左表(表1)的记录将会全部表示出来,而右表(表2)只会显示符合搜索条件的记录。右表记录不足的地方均为NULL。

    sql语句:Select …… from 表1 left outer join 表2 on 表1.C=表2.C

    右外连接(rignt outer join)

    与左(外)连接相反,右(外)连接,左表(表1)只会显示符合搜索条件的记录,而右表(表2)的记录将会全部表示出来。左表记录不足的地方均为NULL。

    Select …… from 表1 rignt outer join 表2 on 表1.C=表2.C

    全外连接(full join)

    全外连接是左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。

    Select …… from 表1 full join 表2 on 表1.C=表2.C

    如何应付表数据过大的查询问题?

    1:尽量避免大表关联
    2:对大表进行分区

  • 相关阅读:
    nodejs redis数据类型命令汇总
    十大经典排序算法最强总结
    基于Nodejs的Tcp封包和解包的理解
    排序算法 JavaScript
    import和require的区别
    Socket.io的默认事件列表
    非常完整的coco screator socketio
    分布式、集群、微服务、SOA 之间的区别
    关于插入3条数据第三条失败全部回滚的操作
    @Scope注解的详细用法
  • 原文地址:https://www.cnblogs.com/BobHuang/p/10761660.html
Copyright © 2011-2022 走看看