************************** mybatis *******************************************

#{} 的参数替换是发生在 DBMS 中,而 ${} 则发生在动态解析过程中
优先使用 #{}。因为 ${} 会导致 sql 注入的问题
表名用参数传递进来的时候,只能使用 ${}

------------------------------------- 函数-------------------------------------  
ORACLE中的支持正则表达式的函数主要有下面四个:
1,REGEXP_LIKE :与LIKE的功能相似
2,REGEXP_INSTR :与INSTR的功能相似
3,REGEXP_SUBSTR :与SUBSTR的功能相似
4,REGEXP_REPLACE :与REPLACE的功能相似
select * from tbl_user_quick_card where  regexp_like(bank_code, '^[^[:digit:]]+$')
[[:alpha:]] 任何字母。
[[:digit:]] 任何数字。
[[:alnum:]] 任何字母和数字。
[[:space:]] 任何白字符。
[[:upper:]] 任何大写字母。
[[:lower:]] 任何小写字母。
[[:punct:]] 任何标点符号。
[[:xdigit:]] 任何16进制的数字,相当于[0-9a-fA-F]

排序 :select T.* from TBL_SUPPLIER_STAGING_RATE T order by decode(T.BANK_CODE,'ABC',0,'SHB',1,'HXB',2)  --排序
连接 :select t1.*,t2.* from tbl1 t1 ,tbl2 t2 where t1.id = t2.number    相当于内连接 inner join        全连接 full join
数字函数: ROUND(3.456,2)=3.46  截断TRUNC(3.456,2)=3.45  取余 MOD(8,3)=2 绝对值 ABS(-3)=3 向下取整FLOOR(5.8)=5 向上取整 CEIL(5.4)=6
字符函数: 转大小写LOWER(x) UPPER(x) 替换 REPLACE(x,old,new) 截取 SUBSTR(x, start ,length) 拼接符号||
INSTR
instr(sourceString,destString,start,appearPosition) ('源字符串' , '目标字符串' ,'开始位置','第几次出现')
如果start的值为负数,则代表从右往左进行查找,但是位置数据仍然从左向右计算
单行函数: NVL(x,value)   decode(ps.pay_mode,'070',0,1)

字段处理后分组 : select substr(create_time, 1, 8),count(1) from tbl_channels_transaction group by substr(create_time, 1, 8)   
日期计算:select sysdate,(sysdate + interval '12' hour) from dual  --当前时间加上12小时

1,LTRIM和RTRIM 去掉查询结果左右的空格,
2,select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from dual;
3,select to_char(sysdate,'YYYYMMDD hh24:mm:ss') from dual

--用子查询建立一个表
create table Anthor as select * from instructor where 1 = 2
--返回发现指定的字符的位置
select instr('oracle traning','ra',1,2) instring from dual
--返回字符串并将字符串的第一个字母变为大写
select initcap('smith') upp from dual
--返回一组表达式中的最大值,即比较字符的编码大小
select greatest('AA','AB','AC') from dual
select least('AA','AB','AC') from dual;
--时间点d当月份最后一天
select sysdate, LAST_DAY(sysdate) LAST_DAY from dual;  
-- NEXT_DAY(d,number) ,时间点d开始,下一个星期几的日期
--◎ 星期日 = 1  星期一 = 2  星期二 = 3  星期三 = 4  星期四 = 5  星期五 = 6  星期六 = 7
select sysdate, NEXT_DAY(sysdate,2) aa from dual;
--增加月add_months
select to_char(add_months(to_date('2016-12-29 23:23:22','yyyy-mm-dd hh24:mi:ss'),2),'yyyy-mm-dd hh24:mi:ss') from dual
--增加天
select to_char(to_date('2016-12-29 23:23:22','yyyy-mm-dd hh24:mi:ss')+62,'yyyy-mm-dd hh24:mi:ss') from dual
--增加小时、1/(24*60)增加分钟
select to_date('02-22-08 10:30:30','mm-dd-yy hh24:mi:ss') today,to_date('02-22-08 10:30:30','mm-dd-yy hh24:mi:ss')+ 1/24 next_hour from dual;
--RPAD  在列的右边粘贴字符
select rpad('gao',2,'*')from dual;
select lpad('gao',4,'*')from dual;

------------------------------------- 效率,连接-------------------------------------  
如果查询的两个表大小相当,那么用in 和exists 差别不大。 如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in
select*fromtbl_cashier_numberwherecashier_noin(selectcashier_nofromtbl_channels_transaction )
select t.* from tbl_cashier_number t where exists (select cashier_no from tbl_channels_transaction where cashier_no = t.cashier_no )

