MySQL是一款開源的關系型數據庫,支持多種數據類型,其中復合類型在數據存儲和查詢中扮演著重要角色。
復合類型指的是一種由多個簡單數據類型組成的數據類型,包括結構體(struct)、數組(array)、枚舉(enum)和聯合體(union)。需要注意的是,MySQL中并沒有定義聯合體類型。
結構體(struct)
結構體是由多個簡單數據類型組成的復合類型,類似于C語言中的struct。在MySQL中,可以通過CREATE TABLE語句定義表結構,使用以下語法:
CREATE TABLE table_name ( column1 datatype1, column2 datatype2, ... );
其中,datatype可以是MySQL中的任意一種數據類型,也可以是結構體類型。例如,定義一個包含姓名、年齡和性別的結構體類型:
CREATE TYPE person AS ( name VARCHAR(20), age INT, gender ENUM('male', 'female') );
接下來可以在表中使用person類型:
CREATE TABLE employee ( id INT PRIMARY KEY, info person );
數組(array)
數組是有序的多個相同數據類型的元素組成的復合類型,在MySQL中可以使用VARCHAR或TEXT數據類型定義數組,在插入數據時使用逗號分隔元素。
CREATE TABLE table_name ( column_name datatype[n] );
其中[n]為數組長度,例如:
CREATE TABLE fruit ( id INT PRIMARY KEY, colors VARCHAR[3] ); INSERT INTO fruit(id, colors) VALUES (1, 'red, green, yellow'), (2, 'purple, white');
枚舉(enum)
枚舉是一組可以取值的命名常量,類似于C語言中的enum。在MySQL中,使用ENUM數據類型定義枚舉類型,例如:
CREATE TABLE student ( id INT PRIMARY KEY, grade ENUM('freshman', 'sophomore', 'junior', 'senior') );
在插入數據時,只能使用枚舉中定義的值:
INSERT INTO student(id, grade) VALUES (1, 'fifth year'); -- ERROR 1265 (01000): Data truncated for column 'grade'
總結
復合類型在MySQL中可以用來存儲和查詢更加復雜的數據類型,包括結構體、數組、枚舉等。在創建表時,可以使用CREATE TYPE定義自己的復合類型。
下一篇mysql復原