MYSQL---------支持数据类型

数值类型

  • 整数类型
    • TINYINT :通常用于存储小范围的整数,范围是-128到127或0到255(无符号)。例如,存储年龄可以使用TINYINT类型。示例:CREATE TABLE users (age TINYINT);
    • SMALLINT :范围比TINYINT大,有符号的范围是-32768到32767,无符号是0到65535。可用于存储一些较小范围但又比TINYINT稍大的数据,如员工编号。示例:CREATE TABLE employees (emp_id SMALLINT);
    • INT :最常用的整数类型,有符号范围是-2147483648到2147483647,无符号是0到4294967295。可用于存储一般的整数数据,如订单编号。示例:CREATE TABLE orders (order_id INT);
    • BIGINT :用于存储大整数,有符号范围是-9223372036854775808到9223372036854775807,无符号是0到18446744073709551615。适用于存储非常大的数字,如大型网站的用户ID等。示例:CREATE TABLE users (user_id BIGINT);
  • 浮点数类型
    • FLOAT :单精度浮点数,用于存储小数,精度有限。例如,存储商品价格,允许一定的精度误差。示例:CREATE TABLE products (price FLOAT);
    • DOUBLE :双精度浮点数,精度比FLOAT更高。用于需要更高精度的小数存储,如科学计算中的数据。示例:CREATE TABLE scientific_data (value DOUBLE);
  • 定点数类型DECIMAL ,用于存储精确的小数,常用于财务数据等对精度要求高的场景。例如,存储金额。示例:CREATE TABLE accounts (balance DECIMAL(10,2));表示总长度为10位,小数部分占2位。

日期时间类型

  • DATE :用于存储日期,格式为YYYY-MM-DD。例如,存储用户的出生日期。示例:CREATE TABLE users (birth_date DATE);插入数据:INSERT INTO users (birth_date) VALUES ('1990-01-01');
  • TIME :用于存储时间,格式为HH:MM:SS。可用于存储活动的开始时间等。示例:CREATE TABLE events (start_time TIME);插入数据:INSERT INTO events (start_time) VALUES ('10:30:00');
  • DATETIME :存储日期和时间,格式为YYYY-MM-DD HH:MM:SS。适用于需要同时记录日期和时间的场景,如订单创建时间。示例:CREATE TABLE orders (create_time DATETIME);插入数据:INSERT INTO orders (create_time) VALUES ('2023-01-01 12:00:00');
  • TIMESTAMP :也用于存储日期和时间,它的取值范围比DATETIME小,但会自动更新为当前时间。常用来记录数据的最后更新时间等。示例:CREATE TABLE logs (update_time TIMESTAMP);

字符串类型

  • CHAR :固定长度字符串,最大长度为255个字符。适用于存储长度固定的数据,如身份证号码、邮政编码等。示例:CREATE TABLE addresses (postcode CHAR(6));
  • VARCHAR :可变长度字符串,最大长度一般为65535个字符(受限于数据库表的最大行大小)。用于存储长度不固定的字符串,如姓名、地址等。示例:CREATE TABLE users (name VARCHAR(50));
  • BINARY :固定长度二进制字符串,用于存储二进制数据,如加密后的密码、图片的二进制数据等。示例:CREATE TABLE encrypted_data (password BINARY(64));
  • VARBINARY :可变长度二进制字符串,可存储可变长度的二进制数据。示例:CREATE TABLE images (image_data VARBINARY(MAX));

枚举类型(ENUM)

用于存储有限个特定值中的一个,如性别字段,只能是男或女。示例:CREATE TABLE users (gender ENUM('男','女'));插入数据:INSERT INTO users (gender) VALUES ('男');

集合类型(SET)

可以存储一个或多个指定值的集合。例如,存储用户的兴趣爱好,用户可以有多个爱好。示例:CREATE TABLE users (hobbies SET('阅读','运动','音乐','绘画'));插入数据:INSERT INTO users (hobbies) VALUES ('阅读,运动');

以下是 MySQL 中各种数据类型的代码示例:

sql 复制代码
-- 创建一个名为 data_types 的数据库
CREATE DATABASE data_types;

-- 使用 data_types 数据库
USE data_types;

-- 创建一个包含各种数据类型的表
CREATE TABLE sample_table (
    -- 整数类型示例
    tinyint_column TINYINT,
    smallint_column SMALLINT,
    int_column INT,
    bigint_column BIGINT,
    -- 浮点数类型示例
    float_column FLOAT,
    double_column DOUBLE,
    decimal_column DECIMAL(10, 2),
    -- 日期时间类型示例
    date_column DATE,
    time_column TIME,
    datetime_column DATETIME,
    timestamp_column TIMESTAMP,
    -- 字符串类型示例
    char_column CHAR(20),
    varchar_column VARCHAR(50),
    binary_column BINARY(10),
    varbinary_column VARBINARY(50),
    -- 枚举类型示例
    enum_column ENUM('male', 'female', 'other'),
    -- 集合类型示例
    set_column SET('reading', 'sports', 'music', 'painting')
);


