MySQL(50)如何使用UNSIGNED屬性?

在 MySQL 中,UNSIGNED 屬性用于數值數據類型(如 TINYINTSMALLINTMEDIUMINTINTBIGINT),表示該列只能存儲非負整數。使用 UNSIGNED 屬性可以有效地擴展列的正整數范圍,因為它不需要為負數保留空間。

1. 定義與用途

  • 定義UNSIGNED 屬性用于指定數值列只能存儲非負整數。
  • 用途:用于只需要存儲正數的場景,如計數器、ID、庫存數量等。

2. 范圍

不同數據類型的 UNSIGNED 和未使用 UNSIGNED 時的取值范圍如下:

  • TINYINT
    • 有符號(默認):-128 到 127
    • 無符號:0 到 255
  • SMALLINT
    • 有符號(默認):-32,768 到 32,767
    • 無符號:0 到 65,535
  • MEDIUMINT
    • 有符號(默認):-8,388,608 到 8,388,607
    • 無符號:0 到 16,777,215
  • INT
    • 有符號(默認):-2,147,483,648 到 2,147,483,647
    • 無符號:0 到 4,294,967,295
  • BIGINT
    • 有符號(默認):-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
    • 無符號:0 到 18,446,744,073,709,551,615

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 屬性只允許非負數,試圖插入負數會導致錯誤。
  • 自動遞增:對于自動遞增(AUTO_INCREMENT)的列,使用 UNSIGNED 屬性可以有效地擴展 ID 的正整數范圍。
  • 兼容性:確保業務邏輯不需要存儲負數,否則使用 UNSIGNED 會導致數據插入失敗。

小結

  • UNSIGNED 屬性:用于指定數值列只能存儲非負整數,適用于計數器、ID、庫存數量等場景。
  • 擴展正整數范圍:使用 UNSIGNED 可以有效地擴展列的正整數范圍。
  • 實際應用:通過指定 UNSIGNED 屬性,可以確保數據的正整數范圍符合業務需求,提高數據完整性和一致性。

通過理解 UNSIGNED 屬性的用途和特點,可以更好地設計和優化數據庫表,確保數據插入操作符合業務需求。上述示例展示了如何在實際應用中使用 UNSIGNED 屬性設計數據庫表,并插入和檢索數據。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/83417.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/83417.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/83417.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

什么是鏈游,鏈游系統開發價格以及方案

2025 Web3錢包開發指南:從多版本源碼到安全架構實戰 在數字資產爆發式增長的今天,Web3錢包已成為用戶進入鏈上世界的核心入口。作為開發者,如何高效構建安全、跨鏈、可擴展的錢包系統?本文結合前沿技術方案與開源實踐&#xff0c…

文件IO流

IO使用函數 標準IO文件IO(低級IO)打開fopen, freopen, fdopenopen關閉fcloseclose讀getc, fgetc, getchar, fgets, gets, fread printf fprintfread寫putc, fputc, putchar, fputs, puts, fwrite scanf fscanfwrite操作文件指針fseeklseek其它fflush rewind ftell 文件描述符 …

云原生DMZ架構實戰:基于AWS CloudFormation的安全隔離區設計

在云時代,傳統的DMZ(隔離區)概念已經演變為更加靈活和動態的架構。本文通過解析一個實際的AWS CloudFormation模板,展示如何在云原生環境中構建現代化的DMZ安全架構。 1. 云原生DMZ的核心理念 傳統DMZ是網絡中的"緩沖區",位于企業內網和外部網絡之間。而在云環境…

一、虛擬貨幣概述

1. 定義 - 虛擬貨幣是一種基于網絡技術、加密技術和共識機制的數字貨幣,它不依賴傳統金融機構發行,而是通過計算機算法生成,例如比特幣、以太坊等。 2. 特點 - 去中心化:沒有一個單一的機構或個人控制整個虛擬貨幣系統&#xff0c…

Make All Equal

