一、事务控制
什么是事务控制:在操作数据时需要让有关系的数据进行联动(一起有效、无效)。
注意:数据定义语句立即有效,不需要事务控制,只有数据操作语句才需要事务控制。
1、commit提交
一个用户向表中插入一条记录,其它用户并不能立即查询到,只有执行提交命令才确定有效。
注意:MySQL数据库默认设置了自动提交
查看是否开启自动提交:show variables like 'autocommit';
'autocommit', 'OFF' 关闭
'autocommit', 'ON' 开启
设置当前连接的自动提交:set session autocommit=1|0;
设置所有连接的自动提交:set global autocommit=1|0;
当需要执行原子操作时,需要关闭自动提交,当所有操作完成后才执行commit命令。
2、rollback回滚
当使用数据操作语句对数据进行更改时,如果还没有commit,那么就可以使用rollback撤销,把数据还原成修改前的样子。
3、savepoint保存点
默认情况下执行rollback语句,数据会加到最近一次的commit,设置保存点可以在rollback时返回到指定的位置。
操作1
savepoint sp1;
操作2
savepoint sp2;
操作3
savepoint sp3;
操作4
如果还是直接执行rollback语句,四项操作还是会直接消失,让rollback与保存点配合,返回的指定的位置:rollback to savepoint spn;
二、查询
1、排重查询
select distinct 字段 from 表名;
注意:查询多个字段时,所有字段都相同才会被认为是重复的数据。
2、算术运算符
select 字符±*/数据 from 表名;
如果相改变运算符的优先级可以使用小括号。
3、排序
select 字段 from 表名 order by 字段 [desc|asc],字段 [desc|asc];
降序:desc 升序:asc,默认按照升序显示。
4、条件查询
配合关系运算符逻辑运算符:> < >= <= = !=,and(&&) or(||) not(!)
select 字段 from 表名 where 字段 关系运算符 数据;
5、特殊条件
select 字段 from 表名 where 字段 between A and B;
注意:包括A且包括B,并且A<B
select 字段 from 表名 where 字段 in (A,B,C,…);
select 字段 from 表名 where 字段 is null;
select 字段 from 表名 where 字段 is not null;
注意:在数据库,空是一种状态,而不是固定的数据。
6、模糊查询
select 字段 from 表名 where 字段 like ‘%_’;
注意:所有类型都可以进行模糊查询,它的原理就是把所有数据查询出来转换成字符串,因此这种查询方式效率非常低。
% 替换0个或多个字符,相当于命令行中的*
_ 替换一个字符
7、函数
函数就是数据库已经实现好的一些功能,这些不属于SQL语句,所以没有统一,不同的数据库实现的函数差别很大。
行函数:一行数据就会返回一个结果。
数值相关:
round(数据,[n]) 把数据四舍五入,n表示小数点后的位数。
truncate(数据,[n]) 截取显示,n表示小数点后的位数。
floor(数据) 向下取整,直接丢弃小数点后的数据。
ceil(数据) 向下取整,丢弃小数点后的数据+1。
abs(数据) 求绝对值
pow(x,n) 求x的n次方
字符串相关:
char_length(str) 计算字符串的长度
concat(str1,str2,str3,…) 连接若干个字符串
lower(str) 把字符串中的所有字母转换成小写
upper(str) 把字符串中的所有字母转换成大写
trim(str) 去除掉字符串总部和尾部的空格
locate(s1,str) 返回在str字符串中s1首次出的位置,第几个字符。
left(str,n) 返回字符串的前n个字符
right(str,n) 返回字符串的后n个字符
mid(str,n,len) 返回字符串从n开始的len个字符。
strcmp(str1,str2) 功能与C标准库的一致
reverse(str) 字符串逆序显示
日期相关:
now() 获取当前日期和时间
current_date() 获取当前日期
current_time() 获取当前时间
date(str) 把字符串转换成日期
adddate(date,n) 在日期date的基础上加上n天
date_sub(date,n) 日期减掉n天得到一个新日期
datediff(date1,date2) 计算两个日期之间相隔多少天
dayofweek(date) 把日期转换成星期几
date_format(date,fromat) 按指定的格式显示时间
%a 星期几
%b 月份缩写
%d 天数
%y 只显示年份的后两位
%Y 显示4位年份
%r 显示12小时制时间
%T 显示24小时制时间