数据库基础入门 — 数据类型

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 数据库基础入门 — 数据类型

在日常开发中

推荐浮点数和定点数,优先使用定点数

原因:定点数比浮点数精确

定点数关键字 DECIMAL

有关日期与时间类型

推荐使用 4位数字

drop TABLE test_year
show TABLES
CREATE TABLE if not exists test_year(
y1 YEAR,
y2 YEAR(4)
);
insert into test_year (y1,y2)
values (1999,2050)
SELECT * FROM test_year
-- 不需要指定(数字),默认为4
CREATE TABLE test_year2(
y1 year
)
insert into test_year2 values (2099)
SELECT * FROM test_year2

DATE类型  格式为 YYYY-MM-DD

使用 CURRENT_DATE() 或者 NOW() 函数,会插入当前系统的日期。

INSERT INTO test_date1
VALUES (CURRENT_DATE()), (NOW());

开发时,时间类型选择

推荐使用 DATETIME

此外,一般存注册时间、商品发布时间等,不建议使用DATETIME存储,而是使用 时间戳 ,因为

DATETIME虽然直观,但不便于计算。

DATETIME 插入数据格式 YYYY-MM-DD HH:MM:SS

或者使用函数 CURRENT_TIMESTAMP() 和 NOW() ,可以向DATETIME类型的字段插入系统的当前日期和时间。

文本字符串

CHAR(M) 类型一般需要预先定义字符串长度。如果不指定(M),则表示长度默认是1个字符。

varchar必须指明指定长度,即varchar()括号中必须添加数字,不然会报错。

枚举类型

关键字 ENUM , SET

ENUM 只能插入一个在创建表时,存在的文本内容

SET 可以多个

二进制类型

关键字 BINARY、VARBINARY、BLOB(二进制大对象,可以容纳可变数量的数据。如图片 、 音频 和 视频)

BLOB 可以存图片等,但是在开发时,一般不选择在数据库中存取,通常会将图片、音频和视频文件存储到 服务器的磁盘上 ,并将图片、音频和视频的访问路径存储到MySQL中

JSON字符串类型

INSERT INTO test_json (js)
VALUES ('{"name":"songhk", "age":18, "address":{"province":"beijing",
"city":"beijing"}}');
-- 通过“->”和“->>”符号,从JSON字段中正确查询出了指定的JSON数据的值。
SELECT js -> '$.name' AS NAME,js -> '$.age' AS age ,js -> '$.address.province'
AS province, js -> '$.address.city' AS city
-> FROM test_json;

开发时,每个数据类型选择规范
在定义数据类型时,如果确定是 整数 ,就用 INT ; 如果是 小数 ,一定用定点数类型 DECIMAL(M,D) ; 如果是日期与时间,就用 DATETIME 。  
(M,D)分别代表含义,M: 为规定数据长度,D: 为规定数据长度,小数部分所占规定长度的长度
任何字段如果为非负数,必须是 UNSIGNED
【 强制 】小数类型为 DECIMAL,禁止使用 FLOAT 和 DOUBLE。
说明:在存储的时候,FLOAT 和 DOUBLE 都存在精度损失的问题,很可能在比较值的时候,得 到不正确的结果。如果存储的数据范围超过 DECIMAL 的范围,建议将数据拆成整数和小数并 分开存储。
【 强制 】如果存储的字符串长度几乎相等,使用 CHAR 定长字符串类型。
【 强制 】VARCHAR 是可变长字符串,不预先分配存储空间,长度不要超过 5000。如果存储长度大 于此值,定义字段类型为 TEXT,独立出来一张表,用主键来对应,避免影响其它字段索引效率。  

如何使用unsigned