-- 插入数据到 sample_table
INSERT INTO sample_table (
    tinyint_column,
    smallint_column,
    int_column,
    bigint_column,
    float_column,
    double_column,
    decimal_column,
    date_column,
    time_column,
    datetime_column,
    timestamp_column,
    char_column,
    varchar_column,
    binary_column,
    varbinary_column,
    enum_column,
    set_column
) VALUES (
    127,  -- TINYINT 的最大值(有符号)
    32767, -- SMALLINT 的最大值(有符号)
    2147483647, -- INT 的最大值(有符号)
    9223372036854775807, -- BIGINT 的最大值(有符号)
    123.45, -- FLOAT 示例
    1234.5678, -- DOUBLE 示例
    1234.56, -- DECIMAL 示例
    '2025-01-01', -- DATE 示例
    '12:34:56', -- TIME 示例
    '2025-01-01 12:34:56', -- DATETIME 示例
    CURRENT_TIMESTAMP, -- TIMESTAMP 示例,会自动插入当前时间
    'fixed string', -- CHAR 示例
    'variable string', -- VARCHAR 示例
    0x1234567890, -- BINARY 示例,十六进制表示
    0x1234567890, -- VARBINARY 示例,十六进制表示
    'male', -- ENUM 示例
    'reading,sports' -- SET 示例,存储多个集合元素
);


-- 查询 sample_table 中的数据
SELECT * FROM sample_table;


-- 更新数据示例
UPDATE sample_table 
SET 
    float_column = 98.76,
    enum_column = 'female'
WHERE int_column = 2147483647;


-- 删除数据示例
DELETE FROM sample_table WHERE bigint_column = 9223372036854775807;


-- 修改表结构示例,添加新的字段
ALTER TABLE sample_table
ADD new_column INT;


-- 删除表结构示例,删除新添加的字段
ALTER TABLE sample_table
DROP COLUMN new_column;


-- 删除表
DROP TABLE sample_table;


-- 删除数据库
DROP DATABASE data_types;

代码解释:

  • 创建数据库和表
    • CREATE DATABASE data_types;:创建一个名为 data_types 的数据库。
    • USE data_types;:指定后续操作使用 data_types 数据库。
    • CREATE TABLE sample_table (...):创建一个名为 sample_table 的表,其中包含了各种数据类型的字段。
  • 插入数据
    • INSERT INTO sample_table (...) VALUES (...):向 sample_table 插入一条记录,为每个字段提供相应的数据。
  • 查询数据
    • SELECT * FROM sample_table;:查询 sample_table 中的所有数据。
  • 更新数据
    • UPDATE sample_table SET... WHERE...:更新 sample_table 中满足条件的数据。
  • 删除数据
    • DELETE FROM sample_table WHERE...:删除 sample_table 中满足条件的数据。
  • 修改表结构
    • ALTER TABLE sample_table ADD new_column INT;:为 sample_table 表添加一个名为 new_column 的新字段。
    • ALTER TABLE sample_table DROP COLUMN new_column;:删除 sample_table 表中的 new_column 字段。
  • 删除表和数据库
    • DROP TABLE sample_table;:删除 sample_table 表。
    • DROP DATABASE data_types;:删除 data_types 数据库。

这个示例展示了 MySQL 中各种数据类型的使用,包括如何创建表、插入数据、更新数据、删除数据、修改表结构和删除表和数据库。你可以根据自己的需求修改和扩展这个示例。

请注意,以上代码基于 MySQL 8.0 运行,不同的 MySQL 版本在某些语法和数据类型的使用上可能会略有不同。在实际使用中 使用的 MySQL 版本进行相应的调整。 同时,在使用 INSERT
语句插入二进制数据时,使用了十六进制表示,根据实际情况使用相应的二进制数据。在使用 ENUMSET
类型时,插入的值必须是定义的枚举或集合元素之一,否则会报错。 另外,TIMESTAMP 会自动更新为当前时间,在不同的情况下可能会根据
MySQL 的配置有所不同。

相关推荐
汪子熙3 小时前
HSQLDB 数据库锁获取失败深度解析
数据库·后端
VvUppppp3 小时前
MYSQL进阶
mysql
无色海5 小时前
mysql连接生命周期-连接阶段
数据库
无色海7 小时前
MySQL协议中的TLS实现
数据库
weixin_418007607 小时前
SpringJPA统计数据库表行数及更新频率
数据库
2301_767233228 小时前
怎么优化MySQL中的索引
数据库·mysql
无色海8 小时前
MySQL 压缩数据包详解
数据库
海尔辛8 小时前
防御性安全:数字取证
数据库·安全·数字取证
繢鴻8 小时前
数据库优化实战分享
数据库
Cachel wood9 小时前
后端开发:计算机网络、数据库常识
android·大数据·数据库·数据仓库·sql·计算机网络·mysql