SQL学习

内连接和外连接(左连接,右连接,全连接)

内连接:就是把关联字段的部分内容展示出来;

左连接:位于left join 左边的表的数据会全部展示,右边的没有关联数据的则展示为null;右连接同理;如下案例:

数据库数据:

           

book表                                          stu表

1.内连接

1.1.等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。

1.2.不等值连接:在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括>、>=、<=、<、!>、!<和<>。

1.3.自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。

内连接:内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。

select * from book as a,stu as b where a.sutid = b.stuid   (也可以:select * from book as a,stu as b where a.sutid = b.stuid) 

select * from book as a inner join stu as b on a.sutid = b.stuid (在oracle数据库中好像不可以用AS,直接select * from book a inner join stu b on a.sutid = b.stuid)

内连接可以使用上面两种方式,其中第二种方式的inner可以省略。

其连接结果如上图,是按照a.stuid = b.stuid进行连接。

2.外连接

2.1.左联接:是以左表为基准,将a.stuid = b.stuid的数据进行连接,然后将左表每一个对应项显示,右表的列为NULL

select * from book as a left join stu as b on a.sutid = b.stuid

2.2.右连接:是以右表为基准,将a.stuid = b.stuid的数据进行连接,然以将右表每一个对应项显示,左表的列为NULL

select * from book as a right join stu as b on a.sutid = b.stuid

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

select * from book as a full outer join stu as b on a.sutid = b.stuid

date_format(now(), '%Y-%m-%d %H:%i:%S')时间日期格式化

链接:https://blog.csdn.net/lpw_cn/article/details/84468606

动态查询的  choose -- when test -- otherwise

choose标签是按顺序判断其内部when标签中的test条件出否成立,如果有一个成立,则 choose 结束,和java代码中的switch类似

例子如下:

<!--  choose(判断参数) - 按顺序将实体类 User 第一个不为空的属性作为:where条件 -->  
<select id="getUserList_choose" resultMap="resultMap_user" parameterType="com.yiibai.pojo.User">  
    SELECT *  
      FROM User u   
    <where>  
        <choose>  
            <when test="username !=null ">  
                u.username LIKE CONCAT(CONCAT('%', #{username, jdbcType=VARCHAR}),'%')  
            </when >  
            <when test="sex != null and sex != '' ">  
                AND u.sex = #{sex, jdbcType=INTEGER}  
            </when >  
            <when test="birthday != null ">  
                AND u.birthday = #{birthday, jdbcType=DATE}  
            </when >  
            <otherwise>  
            </otherwise>  
        </choose>  
    </where>    
</select>  

2.NVL( string1, replace_with)函数

NVL是Oracle PL/SQL中的一个函数。它的格式是NVL( string1, replace_with)。它的功能是如果string1为NULL,则NVL函数返回replace_with的值,否则返回string1的值,如果两个参数都为NULL ,则返回NULL。

3.minus函数

Oracle Minus关键字
  SQL中的MINUS关键字
  SQL中有一个MINUS关键字,它运用在两个SQL语句上,它先找出第一条SQL语句所产生的结果,然后看这些结果有没有在第二个SQL语句的结果 中。如果有的话,那这一笔记录就被去除,而不会在最后的结果中出现。如果第二个SQL语句所产生的结果并没有存在于第一个SQL语句所产生的结果内,那这 笔资料就被抛弃,其语法如下:
  [SQL Segment 1]
  MINUS
  [SQL Segment 2]

大体意思就是上面的表减去下面的,有相同的就减去,不同的就留下来,只会保留上面表不同的。比如A表有数据1 2  3 4,B表有数据3 4 5 6,那么

  A
  MINUS    结果就是:1  2 ,只会保留A表的数据,减去相同的部分,保留剩下A的数据
  B

sql查询时间格式的数据:可以将时间字段转换为字符格式即可用to_char,例如last_send_time是时间格式

SELECT * FROM audit_interface_msg cb WHERE TO_CHAR(cb.last_send_time,'yyyy-mm-dd')like '2019-07-15'

原文地址:https://www.cnblogs.com/cherishforchen/p/10059089.html