当前位置: 首页 > article >正文

【MySQL】入门篇—基本数据类型:数字类型、字符串类型、日期时间类型

在关系数据库中,数据类型是指数据库表中每个字段所能存储的数据的种类。

选择合适的数据类型对于确保数据的完整性、优化存储和提高查询性能至关重要。

不同类型的数据在存储、处理和计算时有不同的表现和要求。

应用场景

  • 用户管理系统:在用户表中,用户的年龄可以使用整数类型存储,而邮箱则使用字符串类型。

  • 电商平台:订单表中,订单日期使用日期时间类型,而订单金额使用数字类型。

  • 日志系统:记录事件的时间戳通常使用日期时间类型,而事件的描述则使用字符串类型。

接下来,我们将详细介绍数据库中常用的三种数据类型:数字类型、字符串类型和日期时间类型,并通过具体示例进行解释。

1. 数字类型

数字类型用于存储数值数据,可以进行数学运算。常见的数字类型包括:

  • INT:用于存储整数。

  • FLOAT:用于存储浮点数(带小数的数值)。

  • DECIMAL:用于存储精确的定点数,通常用于财务计算。

1.1 整数类型(INT)

示例:创建用户表

-- 创建一个用户表,其中包含用户ID(整数类型)
CREATE TABLE users (
    user_id INT PRIMARY KEY,  -- 用户ID,整数类型,主键
    username VARCHAR(50)      -- 用户名,字符串类型
);

解释

  • user_id INT PRIMARY KEY:定义了一个名为user_id的字段,数据类型为整数(INT),并将其设为主键。主键要求唯一且不为空。

1.2 浮点数类型(FLOAT)

示例:创建产品表

-- 创建一个产品表,其中包含产品价格(浮点数类型)
CREATE TABLE products (
    product_id INT PRIMARY KEY,  -- 产品ID,整数类型
    product_name VARCHAR(100),    -- 产品名称,字符串类型
    price FLOAT                   -- 产品价格,浮点数类型
);

解释

  • price FLOAT:定义了一个名为price的字段,数据类型为浮点数(FLOAT)。适用于需要存储带小数的价格信息。

1.3 定点数类型(DECIMAL)

示例:创建订单表

-- 创建一个订单表,其中包含订单金额(定点数类型)
CREATE TABLE orders (
    order_id INT PRIMARY KEY,     -- 订单ID,整数类型
    user_id INT,                  -- 用户ID,整数类型
    total_amount DECIMAL(10, 2)   -- 订单金额,定点数类型,最多10位数字,其中2位为小数
);

解释

  • total_amount DECIMAL(10, 2):定义了一个名为total_amount的字段,数据类型为定点数(DECIMAL)。(10, 2)表示总共可以存储10位数字,其中2位为小数,适用于需要精确计算的金额。

2. 字符串类型

字符串类型用于存储文本数据。常见的字符串类型包括:

  • CHAR:固定长度的字符串。

  • VARCHAR:可变长度的字符串。

  • TEXT:用于存储大量文本数据。

2.1 固定长度字符串(CHAR)

示例:创建国家表

-- 创建一个国家表,其中包含国家代码(固定长度字符串类型)
CREATE TABLE countries (
    country_code CHAR(3) PRIMARY KEY,  -- 国家代码,固定长度3的字符串
    country_name VARCHAR(100)            -- 国家名称,可变长度字符串
);

解释

  • country_code CHAR(3):定义了一个名为country_code的字段,数据类型为固定长度字符串(CHAR),长度为3。适合存储如ISO国家代码等固定长度的字符串。

2.2 可变长度字符串(VARCHAR)

示例:创建用户表

-- 创建一个用户表,其中包含用户邮箱(可变长度字符串类型)
CREATE TABLE users (
    user_id INT PRIMARY KEY,             -- 用户ID,整数类型
    username VARCHAR(50),                -- 用户名,最大长度50的可变字符串
    email VARCHAR(100)                   -- 用户邮箱,最大长度100的可变字符串
);

解释

  • email VARCHAR(100):定义了一个名为email的字段,数据类型为可变长度字符串(VARCHAR),最大长度为100。适合存储用户的电子邮件地址。

2.3 大文本类型(TEXT)

示例:创建文章表

