Data Types Overview

MatrixOne Data types conforms with MySQL Data types definition.

Reference: <https://dev.mysql.com/doc/refman/8.0/en/data-types.html>

Integer Numbers

Data Type Size Min Value Max Value
TINYINT 1 byte -128 127
SMALLINT 2 bytes -32768 32767
INT 4 bytes -2147483648 2147483647
BIGINT 8 bytes -9223372036854775808 9223372036854775807
TINYINT UNSIGNED 1 byte 0 255
SMALLINT UNSIGNED 2 bytes 0 65535
INT UNSIGNED 4 bytes 0 4294967295
BIGINT UNSIGNED 8 bytes 0 18446744073709551615

Examples

  • TINYINT and TINYINT UNSIGNED
1. -- Create a table named "inttable" with 2 attributes of a "tinyint", a "tinyint unsigned",
2. create table inttable ( a tinyint not null default 1, tinyint8 tinyint unsigned primary key);
3. insert into inttable (tinyint8) values (0),(255), (0xFE), (253);

5. mysql> select * from inttable order by 2 asc;
6. +------+----------+
7. | a    | tinyint8 |
8. +------+----------+
9. |    1 |        0 |
10. |    1 |      253 |
11. |    1 |      254 |
12. |    1 |      255 |
13. +------+----------+
14. 4 rows in set (0.03 sec)
  • SMALLINT and SMALLINT UNSIGNED
1. -- Create a table named "inttable" with 2 attributes of a "smallint", a "smallint unsigned",
2. drop table inttable;
3. create table inttable ( a smallint not null default 1, smallint16 smallint unsigned);
4. insert into inttable (smallint16) values (0),(65535), (0xFFFE), (65534), (65533);

6. mysql> select * from inttable;
7. +------+------------+
8. | a    | smallint16 |
9. +------+------------+
10. |    1 |          0 |
11. |    1 |      65535 |
12. |    1 |      65534 |
13. |    1 |      65534 |
14. |    1 |      65533 |
15. +------+------------+
16. 5 rows in set (0.01 sec)
  • INT and INT UNSIGNED
1. -- Create a table named "inttable" with 2 attributes of a "int", a "int unsigned",
2. drop table inttable;
3. create table inttable ( a int not null default 1, int32 int unsigned primary key);
4. insert into inttable (int32) values (0),(4294967295), (0xFFFFFFFE), (4294967293), (4294967291);

6. mysql> select * from inttable order by a desc, 2 asc;
7. +------+------------+
8. | a    | int32      |
9. +------+------------+
10. |    1 |          0 |
11. |    1 | 4294967291 |
12. |    1 | 4294967293 |
13. |    1 | 4294967294 |
14. |    1 | 4294967295 |
15. +------+------------+
16. 5 rows in set (0.01 sec)
  • BIGINT and BIGINT UNSIGNED
1. -- Create a table named "inttable" with 2 attributes of a "bigint", a "bigint unsigned",
2. drop table inttable;
3. create table inttable ( a bigint, big bigint primary key );
4. insert into inttable values (122345515, 0xFFFFFFFFFFFFE), (1234567, 0xFFFFFFFFFFFF0);

6. mysql> select * from inttable;
7. +-----------+------------------+
8. | a         | big              |
9. +-----------+------------------+
10. | 122345515 | 4503599627370494 |
11. |   1234567 | 4503599627370480 |
12. +-----------+------------------+
13. 2 rows in set (0.01 sec)

Real Numbers

Data Type Size Precision Min Value Max Value Syntax
FLOAT32 4 bytes 23 bits -3.40282e+038 3.40282e+038 FLOAT(M, D) M represents the maximum length and D represents the number of decimal places displayed. The value range of M is (1=< M <=255). The value range of D is (1=< D <=30), and M >= D. Float numbers with precision show the number of bits with the required precision, and a trailing zero is added when the number of bits falls short.
FLOAT64 8 bytes 53 bits -1.79769e+308 1.79769e+308 DOUBLE(M, D) M represents the maximum length and D represents the number of decimal places displayed. The value range of M is (1=< M <=255). The value range of D is (1=< D <=30), and M >= D. Float numbers with precision show the number of bits with the required precision, and a trailing zero is added when the number of bits falls short.

Examples

1. -- Create a table named "floatt1" with precision, a trailing zero is added when the number of bits falls short
2. create table floatt1(a float(5, 2));
3. insert into floatt1 values(1), (2.5), (3.56), (4.678);
4. mysql> select * from floatt1;
5. +------+
6. | a    |
7. +------+
8. | 1.00 |
9. | 2.50 |
10. | 3.56 |
11. | 4.68 |
12. +------+
13. 4 rows in set (0.00 sec)

15. -- Create a table named "floattable" with 1 attributes of a "float"
16. create table floattable ( a float not null default 1, big float(20,5) primary key);
17. insert into floattable (big) values (-1),(12345678.901234567),(92233720368547.75807);

