標籤:多少 開始 應該 方便 cal 存在 null 電話 記錄
字串類型
Char 和varchar
在定義char 跟varchar時,都需要設定長度。
文法:
char(M); 最大長度為255
varchar(M); 最大長度為65532 不同編碼長度不同 GBK最大為:32767
utf8最大為:21845
M為長度!
兩者區別:
Char的M是固定的,即使輸入的字元長度小於M值,該字元長度也會被定義為M值;
效率更快,使用一些固定字元長度的時候可以使用,例:電話號碼、社會安全號碼碼等!
Varchar的M是範圍性值,只要不超過M,輸入的值長度為多少即為多少!儲存空間更加靈活。
text
文本類型,主要分為四種:
tinyText,text,mediumText,longtext
字元長度不需要定義
從左往右排序,越往後值越大,longtext的值幾乎是無限大!
主要運用在文字框和其他自由輸出地區(如:一篇文章、一篇新聞等)!
enum
單選項字串類型
文法:
enum(選項字串1,選項字串n);
插入值的時候,只能插入選項字串中的一個字串,其他則無效,會出現報錯!
因為enum在儲存空間中是以整數的形式儲存,所以我們可以在插入值的時候直接插入對應字串的編號,從左往右開始,起始值為1.
Set
多選項字串類型
文法方面與單選項一樣,區別在於插入值的時候可以插入多個值!
同單選項一樣,可以通過字串編號來讀取,只不過排序不同,定序,從左往右,依次為1.2.4.8.16.32.64 最多隻能到64
Binary,varbinary,blob
二進位文本類型,想當電腦的話可以自己Google學習,那不是人學的!
列屬性
文法格式:列屬性是在建立表的時候,填寫在欄位類型後面的
null和nonull
null允許欄位為空白;
Nonull 不允許欄位為空白,如果欄位設定了這個屬性的話,系統會判斷欄位是否為空白,如果有設定預設值(default),如果沒有的話,系統會報錯!
Default
欄位預設值
文法:
default 預設值 預設值可以是整數也可以是字串
primary key
主鍵
1.定義一個欄位為主鍵後,該欄位不能重複;
2.主鍵的內容不可為空
3.一個表中主鍵只能有一個
4.也叫做主鍵索引
定義主鍵的方法
1.定義一個欄位的時候直接在後面加上primary key ;
2.定義完欄位後再定義主鍵 文法:primary key(欄位);
這種方法可以創造出組合主鍵,將兩個欄位組合成一個主鍵,但是要記住,主鍵只有一個
組合主鍵文法: primary key(欄位名1,欄位名2);
Unique key
唯一鍵
也叫作唯一索引
跟主鍵基本一樣,定義方法也一樣
區別:唯一鍵可以為空白,主鍵不可為空!
auto_increment
自增長屬性
作用是每次插入記錄的時候,自動的為某個欄位的值加1(基於上一個記錄)
注意:
使用這個屬性有兩個條件:
1, 該欄位類型必須為整型
2, 該欄位上必須存在索引(後面講,主鍵也叫作主鍵索引,唯一鍵也叫作唯一鍵索引)
auto_increment 自動成長初始值
文法格式:在定義完欄位後增加auto_increment 初始值
comment
欄位內注釋
外鍵
一張表內的一個欄位指向、引用著另外一張表內的另外一個欄位
負責指向的表為子表,被指向的表為主表
作用:
1, 增加子表記錄的時候,是否有與之對應的父表記錄!
2, 當刪除或更改父表記錄的時候,從表應該如何處理相關的記錄!
文法格式:
foreign key(子表欄位) references 父表名(父表主鍵)
先有父表再有字表,文法寫在建立字表的欄位內;
定義外鍵名
定義外鍵名後方便刪除
Constraint 外鍵名 foreign key(子表欄位) references 父表名(父表主鍵)
外鍵名不能加引號!
如果想要修改父表的話需要再設定一個級聯操作命令,當在操作父表時,子表會受到什麼樣的影響,如果沒有設定級聯操作,更改父表會報錯!
級聯操作
主表更新
文法形式為:on update[級聯操作]
主表刪除
文法形式為:on delete[級聯操作]
這裡的級聯操作常見的有三種形式:
cascade:同步操作,或者串聯操作!也就是當主表記錄刪除或更新的時候,從表也進行相應的刪除或更新!
set null:設定為null,也就是當主表記錄刪除或更新的時候,從表中的外鍵欄位設定為空白
restrict:拒絕主表的更新或刪除
刪除外鍵的文法
alter table 表名drop foreign key 外鍵名;
mysql字串類型、列屬性及外鍵