内连接:
select tbl_class c inner join tbl_student s on c.class_id = s.student_class_id
首先先将Class表和Student表进行交叉连接然后通过on后面的限制条件,只选择那些StudentClassID和ClassID相等的列
隐式内连接:
select tbl_class c,tbl_student s where c.class_id = s.student_class_id
左外链接、右外链接
全外连接:
将左边和右边表每行都至少输出一次,用关键字”full outer join”进行连接,可以看作是左外连接和右外连接的结合
自连接
------------------------------------- sequence-------------------------------------  
create sequence SEQ_CASHIER_TRANS_ID
minvalue 1
maxvalue 9999999999
start with 100000
increment by 1
cache 20
cycle;--循环,达到最大值从最小值开始循环,否则达到最大值会报错
select SQE_CASHIER_TRANS_ID.nextval from dual
drop sequence seq1

select * from all_sequences
select * from TBL_SYS_SEQUENCE   收银台表

UUID uuid = UUID.randomUUID();
String uuidStr = uuid.toString().replace( "-", "");   主键生成

CREATE UNIQUE INDEX "CARDREALUAT"."PK_TBL_USER_QUICK_CARD" ON "CARDREALUAT"."TBL_USER_QUICK_CARD" ("SERILA")
CREATE UNIQUE INDEX "CARDREALUAT"."Index_U_INFO" ON "CARDREALUAT"."TBL_USER_QUICK_CARD" ("USER_NO", "SUPPLIER_NO", "CARD_NO", "CARD_STATUS", "ACCOUNT_TYPE")
索引:创建索引可以根据查询业务的不同分为两种:单一列的索引,联合索引. 顾名思义,单一列索引就是指在表的某一列上创建索引,联合索引是在多个列上联合创建索引.
优缺点比较:
1):索引所占用空间:单一列索引相对要小.
2):索引创建时间:单一列索引相对短.
3):索引对insert,update,delete的影响程序:单一列索引要相对低.
4):在多条件查询时,联合索引效率要高.
索引的使用范围:单一列索引可以出现在where 条件中的任何位置,而联合索引需要按一定的顺序来写

条件列出现联合索引的第一列  使用联合索引
条件列没有出现联合索引的第一列  不使用联合索引
条件列在first_name和last_name中间加入另外一个条件  不使用联合索引

------------------------------------- sql-------------------------------------
分页
select t.* from (select rownum rn,tb.* from TBL_COUPON_DETAIL tb ) t  where rn > 10 and rn <= 20

------------------------------------- myBatis-------------------------------------

