關係型數據庫: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節省空間,超出字符就報錯
非空加唯一多個的話,默認使用是第一個
索引問題: