mysql数据库知识点记录

1:
IFNULL(1,2) 如果1不是null则返回1,是null则返回2的值

IF(1,2,3)判断1 ,1不是null则执行返回2,是null则执行返回3,

2:数据库返回值,对于insert语句返回插入的条数 update 返回更新的条数 delete返回删除的条数 add 返回增加的条数


3:case when  then  使用
当一个属性有多种取值时很有用 比如一个订单的状态。判断时需要一层一层判断,先判断是否提交,根据
提交状态查询付款状态,根据付款状态查询发货状态,根据发货状态查询签收状态....下去。使用case when 来查询很有用
SELECT
	CASE
WHEN (
	SELECT
		tco.PAY_FLAG
	FROM
		t_customer_order tco
	WHERE
		tco.ORDER_ID = #{orderId}
) = 0 THEN
	'7'
ELSE
	CASE
WHEN (
	SELECT
		COUNT(1)
	FROM
		t_payment_code tpc
	WHERE
		tpc.REFUND_FLAG IN (1, 2, 3, 4)
	AND tpc.ORDER_ID = #{orderId}
) > 0 THEN
	'5'
ELSE
	CASE
WHEN (
	SELECT
		COUNT(1)
	FROM
		t_payment_code tpc
	WHERE
		tpc.ORDER_ID = #{orderId}
	AND tpc.INVAILD_FLAG IN (0)
) > 0 THEN
	'6'
ELSE
	CASE
WHEN (
	SELECT
		tco.COMMENT_FLAG
	FROM
		t_customer_order tco
	WHERE
		tco.ORDER_ID = #{orderId}
) = 0 THEN
	'8'
ELSE
	'9'
END
END
END
END AS orderStatus

mysql中 获取时间 建议使用now()sysdate(),不同的是now再执行之前就已经得到,而sysdate再执行时动态获得!
musql中 可以获得某天再某一年 某一个星期 某一个月中的位置 dayofyear() dayofweek() dayofmonth()
mysql中 获得月份和星期的名字 如september 和 Friday 函数是 weekname() monthname()
mysql中 获得一个月中最后的一天 last_day()
mysql中 获取两个日期相差年份用于获取年龄YEAR (20150308100725) - YEAR (20130203222625)=2
 
 

5:清除表格内容: TRUNCATE  tableName 就可以  (删除表格之后,重新复制一个新的表,机构和之前完全一样)

delect tableName(相当于一行一行删除表格内容)

6:计算两个“20160415161525”类型的时间之间相差天数

public static int daysOfTwo(Date beforDate, Date afterDate) {

	       Calendar aCalendar = Calendar.getInstance();

	       aCalendar.setTime(beforDate);

	       int day1 = aCalendar.get(Calendar.DAY_OF_YEAR);

	       aCalendar.setTime(afterDate);

	       int day2 = aCalendar.get(Calendar.DAY_OF_YEAR);

	       return day2 - day1;

	    }

7:mysql符号xml转换


原符号  <   <=   >   >=    &     '      "
替换符号&lt;&lt;=&gt;&gt;=&amp;&apos;&quot;

8:xml中使用forach循环插删除句

  <delete id="deleteKey">
  DELETE FROM
	t_user
  WHERE
	t_user.ID 
  in 
  <foreach collection="list" index="index" item="mylist" separator="," open="(" close=")">
	#{list}
  </foreach>
  </delete>

collection = "list" 定义执行时遍历的集合的名字。item="mylist" 定义的是前面传过来的集合参数的名字。separator=","定义的是每个对象循环之后中间添加的符号“,”,open="("定义这个语句以(开始,close=")"以)结束 实际执行sql:delete from t_user where t_user.ID in()

foreach的这种语法限制了不能用他执行批量的的update操作




数据库自定义函数、存储过程、触发器的区别
函数,就是我们数学里面的函数,你有几个输入,几个输出,你可以自己设计一些算法或者组织一些计算顺序什么的得到你想要的结果,但是里面不能含有PLSQL语句
存储过程,你自己定义输入输出,可以在里面加入SQL语句。
触发器,触发器定在没涨表上,当表的数据发生变化时触发,里面可以有SQL语句

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值