详细讲解MySQL中的数据类型
一,整数类型
MySQL中常用的整数类型包括:
TINYINT:占用1字节,表示范围为-128到127的有符号整数或0到255的无符号整数。
SMALLINT:占用2字节,表示范围为-32768到32767的有符号整数或0到65535的无符号整数。
MEDIUMINT:占用3字节,表示范围为-8388608到8388607的有符号整数或0到16777215的无符号整数。
INT(INTEGER):占用4字节,表示范围为-2147483648到2147483647的有符号整数或0到4294967295的无符号整数。
BIGINT:占用8字节,表示范围为-9223372036854775808到9223372036854775807的有符号整数或0到18446744073709551615的无符号整数。
下面是一个MySQL表的建表示例代码,包含了不同整数类型的列:
CREATE TABLE example (
id INT(10) NOT NULL AUTO_INCREMENT,
tiny_value TINYINT(4) NOT NULL,
small_value SMALLINT(6) UNSIGNED NOT NULL,
medium_value MEDIUMINT(8) NOT NULL,
int_value INT(11) NOT NULL,
big_value BIGINT(20) UNSIGNED NOT NULL,
PRIMARY KEY (id)
);
在上述示例中,创建了一个名为example的表,包含了不同整数类型的列,每列都设置了对应的大小范围和其他属性。
下面是一个MySQL的查询示例代码,用于从上述表中查询数据:
SELECT * FROM example WHERE int_value > 100;
以上示例查询语句用于选取example表中int_value大于100的所有行。
请注意,示例代码只是用于演示不同整数类型的创建和查询,实际应用中还需根据具体情况选择合适的整数类型和设置相应的约束条件。
二,浮点数类型
MySQL中常用的浮点数类型包括:
FLOAT:单精度浮点数,占用4字节,范围约为-3.402823466E+38到-1.175494351E-38、0和1.175494351E-38到3.402823466E+38。
DOUBLE:双精度浮点数,占用8字节,范围约为-1.7976931348623157E+308到-2.2250738585072014E-308、0和2.2250738585072014E-308到1.7976931348623157E+308。
DECIMAL:高精度小数,用于存储精确的十进制数。DECIMAL(M, D)中的M表示总的位数,D表示小数部分的位数。例如,DECIMAL(10, 2)可以存储最大值9999999.99。
下面是一个MySQL表的建表示例代码,包含了不同浮点数类型的列:
CREATE TABLE example (
id INT(10) NOT NULL AUTO_INCREMENT,
float_value FLOAT NOT NULL,
double_value DOUBLE NOT NULL,
decimal_value DECIMAL(10, 2) NOT NULL,
PRIMARY KEY (id)
);
在上述示例中,创建了一个名为example的表,包含了不同浮点数类型的列,每列都设置了相应的大小和其他属性。
下面是一个MySQL的查询示例代码,用于从上述表中查询数据:
SELECT * FROM example WHERE float_value > 10.0;
以上示例查询语句用于选取example表中float_value大于10.0的所有行。
请注意,示例代码只是用于演示不同浮点数类型的创建和查询,实际应用中还需根据具体需求选择合适的浮点数类型,并注意浮点数的精度和舍入问题。
三,字符串类型
MySQL中常用的字符串类型包括:
CHAR:固定长度字符串,最多可以存储255个字符。如果存储的字符串长度小于指定长度,则会自动用空格填充。
VARCHAR:可变长度字符串,最多可以存储65535个字符。实际占用的存储空间根据存储的字符串长度而变化。
TEXT:用于存储较长的文本数据,最大长度为65535个字符。
BLOB:用于存储二进制数据,最大长度为65535个字节。
下面是一个MySQL表的建表示例代码,包含了不同字符串类型的列:
CREATE TABLE example (
id INT(10) NOT NULL AUTO_INCREMENT,
char_value CHAR(20) NOT NULL,
varchar_value VARCHAR(255) NOT NULL,
text_value TEXT NOT NULL,
blob_value BLOB NOT NULL,
PRIMARY KEY (id)
);
在上述示例中,创建了一个名为example的表,包含了不同字符串类型的列,每列都设置了相应的大小和其他属性。
下面是一个MySQL的查询示例代码,用于从上述表中查询数据:
SELECT * FROM example WHERE varchar_value LIKE '%keyword%';
以上示例查询语句用于选取example表中varchar_value列中包含关键字"keyword"的所有行。
请注意,示例代码只是用于演示不同字符串类型的创建和查询,实际应用中还需根据具体需求选择合适的字符串类型,并考虑存储空间和查询效率等因素。
四,时间日期类型
MySQL中常用的时间日期类型包括:
DATE:用于存储日期,格式为'YYYY-MM-DD',范围从'1000-01-01'到'9999-12-31'。
TIME:用于存储时间,格式为'HH:MM:SS',范围从'-838:59:59'到'838:59:59'。
DATETIME:用于存储日期和时间,格式为'YYYY-MM-DD HH:MM:SS',范围从'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。
TIMESTAMP:用于存储日期和时间,并自动记录插入或更新行的时间戳。格式为'YYYY-MM-DD HH:MM:SS',范围从'1970-01-01 00:00:01' UTC到'2038-01-19 03:14:07' UTC。
下面是一个MySQL表的建表示例代码,包含了不同时间日期类型的列:
CREATE TABLE example (
id INT(10) NOT NULL AUTO_INCREMENT,
date_value DATE NOT NULL,
time_value TIME NOT NULL,
datetime_value DATETIME NOT NULL,
timestamp_value TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id)
);
在上述示例中,创建了一个名为example的表,包含了不同时间日期类型的列,每列都设置了相应的大小和其他属性。其中timestamp_value列设置了默认值为当前时间戳。
下面是一个MySQL的查询示例代码,用于从上述表中查询数据:
SELECT * FROM example WHERE date_value > '2023-01-01';
以上示例查询语句用于选取example表中date_value大于'2023-01-01'的所有行。
请注意,示例代码只是用于演示不同时间日期类型的创建和查询,实际应用中还需根据具体需求选择合适的时间日期类型,并注意日期格式的匹配和时区的影响。
五,JSON数据类型
MySQL 5.7及以上版本支持JSON数据类型。JSON数据类型可以存储JSON格式的数据,提供了诸如查询、更新、删除等操作的方便性,并可通过索引进行优化,是处理半结构化数据的有效方式。
下面是一个MySQL表的建表示例代码,包含了JSON类型的列:
CREATE TABLE example (
id INT(10) NOT NULL AUTO_INCREMENT,
json_data JSON NOT NULL,
PRIMARY KEY (id)
);
在上述示例中,创建了一个名为example的表,包含了一个JSON类型的列,每行记录包含一条JSON数据。
下面是一些MySQL的示例代码,用于对JSON数据进行操作:
- 插入JSON数据:
INSERT INTO example (json_data) VALUES ('{"name":"Alice","age":25}');
以上示例代码向example表中插入了一条JSON数据。
- 查询JSON数据:
SELECT json_data->>'$.name' as name, json_data->>'$.age' as age FROM example;
以上示例代码查询了example表中所有行的name和age字段值,并使用'->>'运算符获取JSON字段的值。
- 更新JSON数据:
UPDATE example SET json_data = JSON_SET(json_data, '$.age', 26) WHERE id = 1;
以上示例代码使用JSON_SET函数将example表中id为1的行的age字段值更新为26。
- 删除JSON数据:
DELETE FROM example WHERE json_data->>'$.name' = 'Alice';
以上示例代码使用'->>'运算符查询example表中所有name字段值为"Alice"的行,并删除这些行。
请注意,以上示例代码只是用于演示JSON数据类型的创建和操作,实际应用中还需根据具体需求选择合适的JSON数据类型,并考虑存储空间和索引优化等因素。