今天要來了解創建資料表的語法,
創建資料表會比資料庫複雜一些,
除了寫資料表名稱以外,
還要敘述資料表要有什麼欄位,
這些欄位又各自有什麼限制(Constraint)。
我們已經創建的學生資料表裡面有編號、生日、名字、性別等等的欄位,
假設我們都不規定欄位裡面要填什麼,
直接和學生說:「填一下你的生日!」,
有的學生填「八月3日」,有的學生填「810803」,有的填「1992.08.03」,
也有可能有看錯行的學生填寫「男」,是不是會亂七八糟?
為了減少這種亂七八糟的情況,
我們在創建資料表欄位時就要規定欄位的「型別(Type)」以及給予一些「限制(Constraint)」,
接下來會介紹在MySQL中超級常用的型別,引言中的小解釋如果看不懂沒關係,
剛開始學先知道最基礎的就好了,熟悉資料庫後,慢慢補這些知識也不遲。
--CREATE Table範例
CREATE Table student(
--欄位名稱 --型別(Type) --限制(Constraint)
id INT AUTO_INCREMENT, --編號
birth_date DATE NOT NULL, --生日
full_name VARCHAR(50) NOT NULL, --名字
gender VARCHAR(50) NOT NULL, --性別
class VARCHAR(100) --課程
start_date DATE NOT NULL, --開始日期
--限制(Constraint)
PRIMARY KEY (id)
) ;
一般常用的型別是這四大類型:
MySQL沒有布林型別,但可以輸入BOOLEAN,MySQL替換成TINYINT(1)。
對TINYINT(1)而言,輸入0就是FALSE,其餘數字都是TRUE。
可以表示小數的型別有很多種,像是float,double,但這些型別儲存的小數是近似值,以後操作時有機會造成謎一般的結果(廣義上的BUG),
而DECIMAL是儲存精準的數值,雖然所占空間比較大,但對新手來說比較友善,如果需要儲存小數,推薦使用DECIMAL!
字串的型別常見的四種:
+ CHAR 定長 英文 1 Byte,非英文2 Byte
+ VARCHAR 變長 英文 1 Byte,非英文2 Byte
+ NCHAR 定長 無論中英文都是2 Byte
+ NVARCHAR 變長 無論中英文都是2 Byte
有N的代表Unicode,無論是否英文都是用2 Byte儲存;
沒有N的話,就照英文1Byte,非英文2 Byte,但沒有N卻中英文混和容易出問題,所以如果沒辦法肯定欄位只會有英文的話,還是用有N的吧!
有VAR的代表是變長,輸入多少字,就占多少儲存空間;
沒有VAR的代表是定長,假設是NCHAR(10),無論你輸入多少字,都會占10 Bytes,你輸入兩個中文,系統會幫你補六個空白;
全部型別都看完以後,再對照我們創建的欄位和型別:
編號用整數型別、生日用日期型別等等,是不是又更了解這個語法了呢?
--CREATE Table '資料表名稱'(資料欄位)
CREATE Table student(
--欄位名稱 --型別(Type) --限制(Constraint)
id INT AUTO_INCREMENT, --編號
birth_date DATE NOT NULL, --生日
full_name VARCHAR(50) NOT NULL, --名字
gender VARCHAR(50) NOT NULL, --性別
class VARCHAR(100) --課程
start_date DATE NOT NULL, --開始日期
--限制(Constraint)
PRIMARY KEY (id)
) ;