<select id= "queryBankParList" resultMap ="BaseResultMap">
select
<include refid ="Base_Column_List" />
from TBL_SUPPLIER_STAGING_RATE where <![CDATA[ LOW_MONEY <= #{payMoney} and HIGH_MONEY >= #{payMoney}]]>
and STATUS=#{status}
and BANK_CODE in
<foreach item ="item" index="index" collection= "ids" open= "(" separator ="," close=")">
#{item}
</foreach >
order by DECODE (BANK_CODE,
<foreach item ="item" index="index" collection= "ids" open= "" separator ="," close="">
#{item},#{index}
</foreach >
)
   <!--按照传入的集合顺序排序-->
</select >
传入的map中ids为集合,按照集合中的顺序排列结果集
数据库sql语句  如果有变量 使用 #{}这种方式
<select id="queryNeedSyncTransNos" parameterType="java.util.List" resultType="java.lang.String">
select * from
<foreach collection="list" item="item" index="index" open="(" separator="union" close=") bb">
select #{item,jdbcType=VARCHAR} as transNo from dual
</foreach>
where not EXISTS (
select transNo from
(
select transaction_no as transNo from tbl_account_transaction a where a.account_type = '020'
union
select sub_transaction_no as transNo from tbl_abnoral_order_handle b
) aa where aa.transNo = bb.transNo
) </select>
<where>
user_no = #{userNo}
<if test="accountType != null">
and account_type = #{accountType}
</if>
<if test="modifyAccountAmount != null">
<![CDATA[ and account_amount+#{modifyAccountAmount}>=0]]>

日期计算、正则、sequence、索引、表连接、mybatis的更多相关文章

  1. Mysql单表访问方法,索引合并,多表连接原理,基于规则的优化,子查询优化

    参考书籍<mysql是怎样运行的> 非常推荐这本书,通俗易懂,但是没有讲mysql主从等内容 书中还讲解了本文没有提到的子查询优化内容, 本文只总结了常见的子查询是如何优化的 系列文章目录 ...

  2. MySQL数据库学习笔记(六)----MySQL多表查询之外键、表连接、子查询、索引

    本章主要内容: 一.外键 二.表连接 三.子查询 四.索引 一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复 ...

  3. MySQL多表查询之外键、表连接、子查询、索引

    MySQL多表查询之外键.表连接.子查询.索引 一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复的,不允许为 ...

  4. Mybatis第四篇【多表连接】

    Mybatis多表连接 我们在学习Hibernate的时候,如果表涉及到两张的话,那么我们是在映射文件中使用<set>..<many-to-one>等标签将其的映射属性关联起来 ...

  5. MySQL数据库学习笔记----MySQL多表查询之外键、表连接、子查询、索引

    本章主要内容: 一.外键 二.表连接 三.子查询 四.索引 一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复 ...

  6. Javascript扩展String.prototype实现格式金额、格式时间、字符串连接、计算长度、是否包含、日期计算等功能

    <script src="Js/jquery-3.1.1.min.js"></script> <script type="text/java ...

  7. MySQL 约束、表连接、表关联、索引

    一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复的,不允许为空,用来保证数据完整性. 外键:是另一表的唯一性 ...

  8. mysql学习笔记-- 多表查询之外键、表连接、子查询、索引

    本章主要内容: 一.外键 二.表连接 三.子查询 四.索引 一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复 ...

  9. hint不当索引,影响多表连接方式,最终导致SQL执行缓慢

    需求:一个SQL执行特别慢,无法返回结果,需要进行优化,最终返回结果即可. 一.SQL分析 二.尝试执行,观测执行计划 三.修改SQL 四.问题总结 一.SQL分析 )SQL文本,执行时间,执行用户 ...

随机推荐

  1. WPS Office手机版调用接口代码指导帖之二 [复制链接]

    原文链接:http://bbs.wps.cn/thread-22349340-1-1.html 从V5.1版本开始,WPS移动版本提供了额外的功能,可以供第三方程序通过集成的方式调用“WPS移动版”打 ...

  2. 蜕变成蝶~Linux设备驱动之中断与定时器

    “我叮咛你的 你说 不会遗忘 你告诉我的 我也全部珍藏 对于我们来说 记忆是飘不落的日子 永远不会发黄 相聚的时候 总是很短 期待的时候 总是很长 岁月的溪水边 捡拾起多少闪亮的诗行 如果你要想念我  ...

  3. C# 解决“请求被中止: 未能创建 SSL/TLS 安全通道”的问题

    最近在开发项目的时候,使用爬虫抓取网络数据的时候,当请求Web数据时,碰到了“请求被中止: 未能创建 SSL/TLS 安全通道”的问题,尝试过很多网上的方法,例如添加证书等都没有用.最后在GitHub ...

  4. 求问ps如何导出单个切片及PS导出所有的切片图像

    在ps里面对图片进行切片,并根据需要弄好切片,利用shift键,可以选择其中部分的切片: 弄好以后,点击“文件”,选择“存储为WEB和设备所用格式”:. 在打开的“存储为WEB和设备所用格式”界面上点 ...

  5. react表单的一些小例子

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. 注意兼容浮点运算误差 0.7 + 0.1 ==0.8 为false

    所以比较 汇总或者计算的时候注意确定精度0.7 + 0.1 ==0.8 换成 Math.abs(0.7 + 0.1 ==0.8)<0.0001参考下

  7. angularjs使用BUG收集和解决办法

    此文章涉及到时1.X的版本.请注意! 1.关于checkbox和bootstrap不能选中BUG 在使用angularjs的时候,有个比较明显的bug ng-disabled无效的情况 这里是一种情况 ...

  8. jquery异步ajax超大长度base64图片长字段数据传输问题解决办法和php后台处理办法

    2017年5月9日19:25:02 在做在线签名的时候,到了图片上传的时候,使用jquery异步ajax上传base64的图片数据的时候,使用默认的方式进行数据传输偶尔会出现 生产的图片只有上半部分, ...

  9. kubernetes 1.3 使用skydns + kube2dns +etcd部署DNS服务器

    1. 直接从Docker中拉取skydns,kube2dns,etcd容器,放到一个Pod中 kube2sky:1.14 etcd:2.0.9 skydns-amd64 2. 创建RC apiVers ...

  10. Linux下/usr/bin与/usr/local/bin/区别总结

    Linux下/usr/bin与/usr/local/bin/区别总结 2017年10月13日 12:30:17 2puT 阅读数:15930    版权声明:本文为博主原创文章! github地址:h ...