1 关系型数据库:通过表和表之间,行和列之间的关系进行数据的存储
如:mysql
2 非关系型数据库:对象存储,通过对象的自身的属性来决定。如:redis
数据库删除语句对比:
truncate和delete的区别:truncate会重新设置自增列(计数器归0)且不会影响事务。
去重:
select distinct * from 表
排序:
升序 ASC 降序 DESC
where 。。。
order by 字段 DESC
Mysql常用函数
数学运算: ABS() 绝对值 ; ceiling() 向上取整; rand():随机数(0-1); floor():向下取整;
字符串:char_length('') :字符串长度; concat('','','') 拼接字符串;
replace('我说','我','你') 返回"你是" substr('',1,2) 从第一个开始截取2个
聚合函数:count(),sum(),AVG(),MAX(),MIN()
数据库MD5加密
主要增强算法复杂度和不可逆性
MD5不可逆,具体的值的MD5是一样的
加密: update 表 set pwd=MD5(pwd) where id=1
事务
原则:ACID原则
原子性:要么都成功要么都失败(两个人转账例子)
一致性:针对一个事务操作前和操作后的状态一致 (不管是a转账给b还是b转账给a他们的总数一定不变)
持久性:事务结束后的数据不随着外界原因导致数据丢失
若出现断电等外界原因时,事务若未提交,则恢复到原始状态;若已提交,则不可逆。
隔离性:多个用户同时操作不会互相影响
隔离性会遇到的情况:
脏读:指一个事务读取了另外的一个事务未提交的数据。 例:A给B转账200但是还未提交,此时C来查看B只有100
虚读(幻读):指在一个事务内读取到了别的事务插入的数据导致前后不一致(比如多了一行)
不可重复读:在一个事务读取表中的某一行数据,多次读取结果不同(中途有别的用户进行数据更新操作)
Mysql是默认开启事务自动提交的
set autocommit=0 关闭
set autocommit=1 开启(默认的)
手动写事务需要先关闭默认的事务提交(设为0)
start transation 标记一个事务的开始,从这个之后的sql都在同一个事务内
commit 提交成功 rollback 失败,回滚为初始的样子
索引
是帮助Mysql 高效获取数据的数据结构,提取句子主干,就可以得到索引的本质;索引是数据结构
分类
主键索引(primary key)不为空且唯一
唯一的标识,不可重复,只能有一个列作为主键
唯一索引(unique key) 唯一
避免重复的列出现。
默认索引:可用index或者key关键字设置