19. mysql> select * from floattable order by a desc, big asc;
20. +------+----------------------+
21. | a    | big                  |
22. +------+----------------------+
23. |    1 |             -1.00000 |
24. |    1 |       12345679.00000 |
25. |    1 | 92233718038528.00000 |
26. +------+----------------------+
27. 3 rows in set (0.01 sec)

29. mysql> select min(big),max(big),max(big)-1 from floattable;
30. +----------+----------------------+----------------+
31. | min(big) | max(big)             | max(big) - 1   |
32. +----------+----------------------+----------------+
33. | -1.00000 | 92233718038528.00000 | 92233718038527 |
34. +----------+----------------------+----------------+
35. 1 row in set (0.05 sec)

String Types

Data Type Size Length Syntax Description
char 24 bytes 0 ~ 4294967295 CHAR Fixed length string
varchar 24 bytes 0 ~ 4294967295 VARCHAR Variable length string
binary 255 bytes 0 ~ 65535 BINARY(M) Similar to CHAR, binary string
varbinary 255 bytes 0 ~ 65535 VARBINARY(M) Similar to VARCHAR, binary string
text 1 GB other types mapping TEXT Long text data, TINY TEXT, MEDIUM TEXT, and LONG TEXT are not distinguished
blob 1 GB other types mapping BLOB Long text data in binary form, TINY BLOB, MEDIUM BLOB, and LONG BLOB are not distinguished

Examples

  • CHAR and VARCHAR
1. -- Create a table named "names" with 2 attributes of a "varchar" and a "char"
2. create table names(name varchar(255),age char(255));
3. insert into names(name, age) values('Abby', '24');
4. insert into names(name, age) values("Bob", '25');
5. insert into names(name, age) values('Carol', "23");
6. insert into names(name, age) values("Dora", "29");

8. mysql> select name,age from names;
9. +-------+------+
10. | name  | age  |
11. +-------+------+
12. | Abby  | 24   |
13. | Bob   | 25   |
14. | Carol | 23   |
15. | Dora  | 29   |
16. +-------+------+
17. 4 rows in set (0.00 sec)
  • BINARY and VARBINARY
1. -- Create a table named "names" with 2 attributes of a "varchar" and a "char"
2. create table names(name varbinary(255),age binary(255));
3. insert into names(name, age) values('Abby', '24');
4. insert into names(name, age) values("Bob", '25');
5. insert into names(name, age) values('Carol', "23");
6. insert into names(name, age) values("Dora", "29");

8. mysql> select name,age from names;
9. +--------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
10. | name         | age                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
11. +--------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
12. | 0x41626279   | 0x323400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 |
13. | 0x426F62     | 0x323500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 |
14. | 0x4361726F6C | 0x323300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 |
15. | 0x446F7261   | 0x323900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 |
16. +--------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
17. 4 rows in set (0.01 sec)
  • TEXT
1. -- Create a table named "texttest" with 1 attribute of a "text"
2. create table texttest (a text);
3. insert into texttest values('abcdef');
4. insert into texttest values('_bcdef');
5. insert into texttest values('a_cdef');
6. insert into texttest values('ab_def');
7. insert into texttest values('abc_ef');
8. insert into texttest values('abcd_f');
9. insert into texttest values('abcde_');

11. mysql> select * from texttest where a like 'ab\_def' order by 1 asc;
12. +--------+
13. | a      |
14. +--------+
15. | ab_def |
16. +--------+
17. 1 row in set (0.01 sec)
  • BLOB
1. -- Create a table named "blobtest" with 1 attribute of a "blob"
2. create table blobtest (a blob);
3. insert into blobtest values('abcdef');
4. insert into blobtest values('_bcdef');
5. insert into blobtest values('a_cdef');
6. insert into blobtest values('ab_def');
7. insert into blobtest values('abc_ef');
8. insert into blobtest values('abcd_f');
9. insert into blobtest values('abcde_');

11. mysql> select * from blobtest where a like 'ab\_def' order by 1 asc;
12. +----------------+
13. | a              |
14. +----------------+
15. | 0x61625F646566 |
16. +----------------+
17. 1 row in set (0.01 sec)

JSON Types

JSON Data Type Syntax
Object Object is enclosed by {}, separated by commas between key-value pairs, and separated by colons : between keys and values. The value/key can be String, Number, Bool, Time and date.
Array Array is enclosed by [], separated by commas between key-value pairs, and separated by colons : between keys and values. The value can be String, Number, Bool, Time and date.

Examples

1. -- Create a table named "jsontest" with 1 attribute of a "json"
2. create table jsontest (a json,b int);
3. insert into jsontest values ('{"t1":"a"}',1),('{"t1":"b"}',2);

5. mysql> select * from jsontest;
6. +-------------+------+
7. | a           | b    |
8. +-------------+------+
9. | {"t1": "a"} |    1 |
10. | {"t1": "b"} |    2 |
11. +-------------+------+
12. 2 rows in set (0.01 sec)

Time and Date Types

