翻譯|使用教程|編輯:秦林|2022-10-14 14:27:15.563|閱讀 394 次
概述:本文帶大家一起探討如何在數(shù)據(jù)庫中使用枚舉值,包括如何存儲、驗證、插入和檢索它們。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
在信息技術(shù)領域,俗稱 IT 領域,枚舉(ENUM)是一種特殊的數(shù)據(jù)類型,它封裝了一組預定義的常量。因此,變量可能只保存枚舉的其中一個預定義的值。常見的示例包括指南針方向(東、南、西、北)或星期幾。
在數(shù)據(jù)庫表中存儲枚舉有些復雜因素,其中之一是它們的值可能是數(shù)字或字母(即字符串)。而且,你可能希望阻止用戶在表中添加任何不屬于枚舉集的允許值。我們將在今天的文章中解決這兩個問題。
最基本的枚舉包含一組從零開始的號值,每個值由一個常量表示,以下是 Java 的例子:
public enum Day { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }
更復雜的枚舉可能包含其他類型;字符串是最常見的類型,但也支持更復雜的對象。以下是一個用于表示不同環(huán)境 URL 的枚舉(也是 Java):
public enum Environment { PROD("http://prod.domain.com:1088/"), SIT("http://sit.domain.com:2019/"), CIT("http://cit.domain.com:8080/"), DEV("http://dev.domain.com:21323/"); private String url; Environment(String envUrl) { this.url = envUrl; } public String getUrl() { return url; } }
通常,將枚舉存儲為數(shù)字序數(shù)值被認為是不好的做法,因為這會使調(diào)試和支持變得困難。而存儲轉(zhuǎn)換為字符串的實際枚舉值通常更可取。為了說明這一點,假設我們有一個紙牌的枚舉:
public enum Suit { Spade, Heart, Diamond, Club }
現(xiàn)在假設你是一名數(shù)據(jù)庫從業(yè)人員,正在試圖解讀以下兩個查詢結(jié)果:
Name Suit ------------ ---- John Smith 2 Ian Boyd 1 Name Suit ------------ ------- John Smith Diamond Ian Boyd Heart
我認為你會同意后者更容易解釋,因為第一個查詢結(jié)果需要有源代碼并找到分配給每個枚舉成員的數(shù)值。
盡管存儲字符串需要更多的磁盤空間,但枚舉成員名稱往往很短,而且硬盤價格很便宜,因此值得權(quán)衡取舍,讓你的日常工作更輕松。
使用數(shù)值的另一個問題是它們難以更新。如果不強制使用舊數(shù)值,你無法輕松插入或重新排列成員。例如,將 Unknown值添加到 Suit 枚舉將需要將其更新為:
public enum Suit { Unknown = 4, Heart = 1, Club = 3, Diamond = 2, Spade = 0 }
…以便保留已經(jīng)存儲在數(shù)據(jù)庫中的舊數(shù)值。
現(xiàn)今許多數(shù)據(jù)庫,包括 MySQL 和 SQL Server,都支持 ENUM 數(shù)據(jù)類型。ENUM 值指定為字符串,為了緊湊存儲在存儲時會自動編碼為數(shù)字。
以下是 Navicat for MySQL 中的 MySQL 語句,用于創(chuàng)建表和填充包含襯衫和尺寸數(shù)據(jù),以及獲取中碼襯衫數(shù)據(jù)的 SELECT 查詢:
如果現(xiàn)在嘗試插入一個無效的 ENUM 值,我們會得到以下錯誤:
盡管消息指出該值已被截斷,但實際上并未插入數(shù)據(jù)。
在本文中,我們探討了如何在數(shù)據(jù)庫中使用枚舉值,包括如何存儲、驗證、插入和檢索它們。
有興趣試用Navicat for MySQL嗎?你可以免費使用 14 天!!!
Navicat Premium是一個可連接多種數(shù)據(jù)庫的管理工具,它可以讓你以單一程序同時連接到MySQL、Oracle及PostgreSQL數(shù)據(jù)庫,讓管理不同類型的數(shù)據(jù)庫更加的方便。Navicat Premium產(chǎn)品相關內(nèi)容,歡迎您直接訪問慧都網(wǎng)了解更多詳情。
數(shù)據(jù)庫管理工具交流群:765665608 歡迎進群交流討論
正版數(shù)據(jù)庫管理軟件下載、購買、授權(quán)咨詢,請點這里!
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務必注明出處、不得修改原文相關鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn