標籤:unique 關係 str 文本 刪除 tiny 字串類型 alt creat
字串類型
char :255字
char(字元數)
效率高
varchar :(GBK<=32767字元 | UTF8<=21845字元)
varchar(字元數)
儲存較為靈活
text :長度長
tinytext,text,mediumtext,longtext
不需要指定長度,用於文本地區和自由輸入地區的儲存
enum :枚舉類型,類似單選。只能插入選項中的選項值。
enum(‘值1‘,‘值2‘)
儲存為按編號(左至右)儲存,也就是第一個選項儲存在記憶體中為1,如此類推。
set :集合類型,類似多選。只能插入選項中的選項值
set(‘值1‘,‘值2‘,‘值3‘,...)
插入值時順序不限,儲存與enum一樣按位置編號儲存。
特別注意:儲存——
e.g. set("值1","值2","值3","值4","值5","值6")
1 2 4 8 16 32
儲存的時候是按照該方式的位置編號儲存。
binary | varbinary | blob
二進位文本類型,儲存使用二進位形式。一般不使用
列屬性 定義列(欄位)的屬性
null | not null
:定義欄位能否為空白(預設為null)
default
:給欄位一個預設值,當欄位沒有寫入值時使用預設值填充。一般配合not null使用。
此時在寫入值時可以直接寫入default,不用引號包裹。
primary key
主鍵,為欄位或欄位組合(多個欄位組合為一個主鍵)設定為主鍵,一般設定為能起到標識的欄位為主鍵,一個表格只能有一個主鍵。
在使用時很少使用組合主鍵,一般會另設一個與表格欄位無任何商務邏輯的欄位,並把該欄位設定為主鍵。
主鍵欄位不能有重複值,不可為空。
格式有 :欄位 primary key
:primary key(欄位名) 定義欄位組時只能使用該格式
unique key
唯一鍵,定義後該欄位值不可重複,可以為空白值,可以定義多個(同一表格)
auto_increment
自增長,被定義欄位再每次插入行記錄時自動寫入加1後的值。
注意 :使用欄位必須為整型,必須存在索引。
e.g. (欄位 auto_increment
)auto_increment 初始數值;
預設為從0開始,當需要指定開始數值時,要在表格建立語句後加上auto_increment 初始數值 該句。
注意 :開啟自增長後依然可以手動寫入值,並且每次自增長都會以前邊出現的最大值為增長基,也就是說原本從0開始,增到1之後手動插入一行值為200的資料後,下次插入行將會從201開始計,並且即使刪除表格所有資料,並不會清空該增長機制(增長基不變)。重設自增長語句:truncate 表名。
comment
列注釋,為列進行注釋,使用show create table 表名後,注釋內容會顯示在表屬性之中。
索引
每個表都會內建一些經過排序過的表格,在查詢時將使用這些表格式查詢。索引表格的機制將根據儲存引擎不同而不同。
能提高查詢效率,降低增刪改速度,佔用一定的儲存空間。
實體與實體的關係
一對一 :設計表格時,兩個實體表格存在相同的主鍵欄位,並且主索引值為一一對應。
一對多 :設計表格時,兩個實體表格存在著一種關係——一個表格中的主索引值對應另一個表格的多個非主索引值。
多對多 :設計表格時,三個實體表格存在著,兩個實體表格的主索引值分別通過第三個表格聯絡起來。
外鍵
當前只有innoDB儲存引擎才支援,項目中往往不用外鍵,而是借用其設計思想
alter table 表名 add foreign key 外鍵定義
foreign key 外鍵
當一個表格的主索引值對應另一個表格的欄位值(非主鍵)時,那麼主鍵欄位的表被稱為父表,另一個被稱為子表(外鍵)。
也就是說,外鍵的值依賴於主鍵的值。插入外索引值必須在主鍵有與之對應的資料。
格式 :foreign key(外鍵欄位) references 主鍵欄位表名(主鍵欄位)。
主表更新
on update[級聯操作] | 主表更新
on delete[級聯操作] | 主表刪除
級聯操作:1.cascade | 同步操作,當主表記錄刪除或更新的時候,從表也進行相應的刪除或更新
2.set null | 當主表記錄刪除或更新的時候,從表的外鍵欄位設定為空白
3.restrict | 拒絕主表的更新或刪除。
刪除外鍵
alter table 表名 drop foreign key 外鍵名
此處外鍵名不是欄位名,建立外鍵的時候若沒定義外鍵名,那麼系統會自動分配一個外鍵名。(查看方法show create table)
儲存引擎
引擎的選擇主要還是要注意其執行效率的快慢。
2016-11-25-MYSQL-2