Data Type Size Resolution Min Value Max Value Precision
Time 8 bytes microsecond -2562047787:59:59.999999 2562047787:59:59.999999 hh:mm:ss.ssssss
Date 4 bytes day 0001-01-01 9999-12-31 YYYY-MM-DD/YYYYMMDD
DateTime 8 bytes microsecond 0001-01-01 00:00:00.000000 9999-12-31 23:59:59.999999 YYYY-MM-DD hh:mi:ssssss
TIMESTAMP 8 bytes microsecond 0001-01-01 00:00:00.000000 9999-12-31 23:59:59.999999 YYYYMMDD hh:mi:ss.ssssss

Examples

  • TIME
1. -- Create a table named "timetest" with 1 attributes of a "time"
2. create table time_02(t1 time);
3. insert into time_02 values(200);
4. insert into time_02 values("");

6. mysql> select * from time_02;
7. +----------+
8. | t1       |
9. +----------+
10. | 00:02:00 |
11. | NULL     |
12. +----------+
13. 2 rows in set (0.00 sec)
  • DATE
1. -- Create a table named "datetest" with 1 attributes of a "date"
2. create table datetest (a date not null, primary key(a));
3. insert into datetest values ('2022-01-01'), ('20220102'),('2022-01-03'),('20220104');

5. mysql> select * from datetest order by a asc;
6. +------------+
7. | a          |
8. +------------+
9. | 2022-01-01 |
10. | 2022-01-02 |
11. | 2022-01-03 |
12. | 2022-01-04 |
13. +------------+
  • DATETIME
1. -- Create a table named "datetimetest" with 1 attributes of a "datetime"
2. create table datetimetest (a datetime(0) not null, primary key(a));
3. insert into datetimetest values ('20200101000000'), ('2022-01-02'), ('2022-01-02 00:00:01'), ('2022-01-02 00:00:01.512345');

5. mysql> select * from datetimetest order by a asc;
6. +---------------------+
7. | a                   |
8. +---------------------+
9. | 2020-01-01 00:00:00 |
10. | 2022-01-02 00:00:00 |
11. | 2022-01-02 00:00:01 |
12. | 2022-01-02 00:00:02 |
13. +---------------------+
14. 4 rows in set (0.02 sec)
  • TIMESTAMP
1. -- Create a table named "timestamptest" with 1 attribute of a "timestamp"
2. create table timestamptest (a timestamp(0) not null, primary key(a));
3. insert into timestamptest values ('20200101000000'), ('2022-01-02'), ('2022-01-02 00:00:01'), ('2022-01-02 00:00:01.512345');

5. mysql> select * from timestamptest;
6. +---------------------+
7. | a                   |
8. +---------------------+
9. | 2020-01-01 00:00:00 |
10. | 2022-01-02 00:00:00 |
11. | 2022-01-02 00:00:01 |
12. | 2022-01-02 00:00:02 |
13. +---------------------+

Bool

Data Type Size
True 1 byte
False 1 byte

Examples

1. -- Create a table named "booltest" with 2 attribute of a "boolean" and b "bool"
2. create table booltest (a boolean,b bool);
3. insert into booltest values (0,1),(true,false),(true,1),(0,false),(NULL,NULL);

5. mysql> select * from booltest;
6. +-------+-------+
7. | a     | b     |
8. +-------+-------+
9. | false | true  |
10. | true  | false |
11. | true  | true  |
12. | false | false |
13. | NULL  | NULL  |
14. +-------+-------+
15. 5 rows in set (0.00 sec)

Decimal Types

Data Type Size Precision Syntax
Decimal64 8 bytes 18 digits Decimal(N,S) N is the total number of digits, the range is(1 ~ 18). The decimal point and (for negative numbers) the - sign are not counted in N. If N is omitted, the default value of N should be the largest; that is, the value is 18. S is the number of digits after the decimal point (the scale), the range is(0 ~ N) If S is 0, values have no decimal point or fractional part. If S is omitted, the default is 0, for example, Decimal(10) is equivalent to Decimal(10, 0). For example, Decimal(10,8) represents a number with a total length of 10 and a decimal place of 8.
Decimal128 16 bytes 38 digits Decimal(N,S) N is the total number of digits, the range is(18 ~ 38). The decimal point and (for negative numbers) the - sign are not counted in N. If N is omitted, the default value of N should be the largest; that is, the value is 38. S is the number of digits after the decimal point (the scale), the range is(0 ~ N) If S is 0, values have no decimal point or fractional part. If S is omitted, the default is 0, for example, Decimal(20) is equivalent to Decimal(20, 0). For example, Decimal(20,9) represents a number with a total length of 20 and a decimal place of 9.

Examples

1. -- Create a table named "decimalTest" with 2 attribute of a "decimal" and b "decimal"
2. create table decimalTest(a decimal(6,3), b decimal(24,18));
3. insert into decimalTest values(123.4567, 123456.1234567891411241355);

5. mysql> select * from decimalTest;
6. +---------+---------------------------+
7. | a       | b                         |
8. +---------+---------------------------+
9. | 123.457 | 123456.123456789141124136 |
10. +---------+---------------------------+
11. 1 row in set (0.01 sec)