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

深入解析:MySQL(50)如何使用UNSIGNED属性?

MySQL 中,UNSIGNED 属性用于数值数据类型(如 TINYINTSMALLINTMEDIUMINTINTBIGINT),表示该列只能存储非负整数。使用 UNSIGNED 属性可以有效地扩展列的正整数范围,因为它不需要为负数保留空间。

1. 定义与用途

2. 范围

不同数据类型的 UNSIGNED 和未使用 UNSIGNED 时的取值范围如下:

3. 示例代码

以下是一些示例代码,展示了如何使用 UNSIGNED 属性创建表,并插入和检索数据。

创建表

创建一个包含 UNSIGNED 属性的表:

CREATE
DATABASE test_unsigned_db;
USE test_unsigned_db;
CREATE
TABLE inventory (
item_id INT
UNSIGNED
AUTO_INCREMENT
PRIMARY
KEY
,
item_name VARCHAR(50
) NOT NULL
,
quantity INT
UNSIGNED
DEFAULT 0 -- 无符号整数,默认值为0
)
;
插入数据

插入一些数据:

-- 插入数据
INSERT
INTO inventory (item_name, quantity)
VALUES
('Laptop'
, 50
)
,
('Smartphone'
, 100
)
,
('Tablet'
, 30
)
;
检索数据

检索数据:

SELECT item_id, item_name, quantity FROM inventory;

检索结果:

+---------+-------------+----------+
| item_id | item_name   | quantity |
+---------+-------------+----------+
|       1 | Laptop      |       50 |
|       2 | Smartphone  |      100 |
|       3 | Tablet      |       30 |
+---------+-------------+----------+
插入负数数据(将失败)

尝试插入负数数据:

-- 尝试插入负数数据,将失败
INSERT
INTO inventory (item_name, quantity)
VALUES
('Camera'
, -10
)
;

执行结果:

ERROR 1264 (22003): Out of range value for column 'quantity' at row 1

4. 更复杂的示例:用户积分系统

以下是一个更复杂的示例,展示了如何在用户积分系统中使用 UNSIGNED 属性。

创建用户积分表
CREATE
TABLE user_points (
user_id INT
UNSIGNED
AUTO_INCREMENT
PRIMARY
KEY
,
username VARCHAR(50
) NOT NULL
,
points BIGINT
UNSIGNED
DEFAULT 0 -- 无符号大整数,默认值为0
)
;
插入用户数据

插入一些用户数据:

-- 插入用户数据
INSERT
INTO user_points (username, points)
VALUES
('john_doe'
, 1000
)
,
('jane_smith'
, 1500
)
,
('alice_jones'
, 2000
)
;
检索用户数据

检索用户数据:

SELECT user_id, username, points FROM user_points;

检索结果:

+---------+-------------+--------+
| user_id | username    | points |
+---------+-------------+--------+
|       1 | john_doe    |   1000 |
|       2 | jane_smith  |   1500 |
|       3 | alice_jones |   2000 |
+---------+-------------+--------+
尝试插入负数积分(将失败)

尝试插入负数积分:

-- 尝试插入负数积分,将失败
INSERT
INTO user_points (username, points)
VALUES
('tom_hanks'
, -500
)
;

执行结果:

ERROR 1264 (22003): Out of range value for column 'points' at row 1

5. 注意事项

小结

通过理解 UNSIGNED 属性的用途和特点,可以更好地设计和优化数据库表,确保数据插入操作符合业务需求。上述示例展示了如何在实际应用中使用 UNSIGNED 属性设计数据库表,并插入和检索数据。

http://www.hskmm.com/?act=detail&tid=25625

相关文章:

  • 迈向人机价值共生文明:AI元人文范式下的演化架构与协同治理
  • 10.6
  • 文件存储空间管理
  • 详细介绍:关于ios点击分享自动复制到粘贴板的问题
  • 新一代数据平台替代传统大数据技术栈
  • 攻击者如何绕过macOS内置安全防护机制
  • 在A列连续且相等行的最后插入空行,并求和
  • 10.6集训改错
  • @Prometheus 监控-MySQL (Mysqld Exporter) - 教程
  • AI元人文:走向人机价值共生的文明新范式
  • 实用指南:【机器学习基础】机器学习入门核心算法:层次聚类算法(AGNES算法和 DIANA算法)
  • CSP-J 第二轮集训 :总结 + 专题细分精讲_from_黄老师
  • ROIR 2024
  • 软件工程第一次随笔 - Nicholas
  • 深入解析:【数据库】关系数据库标准语言-SQL(金仓)下
  • Codeforces Round 1056 (Div. 2) (4/6)
  • 20251006
  • UV使用
  • 动手实验——mybatis generator
  • 学生管理系统面向对象分析报告
  • 荷兰青少年通过Telegram被招募,涉嫌参与俄罗斯支持的黑客活动
  • Moscow International Workshops 2017. Day 4. Lviv NU Contest, GP of Ukraine
  • 小代码使用npm包的方法
  • day18 课程(模块 )
  • Kubernetes(K8s)核心架构解析与实用命令大全 - 教程
  • mzoj 2025/10/6
  • 实验作业1-8 陆绎
  • 全源最短路 Johnson算法
  • 《对象创建的秘密:Java 内存布局、逃逸分析与 TLAB 优化详解》 - 实践
  • go get net/http connections count, using middleware