一文搞懂 SQL 数据类型:详解与实战举例,让你轻松上手!
创作时间:
作者:
@小白创作中心
一文搞懂 SQL 数据类型:详解与实战举例,让你轻松上手!
引用
CSDN
1.
https://blog.csdn.net/zgt_certificate/article/details/139383494
SQL数据类型是数据库设计的基础,正确选择和使用数据类型可以提高数据库的性能和存储效率。本文将详细介绍SQL中的主要数据类型,并通过具体案例帮助读者掌握这些数据类型的使用方法。
SQL 数据类型及举例
SQL 数据类型根据其存储数据的性质和用途可以分为以下几类:
数值类型 (Numeric Types)
数值类型用于存储整数和浮点数。这些类型确保数据在存储和计算时具有高效性和准确性。
- INT:存储整数。例如,123。
CREATE TABLE example (
id INT,
age INT
);
- DECIMAL 或 NUMERIC:用于存储精确的小数。格式为 DECIMAL(M, D),其中 M 是数字总长度,D 是小数点后的位数。例如,123.45。
CREATE TABLE example (
salary DECIMAL(10, 2)
);
- FLOAT:用于存储浮点数。它们在存储和计算时可能会丢失精度。例如,123.456。
CREATE TABLE example (
temperature FLOAT
);
日期和时间类型 (Date and Time Types)
日期和时间类型用于存储日期、时间或两者的组合。
- DATE:存储日期。格式为 YYYY-MM-DD。例如,2024-06-02。
CREATE TABLE example (
birthdate DATE
);
- TIME:存储时间。格式为 HH:MM:SS。例如,14:30:00。
CREATE TABLE example (
appointment_time TIME
);
- DATETIME:存储日期和时间的组合。格式为 YYYY-MM-DD HH:MM:SS。例如,2024-06-02 14:30:00。
CREATE TABLE example (
created_at DATETIME
);
- TIMESTAMP:存储时间戳,通常用于记录行的创建或更新时间。格式同 DATETIME,但具有自动更新特性。例如,2024-06-02 14:30:00。
CREATE TABLE example (
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
文本字符串类型 (Character String Types)
文本字符串类型用于存储文本数据。长度可以是固定的或可变的。
- CHAR:存储固定长度的字符串。如果存储的字符串长度小于指定长度,剩余部分将用空格填充。例如,'Hello '(长度为 6)。
CREATE TABLE example (
gender CHAR(1)
);
- VARCHAR:存储可变长度的字符串。长度范围在定义时指定,实际存储时仅占用实际字符的空间。例如,'Hello'(长度为 5)。
CREATE TABLE example (
name VARCHAR(50)
);
- TEXT:存储大文本数据。适用于存储长字符串,例如文章、博客内容等。
CREATE TABLE example (
description TEXT
);
二进制字符串类型 (Binary String Types)
二进制字符串类型用于存储二进制数据,例如图像、文件等。
- BINARY:存储固定长度的二进制数据。如果数据不足指定长度,剩余部分将用 0x00 填充。
CREATE TABLE example (
binary_data BINARY(16)
);
- VARBINARY:存储可变长度的二进制数据。长度范围在定义时指定,实际存储时仅占用实际数据的空间。
CREATE TABLE example (
binary_data VARBINARY(256)
);
- BLOB:存储大二进制对象。适用于存储图像、音频、视频等大数据。
CREATE TABLE example (
picture BLOB
);
举例
- 创建包含不同数据类型的表
CREATE TABLE example (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
birthdate DATE,
email VARCHAR(255),
profile_picture BLOB,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
- 插入数据
INSERT INTO example (name, birthdate, email)
VALUES ('John Doe', '1980-05-15', 'john.doe@example.com');
- 查询数据
SELECT * FROM example;
这些示例展示了如何在 SQL 中使用各种数据类型来创建表、插入数据和查询数据。选择适当的数据类型可以提高数据库的性能和存储效率。
案例1
create table orders (
id int primary key auto_increment,
item_id int,
amount int,
unit_price decimal(12, 4),
price decimal(12, 4),
ts timestamp default current_timestamp
);
create table orders
这部分语句表示创建一个名为 orders 的表。id int primary key auto_increment
- id:列名
- int:数据类型,表示 id 列是整数类型。
- primary key:定义 id 列为主键。主键在表中必须唯一,并且不能为 NULL。
- auto_increment:表示 id 列的值会自动递增,每插入一行记录,id 值会自动加 1。这确保一个唯一的标识符。
- item_id int
- item_id:列名。
- int:数据类型,表示 item_id 列是整数类型。
- amount int
- amount:列名。
- int:数据类型,表示 amount 列是整数类型。
- unit_price decimal(12, 4)
- unit_price:列名。
- decimal(12, 4):数据类型,表示 unit_price 列是一个具有 12 位数字和 4 位小数的十进制数。这确保有很高的精度。
- price decimal(12, 4)
- price:列名。
- decimal(12, 4):数据类型,表示 price 列是一个具有 12 位数字和 4 位小数的十进制数。
- ts timestamp default current_timestamp
- ts:列名。
- timestamp:数据类型,表示 ts 列是一个时间戳类型。时间戳用于存储日期和时间。
- default current_timestamp:表示 ts 列的默认值为当前时间。每次插入新记录时,如果没有显式提供 ts 值,数据库将自动使用当前时间作为 ts 列的值。
详细解释
create table orders 语句
create table orders (
id int primary key auto_increment,
item_id int,
amount int,
unit_price decimal(12, 4),
price decimal(12, 4),
ts timestamp default now()
);
案例2
create table orders (
id int primary key auto_increment,
item_id int,
amount int,
unit_price decimal(12, 4),
price decimal(12, 4),
description varchar(2000),
picture blob,
ts timestamp default now()
);
解释:
- id int primary key auto_increment:
- id 列是整数类型,作为主键,并且是自增的。
- item_id int:
- item_id 列是整数类型,用于唯一标识符。
- amount int:
- amount 列是整数类型。
- unit_price decimal(12, 4):
- unit_price 列是具有 12 位数字和 4 位小数的十进制数。
- price decimal(12, 4):
- price 列是具有 12 位数字和 4 位小数的十进制数。
- description varchar(2000):
- description 列是可变长度的字符串类型,最大长度为 2000 字节。
- picture blob:
- picture 列是 BLOB 类型,用于存储图片等。BLOB 类型是二进制大对象,可以存储二进制数据如图像文件等。标准的 BLOB 类型可以存储最大 64KB 的数据,如果图片大小不超过 100KB,可以使用 MEDIUMBLOB 类型。
- ts timestamp default now():
- ts 列是时间戳类型,默认值为当前时间。每次插入新记录时,ts 列会自动记录插入时间。
热门推荐
出口泰国关税高吗?全面解析税率、政策与策略
枇杷树的种植和管理和施肥
什么是拉力赛?一场速度与智慧的较量
走进云萝植物园 探索植物奥秘
港口吹来智慧“风”! 我国自动化码头规模世界第一
老人肚子大是什么原因引起的
洞察力与决策:如何在复杂环境中快速识别关键因素
懒人适合养的宠物介绍
【Q10功效有哪些】辅酶Q10是什么?认识医生专业认证净白成分「Q10」
手机电量快速消耗怎么办?15个实用方法帮你省电
步兵炮的对决:日军92式步兵炮与美军M3型105毫米榴弹炮的较量
20个实用的UI设计技巧,让产品既美观又易用
鞑靼斯坦共和国,和蒙古族是同宗同源吗?
OK 镜、离焦镜、阿托品……近视防控方法多,究竟应该怎么选?
小米车保费堪比50万油车上热搜!是土豪任性还是新能源车险价格飙升?
建筑结构体系类型有哪些?常见的9种建筑结构体系介绍
刷墙买什么漆好,居家装修选漆指南
墙面漆有几种,如何选择适合自己家的墙面漆
青椒炒牛肉,绝了!
个人项目如何管理代码
唐高宗李治与武则天:权谋之下的父子情深
徐则臣:传统文学报刊的“生死”之路 | 2024文学关键词
曹操最出名的三句诗:悲凉与豪情并存
电脑网络不稳定?四种实用方法帮你轻松应对
禅茶一味传千年:杭州径山寺的前世今生
推荐4款汉方护眼茶:善用“明目四君子”,改善疲劳酸涩顾眼睛!
数据结构——栈和队列 02(杨辉三角队列解法)
精选72个女生网名:简单干净又寓意美好
了解LED显示屏大屏幕,带你走进它的历史!
早期物理治疗可加速亚急性轻度创伤性脑损伤患者的康复