mysql架構
mysql數據庫: C----->S架構軟件mysql
- mysql數據庫本質就是一個基於網絡網絡通訊的軟件
- 全部基於網絡通訊的軟件,底層都是socket
關係型數據庫和非關係型數據庫
DBMS:數據庫管理系統 關係型數據庫: MySQL、Oracle、DB二、sql server、....redis
- 表結構
- 須要哪些字段
- 字段是什麼類型
- 字段與字段類型
</br> 非關係型數據庫: redis、mongodb... - 非關係型數據庫通常以 key:value的形式存儲sql
例如:mongodb
{ 'name': 'tank' }
存儲引擎
存儲引擎是用於根據不一樣的機制處理不一樣的數據。 查看mysql中全部引擎:show engines;
數據庫
mysql中的幾種引擎
myisam: 5.5之前老的版本使用的存儲引擎 blackhole: 黑洞引擎,存進去數據消失 innodb: 默認使用存儲引擎安全
- 支持事務
- 行鎖
- 外鍵 memory: 通電數據存在,斷電丟失(數據放在內存中)
</br> **示例:** 建立表的時候指定引擎 ```mysql # 建立表 create table t1(id int)engine=innodb; create table t2(id int)engine=myisam; create table t3(id int)engine=blackhole; create table t4(id int)engine=memory;網絡
插入數據
insert into t1 values(1); insert into t2 values(2); insert into t3 values(3); insert into t4 values(4);session
# 設置嚴格模式 ```mysql # 查看數據庫配置中變量名包含mode的配置參數: show variables like "%mode%"; # 修改安全模式: set session; # 局部有效,只在你當前操做的窗口有效 set global session; # 全局有效,永久有效 # 修改完以後退出當前客戶端從新登陸便可 set global sql_mode = 'STRICT_TRANS_TABLES';
char和vachar
區別 1:char類型是指固定長度的存儲方式,長度不足會在右側補足 2:varchar是值不固定長度的存儲方式,只存儲:字符長度+1個byte長度存儲信息長度架構
什麼地方使用char呢? 1:存儲字節小的,好比門牌號10一、102,由於若是用varchar,自己字節長度就小,還要浪費一個byte去存長度信息 2:存儲固定長度的,好比身份證號、手機號這些都是固定長度的 3:更新動做十分繁瑣的,由於varchar還要去計算存儲長度會浪費精力,而char是不須要的socket
另外還有根據存儲引擎來區分使用 myisam 存儲引擎 建議使用固定長度數據列 代替 可變長度的數據列。 memory存儲引擎 目前都使用固定數據行存儲,所以不管使用char varchar列都不要緊, innodb 存儲引擎 建意使用varchar 類型