-- 创建一个文章表,其中包含文章内容(大文本类型)
CREATE TABLE articles (
    article_id INT PRIMARY KEY,        -- 文章ID,整数类型
    title VARCHAR(255),                -- 文章标题,最大长度255的可变字符串
    content TEXT                       -- 文章内容,大文本类型
);

解释

  • content TEXT:定义了一个名为content的字段,数据类型为大文本(TEXT)。适合存储大量的文本内容,如文章正文。

3. 日期时间类型

日期时间类型用于存储日期和时间信息。常见的日期时间类型包括:

  • DATE:用于存储日期(年、月、日)。

  • TIME:用于存储时间(时、分、秒)。

  • DATETIME:用于存储日期和时间的组合。

  • TIMESTAMP:用于存储时间戳,通常用于记录事件发生的时间。

3.1 日期类型(DATE)

示例:创建活动表

-- 创建一个活动表,其中包含活动日期(日期类型)
CREATE TABLE events (
    event_id INT PRIMARY KEY,        -- 活动ID,整数类型
    event_name VARCHAR(100),         -- 活动名称,最大长度100的可变字符串
    event_date DATE                  -- 活动日期,日期类型
);

解释

  • event_date DATE:定义了一个名为event_date的字段,数据类型为日期(DATE)。适合存储活动的日期信息。

3.2 日期时间类型(DATETIME)

示例:创建日志表

-- 创建一个日志表,其中包含日志时间(日期时间类型)
CREATE TABLE logs (
    log_id INT PRIMARY KEY,           -- 日志ID,整数类型
    log_message VARCHAR(255),         -- 日志信息,最大长度255的可变字符串
    log_time DATETIME                 -- 日志时间,日期时间类型
);

解释

  • log_time DATETIME:定义了一个名为log_time的字段,数据类型为日期时间(DATETIME)。适合存储事件发生的具体日期和时间。

3.3 时间戳类型(TIMESTAMP)

示例:创建用户表

-- 创建一个用户表,其中包含用户注册时间(时间戳类型)
CREATE TABLE users (
    user_id INT PRIMARY KEY,          -- 用户ID,整数类型
    username VARCHAR(50),             -- 用户名,最大长度50的可变字符串
    registered_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP  -- 用户注册时间,时间戳类型,默认值为当前时间
);

解释

  • registered_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP:定义了一个名为registered_at的字段,数据类型为时间戳(TIMESTAMP),并设置默认值为当前时间。适合记录用户注册的时间。

结论

在关系数据库中,选择合适的数据类型对于数据的存储、处理和性能优化至关重要。

数字类型用于存储数值数据,字符串类型用于存储文本数据,日期时间类型用于存储日期和时间信息。

通过合理设计数据类型,能够确保数据的完整性和准确性,同时提高数据库的查询效率。


http://www.kler.cn/news/357273.html

相关文章:

  • WPF 笔迹算法 从点集转笔迹轮廓
  • Elasticsearch学习笔记(七)安装并配置Metricbeat
  • 嘉立创EDA个人学习笔记2(绘制51单片机核心板)
  • WSL2系统下mamba-yolo模型的深度学习环境搭建
  • 有口才的从业者一定是位人才
  • Android 11.0 系统默认蓝牙打开状态栏显示蓝牙图标功能实现
  • ★ C++进阶篇 ★ 红黑树实现
  • 机器学习的优缺点
  • 2024产品管理新风向:项目管理软件不懂敏捷开发?
  • 【mod分享】波斯王子遗忘之沙高清重置,纹理,字体,贴图全部重置,特效增强,支持光追
  • 三、MyBatis实践(3):多表映射,动态语句,高级扩展
  • Hadoop生态圈三大组件:HDFS的读写流程、MapReduce计算流程、Yarn资源调度
  • Cesium 实战 - 自定义纹理材质 - 立体墙(旋转材质)
  • 如何利用kafka实现高效数据同步?
  • SpringBoot项目启动报错:命令行太长解决
  • Java中的集合(1)——List、Map和Set
  • CSS3 动画相关属性实例大全(三)(columns、filter、flex、flex-basis 、flex-grow、flex-shrink属性)
  • Docker本地镜像发布到阿里云镜像服务的简易指南
  • 力扣题51~55
  • 《使用Gin框架构建分布式应用》阅读笔记:p52-p76