/*
"Unsigned" 是英文中的一个词汇,表示“无符号”的意思。
在MySQL中,`UNSIGNED` 是一个关键字,用于定义无符号整数数据类型。
在MySQL中,`UNSIGNED` 可以翻译为 "无符号" 或 "非负",表示这个数据类型只能存储非负整数,
不包括负数。这个关键字的主要作用是限制某个整数列的取值范围,使其只能存储正整数或零,而不包含负数。
*/
--由于unsigned 的意思为无符号的意思,所以在数据库中,用于整数类型 、浮点类型以及定点数类型decimal
CREATE TABLE products (
    product_id INT UNSIGNED NOT NULL,
    product_name VARCHAR(50) NOT NULL,
    price DECIMAL(10, 2) UNSIGNED NOT NULL,
    stock_quantity INT UNSIGNED NOT NULL
);

"Decimal" 是英文中的一个词汇,表示“十进制”的意思。在计算机科学和数据库中,"Decimal" 通常用来指代十进制数值或数据类型。十进制是我们日常生活中最常用的数字系统,它包含数字 0 到 9,使用十个不同的数字来表示数值。在数据库中,"Decimal" 数据类型通常用于存储精确的小数值,以便在计算或金融领域中保持精确度。

"Decimal" 数据类型在数据库中通常指的是定点数(fixed-point numbers)或精确数值,与浮点数(floating-point numbers)不同,浮点数具有固定的小数点位置,通常用于需要精确度的情况,如货币计算。Decimal 数据类型的存储方式不会引入精度误差,因此在财务、税务、科学等领域经常使用。

在数据库系统如MySQL、SQL Server、Oracle等中,"Decimal" 数据类型通常用不同的名称,如 "DECIMAL"、"NUMERIC" 等,用于声明和存储精确小数值。DECIMAL 数据类型通常需要指定两个参数,一个是精度(precision),表示总的有效位数,另一个是标度(scale),表示小数点后的位数。例如,DECIMAL(10, 2) 表示一个精度为 10 位,小数点后有 2 位的 Decimal 数值。

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
Java 数据库连接 测试技术
SpringBoot入门 - 添加内存数据库H2
SpringBoot入门 - 添加内存数据库H2
100 3
SpringBoot入门 - 添加内存数据库H2
|
2月前
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
58 4
SpringBoot入门(4) - 添加内存数据库H2
|
5月前
|
存储 SQL 分布式数据库
OceanBase 入门:分布式数据库的基础概念
【8月更文第31天】在当今的大数据时代,随着业务规模的不断扩大,传统的单机数据库已经难以满足高并发、大数据量的应用需求。分布式数据库应运而生,成为解决这一问题的有效方案之一。本文将介绍一款由阿里巴巴集团自主研发的分布式数据库——OceanBase,并通过一些基础概念和实际代码示例来帮助读者理解其工作原理。
476 0
|
3月前
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
42 2
SpringBoot入门(4) - 添加内存数据库H2
|
2月前
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
75 13
|
2月前
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
62 4
|
3月前
|
存储 人工智能 Java
Neo4j从入门到精通:打造高效知识图谱数据库 | AI应用开发
在大数据和人工智能时代,知识图谱作为一种高效的数据表示和查询方式,逐渐受到广泛关注。本文从入门到精通,详细介绍知识图谱及其存储工具Neo4j,涵盖知识图谱的介绍、Neo4j的特点、安装步骤、使用方法(创建、查询)及Cypher查询语言的详细讲解。通过本文,读者将全面了解如何利用Neo4j处理复杂关系数据。【10月更文挑战第14天】
242 6
|
3月前
|
关系型数据库 MySQL 数据库
MySQL数据库基础(数据库操作,常用数据类型,表的操作)
MySQL数据库基础(数据库操作,常用数据类型,表的操作)
48 5
|
3月前
|
SQL 存储 数据管理
SQL数据库的使用指南:从入门到精通
随着信息技术的飞速发展,数据库已成为各类企业和组织不可或缺的一部分。作为最流行的数据库管理系统之一,SQL数据库广泛应用于各种场景,如数据存储、数据管理、数据分析等。本文将详细介绍SQL数据库的使用方法,帮助初学者快速入门,并帮助有经验的开发者深化理解。一、SQL数据库基础首先,我们需要理解SQL数
176 2
|
3月前
|
SQL 数据库
SQL数据库基础语法入门
[link](http://www.vvo.net.cn/post/082935.html)