数据库,常用函数及事务的理解

本文详细介绍了SQL中的日期函数,如NOW(), CURDATE(), CURTIME(), DATE_FORMAT(), YEAR(), MONTH(), DAY(), DATE(), TIME(), DAYOFWEEK(), DATEDIFF()等;字符串函数,包括LENGTH(), UPPER(), LOWER(), SUBSTRING(), ROUND();以及事务的基本概念,如原子性、隔离性、一致性和持久性,并解释了事务处理的两种方式:提交事务(COMMIT)和回滚事务(ROLLBACK)。

1、日期函数

//now() 可以返回系统当前日期时间     2019-07-04 12:53:56
select now() from dual;

//CURDATE() 返回系统当前日期
select CURDATE() from dual;          2019-07-04

//CURTIME() 返回系统当前时间
select CURTIME() from dual;


//DATE_FORMAT()日期格式化函数   格式化标准:参见MySQL API文档
select user_name,DATE_FORMAT(create_time,'%Y/%m/%d') as birthday from t_user;


//YEAR() 可以返回日期所对应的年份
select user_name,YEAR(birthday) from t_user;


//month() 获得日期所对应的月份
select user_name,month(birthday) from t_user;

//day() 获得日期所对应的天数
select user_name,day(birthday) from t_user;

//date() 从日期时间格式中,定义返回日期                2019-07-04
select user_name,date(create_time) from t_user;

//time()从日期时间格式中,定义返回时间                 17:04:12
select user_name,time(create_time) from t_user;

//dayofweek() 判断日期是星期几  1-星期天,2-星期一,依次类推……
select user_name,DAYOFWEEK(create_time) from t_user;


//DATEDIFF()用于比较两个时间的差值
SELECT DATEDIFF('1997-12-31 23:59:59','1997-12-30') from dual;

2、字符串函数

//返回字符串所占字节长度,UTF-8中汉字占3个字节,GBK中只占2个字节
select LENGTH(user_name) from t_user;

//将字符串中的所有小写字母,转换为大写字母
SELECT UPPER(user_name) from t_user;

//将字符串中的所有大写字母,转换为小写字母
SELECT LOWER(user_name) from t_user;

//从5号位置开始截取字符串,字符串下标从1开始……
SELECT SUBSTRING('Quadratically',5) from dual;

//从5号位置开始截取字符串,并截取连续的6位字符,字符串下标从1开始……
SELECT SUBSTRING('Quadratically',5,6);

//四舍五入一个10以内的随机值
SELECT ROUND(RAND() * 10) from dual;
事务:一段具有明确边界(开始-结束)的执行顺序有序的过程。例如:张三给李四转钱   你的一天经历……

3、事务

特点:
	原子性:事务具备原子性,不可再分,要么统一成功,要么统一失败,绝不可能一半成功,一半失败。
	隔离性:事务和事务之间,是相互隔离,互不干扰的。
	一致性:在一个事务范围内,事务中流转的数据具有一致性特点。
	持久性:事务一旦确认|提交,事务中所流转的数据就应该被持久化到硬盘中。



事务处理有两种方式:

提交事务   ---- 确认事务                   COMMIT
回滚事务   ---- 回到最初的状态             ROLLBACK



执行顺序有序的过程,一般是我们Java开发的软件在进行控制!但是这个这个过程可能会涉及到多张表,或者多个数据库


set autocommit = 0; //关闭数据库的自动提交功能

start transaction;  //开启一个事务

insert into t_user(user_name,age,gender) values ('李四',18,'男');     //添加数据

COMMIT;    //通过COMMIT | ROLLBACK 结束事务
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值