MySQL数据库学习笔记02(事务控制,数据查询)
一、事务控制 什么是事务控制:在操作数据时需要让有关系的数据进行联动(一起有效、无效)。 注意:数据定义语句立即有效,不需要事务控制,只有数据操作语句才需要事务控制。
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小时制时间