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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: 数据库基础入门 — 数据类型

在日常开发中

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

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

定点数关键字 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 数值。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
11月前
|
Java 数据库连接 测试技术
SpringBoot入门 - 添加内存数据库H2
SpringBoot入门 - 添加内存数据库H2
657 3
SpringBoot入门 - 添加内存数据库H2
|
11月前
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
219 4
SpringBoot入门(4) - 添加内存数据库H2
|
存储 SQL 分布式数据库
OceanBase 入门:分布式数据库的基础概念
【8月更文第31天】在当今的大数据时代,随着业务规模的不断扩大,传统的单机数据库已经难以满足高并发、大数据量的应用需求。分布式数据库应运而生,成为解决这一问题的有效方案之一。本文将介绍一款由阿里巴巴集团自主研发的分布式数据库——OceanBase,并通过一些基础概念和实际代码示例来帮助读者理解其工作原理。
1100 0
|
12月前
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
137 2
SpringBoot入门(4) - 添加内存数据库H2
|
11月前
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
143 13
|
11月前
|
Java 数据库连接 测试技术
SpringBoot入门(4) - 添加内存数据库H2
SpringBoot入门(4) - 添加内存数据库H2
183 4
|
12月前
|
存储 人工智能 Java
Neo4j从入门到精通:打造高效知识图谱数据库 | AI应用开发
在大数据和人工智能时代,知识图谱作为一种高效的数据表示和查询方式,逐渐受到广泛关注。本文从入门到精通,详细介绍知识图谱及其存储工具Neo4j,涵盖知识图谱的介绍、Neo4j的特点、安装步骤、使用方法(创建、查询)及Cypher查询语言的详细讲解。通过本文,读者将全面了解如何利用Neo4j处理复杂关系数据。【10月更文挑战第14天】
1336 6
|
SQL 存储 NoSQL
Redis6入门到实战------ 一、NoSQL数据库简介
这篇文章是关于NoSQL数据库的简介,讨论了技术发展、NoSQL数据库的概念、适用场景、不适用场景,以及常见的非关系型数据库。文章还提到了Web1.0到Web2.0时代的技术演进,以及解决CPU、内存和IO压力的方法,并对比了行式存储和列式存储数据库的特点。
Redis6入门到实战------ 一、NoSQL数据库简介
|
12月前
|
关系型数据库 MySQL 数据库
MySQL数据库基础(数据库操作,常用数据类型,表的操作)
MySQL数据库基础(数据库操作,常用数据类型,表的操作)
135 5
|
12月前
|
SQL 存储 数据管理
SQL数据库的使用指南:从入门到精通
随着信息技术的飞速发展,数据库已成为各类企业和组织不可或缺的一部分。作为最流行的数据库管理系统之一,SQL数据库广泛应用于各种场景,如数据存储、数据管理、数据分析等。本文将详细介绍SQL数据库的使用方法,帮助初学者快速入门,并帮助有经验的开发者深化理解。一、SQL数据库基础首先,我们需要理解SQL数
548 2

热门文章

最新文章