給定一個循環數組 a1,a2,…,ana1?,a2?,…,an?。 你可以對 aa 至多執行 n?1n?1 次以下操作: 設 mm 為 aa 的當前大小,你可以選擇任何兩個相鄰的元素,其中前一個不大于后一個(特別地,amam? 和 a1a1? 是相鄰的&a…

任務中心示例及瀏覽器強制高效下載實踐

1. 效果展示 這里的進度展示,可以通過我們之前講到的Vue3實現類ChatGPT聊天式流式輸出(vue-sse實現) SSE技術實現,比如用戶點擊全量下載時,后臺需要將PDF文件打包為ZIP文件,由于量較大,需要展示進度,用戶點…

SpringBoot整合Flowable【08】- 前后端如何交互

引子 在第02篇中,我通過 Flowable-UI 繪制了一個簡單的績效流程,并在后續章節中基于這個流程演示了 Flowable 的各種API調用。然而,在實際業務場景中,如果要求前端將用戶繪制的流程文件發送給后端再進行解析處理,這種…

2025 Java面試大全技術文章大綱

2025 Java面試大全技術文章大綱 基礎篇 Java核心語法 數據類型與包裝類自動裝箱與拆箱原理String、StringBuffer、StringBuilder區別final關鍵字作用場景 面向對象特性 多態的實現機制抽象類與接口的異同設計模式:單例的七種寫法泛型擦除與橋接方法 進階篇 J…

Python aiohttp 全面指南:異步HTTP客戶端/服務器框架

邊寫代碼零食不停口 盼盼麥香雞味塊 、卡樂比(Calbee)薯條三兄弟 獨立小包、好時kisses多口味巧克力糖、老金磨方【黑金系列】黑芝麻丸 邊寫代碼邊貼面膜 事業美麗兩不誤 DR. YS 野森博士【AOUFSE/澳芙雪特證】377專研美白淡斑面膜組合 優惠劵 別光顧寫…

歸并排序:高效穩定的分治算法

歸并排序 歸并排序采用分治策略實現穩定排序&#xff0c;其核心思想是將序列遞歸分解后進行有序合并。 def merge_sort(arr):if len(arr) < 1:return arrmid len(arr) // 2left merge_sort(arr[:mid])right merge_sort(arr[mid:])result []i j 0while i < len(le…

go語言基礎|slice入門

slice slice介紹 slice中文叫切片&#xff0c;是go官方提供的一個可變數組&#xff0c;是一個輕量級的數據結構&#xff0c;功能上和c的vector&#xff0c;Java的ArrayList差不多。 slice和數組是有一些區別的&#xff0c;是為了彌補數組的一些不足而誕生的數據結構。最大的…

網絡攻防技術九:網絡監聽技術

文章目錄 一、網絡監聽概述二、網絡流量劫持三、數據采集與解析四、網絡監聽檢測與防范1、檢測實施監聽主機2、防范網絡通信被監聽 一、網絡監聽概述 主要解決問題&#xff1a;網絡流量劫持、在監聽點上采集并分析網絡數據。主要涉及網卡數據采集、協議分析技術。 二、網絡流量…

Cat.1與Cat.4區別及應用場景

Cat.1 和 Cat.4 都是 LTE&#xff08;4G&#xff09;網絡中的終端設備類別&#xff0c;主要區別在于 數據傳輸速率、復雜度和功耗&#xff0c;這直接影響了它們的應用場景和成本。 以下是它們的主要區別&#xff1a; 數據傳輸速率 (核心區別)&#xff1a; Cat.1 (Category 1)&…

【后端高階面經:架構篇】51、搜索引擎架構與排序算法:面試關鍵知識點全解析

一、搜索引擎核心基石&#xff1a;倒排索引技術深度解析 &#xff08;一&#xff09;倒排索引的本質與構建流程 倒排索引&#xff08;Inverted Index&#xff09;是搜索引擎實現快速檢索的核心數據結構&#xff0c;與傳統數據庫的正向索引&#xff08;文檔→關鍵詞&#xff0…

深度學習入門:從零搭建你的第一個神經網絡

深度學習入門&#xff1a;從零搭建你的第一個神經網絡 系統化學習人工智能網站&#xff08;收藏&#xff09;&#xff1a;https://www.captainbed.cn/flu 文章目錄 深度學習入門&#xff1a;從零搭建你的第一個神經網絡摘要引言第一章&#xff1a;神經網絡基礎原理1.1 神經元…

Hadoop 3.x 偽分布式 8088端口無法訪問問題處理

【Hadoop】YARN ResourceManager 啟動后 8088 端口無法訪問問題排查與解決(偽分布式啟動Hadoop) 在配置和啟動 Hadoop YARN 模塊時&#xff0c;發現雖然 ResourceManager 正常啟動&#xff0c;JPS 進程中也顯示無誤&#xff0c;但通過瀏覽器訪問 http://主機IP:8088 時卻無法打…

docker B站學習

鏡像是一個只讀的模板&#xff0c;用來創建容器 容器是docker的運行實例&#xff0c;提供了獨立可移植的環境 https://www.bilibili.com/video/BV11L411g7U1?spm_id_from333.788.videopod.episodes&vd_sourcee60c804914459274157197c4388a4d2f&p3 目錄掛載 尚硅谷doc…

鴻蒙OSUniApp微服務架構實踐:從設計到鴻蒙部署#三方框架 #Uniapp

UniApp微服務架構實踐&#xff1a;從設計到鴻蒙部署 引言 在最近的一個大型跨平臺項目中&#xff0c;我們面臨著一個有趣的挑戰&#xff1a;如何在UniApp框架下構建一個可擴展的微服務架構&#xff0c;并確保其在包括鴻蒙在內的多個操作系統上流暢運行。本文將分享我們的實踐…

Freemarker快速入門

Freemarker概述 FreeMarker 是一款 模板引擎&#xff1a; 即一種基于模板和要改變的數據&#xff0c; 并用來生成輸出文本(HTML網頁&#xff0c;電子郵件&#xff0c;配置文件&#xff0c;源代碼等)的通用工具。 它不是面向最終用戶的&#xff0c;而是一個Java類庫&#xff0c…

操作系統:生態思政

操作系統&#xff1a;生態思政 操作系統&#xff08;OS&#xff09;作為數字世界的基石&#xff0c;其意義遠超單純的技術平臺。它構建了一個包含開發者、用戶、硬件廠商在內的復雜生態系統&#xff0c;其設計理念、運行規則與生態治理模式&#xff0c;無不深刻映射著特定的價…