MySQL的存儲引擎
存儲引擎sql語句:html
查看當前的默認存儲引擎: mysql> show variables like "default_storage_engine"; 查詢當前數據庫支持的存儲引擎 mysql> show engines \G;
經常使用引擎適用場景:mysql
InnoDBsql
用於事務處理應用程序,支持外鍵和行級鎖。若是應用對事物的完整性有比較高的要求,在併發條件下要求數據的一致性,數據操做除了插入和查詢以外,還包括不少更新和刪除操做,那麼InnoDB存儲引擎是比較合適的。InnoDB除了有效的下降由刪除和更新致使的鎖定,還能夠確保事務的完整提交和回滾,對於相似計費系統或者財務系統等對數據準確要求性比較高的系統都是合適的選擇。數據庫
MyISAM安全
若是應用是以讀操做和插入操做爲主,只有不多的更新和刪除操做,而且對事務的完整性、併發性要求不高,那麼能夠選擇這個存儲引擎。網絡
Memory併發
將全部的數據保存在內存中,在須要快速定位記錄和其餘相似數據的環境下,能夠提供極快的訪問。Memory的缺陷是對錶的大小有限制,雖然數據庫由於異常終止的話數據能夠正常恢復,可是一旦數據庫關閉,存儲在內存中的數據都會丟失。post
不一樣的存儲模式:搜索引擎
- 數據存在硬盤上,存三個文件,存表結構、數據、搜索目錄;
- 數據存在硬盤上、存兩個文件,表結構存一個文件,數據和搜索目錄存一個文件;
- 數據存在內存中,存一個文件,表結構;(表結構是存儲在硬盤上的),用於一些數據在短期內屢次讀取;
第一種方式:Myisam 5.5以前的默認存儲引擎 數據存儲方式:數據存在硬盤上,存三個文件,表結構,數據和搜索目錄; 既不支持事務,也不支持外鍵,不支持行級鎖,(只支持表鎖) 對於只讀操做比較多的狀況,查詢速度快; 第二種方式:Innodb 是5.6以後的默認搜索引擎 數據存儲方式:數據存在硬盤上,存兩個文件表結構,(數據和搜索目錄); 支持事務,支持行級鎖,支持外鍵 第三種方式:Memory 數據存儲方式:數據存在內存中,存一個文件,表結構(在硬盤上) 重啓server數據容易丟失,但讀寫速度快
關鍵詞:url
事務:transaction 保證了數據的安全性(原子性操做,不可拆分)
例子:假如A給B轉帳因爲B網絡斷開了,那麼以前的全部操做都會回滾到最開始;
行級鎖:修改哪行鎖哪行,修改數據的時候不能夠查看;
表級鎖:修改多行數據的時候用表級鎖;
基礎命令
庫的操做命令: 增:create databases 庫名; 刪:drop datbase 庫名; 改:alter database 庫名 charset 庫名1; 查:show databases; 表的操做命令: 先切換到文件夾下:use 庫名; 增:create table 表名(id int,name char(9) 約束條件); # 字段 create table info(id int,name char(9) not null) 刪:drop table 表名; 改:alter table 表名 change name name1 char(10); # 能夠更改字段名 alter table 表名 modify name char(10); # 不能夠更改字段名 alter table 表名 rename 新表名; alter table add 新字段 類型(長度約束) 其餘約束 after:在哪一個字段後面添加; alter table henry add age int(10) after user; 在user字段後添加age字段 first:添加後就是在最開始的位置; alter table henry add sex enum('male','female')first; 查:show table; 表名 查看錶結構:desc 表名 show create table 表名;看的更詳細 數據的操做命令: 增:insert into 表名 values(值1,值2...... ); insert into 表名(字段1,字段2) values(值1,值2); 刪:delete from 表名 where 字段=值; 改:update 表名 set 字段=新值 where 條件; update info set name="alex" where id=1; 將info表裏的id爲1的name改爲"sb" 查:select * from 表名;