关系型数据库:sqllite, db2, oracle, access, sql, server, MySQL,
非关系型数据库:mongodb, redis, memcache, nosql
版本问题:一般公司如果有一些旧的项目都是用的老版本项目MySQL5.5-5.6,新项目一般都是7.0了
# 用的公司自己搭的环境5.6 5.7 5.5 7.0 公司的时候自己问dba要
# 自己搭建的环境,新版本功能更强大,更完善,但是也可能有一些坑,因为5.6用多了
项目使用什么存储引擎:
# innodb(5.6之后默认引擎)------>两个文件(data:数据+索引, frame:表结构)
1.用于事务处理应用程序,支持外键和行级锁,如果应用对事务的完整性有比较高的需求,在并发的条件下要求
数据的一致性,数据更多的是更新和删除操作,那么innodb比较适合,
2.innodb除了有效地降低由删除和更新导致的锁定,还可以确保事务的完整性提交和回滚,对于类似计费系统
或者财务系统等对数据准确要求性比较的高的系统都很适合
# myisam(5.5之前默认引擎)----->三个文件(data:数据,frame:表结构,存储索引))
1.支持表级锁,查询和插入都非常快
2.如果应用是读操作和插入操作,很少的更新和删除操作,并且对事务的完整性,并发性要求不高,就可以用myisam
3.没有外键约束
# memory
内存级别的存储引擎, 更多的用来做缓存的,断电会消失,所以一些查询较高的数据,而且丢失也不影响正常运行的情况合适
例如银行的输入密码的操作
# blackhole
用来做大数据的分流的
怎么使用存储引擎
mysql> create table s(id int(),name varchar(50)) ENGINE=MyISAM;
mysql> create table s(id int(),name varchar(50)) ENGINE=InnoDB;
mysql> alter tabel s engine=innodb
2.在配置文件中修改
[mysqld]
default-storage-angine=INNODB
数据类型:
char和varchar的区别:
:char定长查询速度快,而且写入的速度快,但是varchar节省空间,超出字符就报错
非空加唯一多个的话,默认使用是第一个
索引问题: