日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
數(shù)據(jù)庫(kù)中枚舉類(lèi)型詳解(數(shù)據(jù)庫(kù)中枚舉類(lèi)型)

枚舉類(lèi)型是計(jì)算機(jī)編程中經(jīng)常用到的一種數(shù)據(jù)類(lèi)型,它將一組固定的值定義為枚舉元素,可以在程序中進(jìn)行定義、賦值和傳遞。在數(shù)據(jù)庫(kù)中,我們也可以將枚舉類(lèi)型作為字段類(lèi)型,來(lái)約束某個(gè)字段的數(shù)據(jù)范圍,提高數(shù)據(jù)的可靠性和一致性。本文將詳細(xì)介紹數(shù)據(jù)庫(kù)中的枚舉類(lèi)型,包括定義、使用、優(yōu)缺點(diǎn)以及實(shí)例應(yīng)用。

為沅陵等地區(qū)用戶(hù)提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及沅陵網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都做網(wǎng)站、網(wǎng)站制作、沅陵網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專(zhuān)業(yè)、用心的態(tài)度為用戶(hù)提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶(hù)的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

一、枚舉類(lèi)型定義

在數(shù)據(jù)庫(kù)中,我們可以使用 CREATE TYPE 語(yǔ)句來(lái)定義一個(gè)枚舉類(lèi)型,語(yǔ)法如下:

CREATE TYPE enum_name AS ENUM (‘value1’, ‘value2’, …);

其中,enum_name 為枚舉類(lèi)型的名稱(chēng),value1、value2 是枚舉元素的值,用單引號(hào)括起來(lái),并以逗號(hào)分隔。在定義枚舉類(lèi)型時(shí),值之間不能有重復(fù)的。

例如,創(chuàng)建一個(gè)狀態(tài)枚舉類(lèi)型:

CREATE TYPE status_enum AS ENUM (‘ON’, ‘OFF’, ‘UNKNOWN’);

二、枚舉類(lèi)型使用

定義好枚舉類(lèi)型后,我們就可以將其作為某個(gè)表的字段類(lèi)型,如下:

CREATE TABLE sample(

id INT PRIMARY KEY,

name TEXT,

status status_enum NOT NULL

);

在這里,我們將 status_enum 類(lèi)型作為 sample 表中的一個(gè)字段 status 的數(shù)據(jù)類(lèi)型,它的值只能是 ON、OFF 或 UNKNOWN 中的一個(gè)。

三、枚舉類(lèi)型優(yōu)缺點(diǎn)

優(yōu)點(diǎn):

1. 限定數(shù)據(jù)范圍。使用枚舉類(lèi)型可以限制字段的取值范圍,保證數(shù)據(jù)的一致性和有效性。

2. 易于讀寫(xiě)。使用枚舉類(lèi)型可以減少數(shù)據(jù)讀寫(xiě)的復(fù)雜度,使代碼更加簡(jiǎn)潔、易于維護(hù)。

3. 節(jié)省存儲(chǔ)空間。枚舉類(lèi)型的值只占用極少的存儲(chǔ)空間,可以有效地節(jié)省數(shù)據(jù)庫(kù)空間。

缺點(diǎn):

1. 無(wú)法動(dòng)態(tài)修改。因?yàn)槊杜e類(lèi)型是由 CREATE TYPE 定義的,所以一旦定義后,枚舉元素?zé)o法動(dòng)態(tài)添加和修改,只能通過(guò) ALTER TYPE 來(lái)刪除。

2. 可讀性較差。對(duì)于復(fù)雜的枚舉類(lèi)型,如果某個(gè)字段的值并不在已定義枚舉元素中,那么就無(wú)法很好地表示該字段的含義。

四、枚舉類(lèi)型實(shí)例應(yīng)用

下面以一個(gè)簡(jiǎn)單的訂單管理系統(tǒng)為例,說(shuō)明枚舉類(lèi)型的實(shí)際應(yīng)用。

我們定義一個(gè)枚舉類(lèi)型 order_status,表示訂單的狀態(tài):

CREATE TYPE order_status AS ENUM (

‘CREATED’,

‘PAYED’,

‘DELIVERED’,

‘FINISHED’,

‘CANCELED’

);

然后,我們創(chuàng)建一個(gè)表 orders,包含訂單的各項(xiàng)信息:

CREATE TABLE orders(

id SERIAL PRIMARY KEY,

order_no VARCHAR(20) UNIQUE NOT NULL,

user_id INT NOT NULL,

amount DECIMAL(10,2) NOT NULL,

status order_status NOT NULL,

create_time TIMESTAMP WITH TIME ZONE DEFAULT NOW() NOT NULL

);

在這里,我們將 status 字段的數(shù)據(jù)類(lèi)型定義為 order_status 枚舉類(lèi)型,來(lái)限制訂單狀態(tài)的范圍。

接下來(lái),我們可以使用 INSERT INTO 語(yǔ)句來(lái)插入訂單記錄,如下:

INSERT INTO orders(order_no, user_id, amount, status)

VALUES (‘20230101001’, 1, 100.00, ‘CREATED’);

這里將訂單狀態(tài)設(shè)置為 CREATED,符合 order_status 枚舉類(lèi)型的定義。

當(dāng)我們需要查詢(xún)某個(gè)狀態(tài)的訂單時(shí),可以使用 WHERE 子句來(lái)篩選:

SELECT * FROM orders WHERE status=’CREATED’;

也可以使用 GROUP BY 子句來(lái)統(tǒng)計(jì)每個(gè)狀態(tài)的訂單數(shù)量:

SELECT status, COUNT(*) FROM orders GROUP BY status;

通過(guò)枚舉類(lèi)型的使用,我們可以更加方便地管理訂單的狀態(tài),提高系統(tǒng)的可維護(hù)性和易讀性。

枚舉類(lèi)型是一種非常有用的數(shù)據(jù)類(lèi)型,可以幫助我們限制數(shù)據(jù)范圍、提高數(shù)據(jù)一致性和可讀性。在數(shù)據(jù)庫(kù)中,我們可以使用 CREATE TYPE 定義枚舉類(lèi)型,并將其作為表的字段類(lèi)型來(lái)約束數(shù)據(jù)取值。通過(guò)實(shí)際應(yīng)用的例子,我們可以更加深入地理解枚舉類(lèi)型的優(yōu)缺點(diǎn)和使用方法,為數(shù)據(jù)庫(kù)設(shè)計(jì)帶來(lái)更多的便利和可靠性。

成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián),建站經(jīng)驗(yàn)豐富以策略為先導(dǎo)10多年以來(lái)專(zhuān)注數(shù)字化網(wǎng)站建設(shè),提供企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),響應(yīng)式網(wǎng)站制作,設(shè)計(jì)師量身打造品牌風(fēng)格,熱線(xiàn):028-86922220

在數(shù)據(jù)庫(kù)中存枚舉值,用數(shù)字還是字符好?

.做個(gè)字典表 試試。這樣就不怕 忘了。

這個(gè)要看你的

枚舉

, 是 僅僅一次只能選擇一個(gè)的? 還是一次可以選擇多個(gè)的.

例如你的

order_id order_status

SUCS(成功success)

PCES(處理process)

某行拆姿數(shù)據(jù), 要么就是 SUCS(成功success) , 要么就是 PCES(處理process)

這種情況下, 用字畢昌符是比較合適的。

但是如果枚舉是可以選擇多個(gè)的, 例如:

id desc

1 無(wú)黨派

2 知識(shí)分子

4 少數(shù)民族

8 女性

16 ……

這種情況下, 如果一個(gè)人, 多個(gè)枚舉都滿(mǎn)足的情況下, 那么這種情況下, 使用 數(shù)字 是比較適合的。

也就是

如果某個(gè)人,是 無(wú)黨派漢族女性研究生, 那么枚旅數(shù)絕舉值 = 1+2+8

一般在主表上存儲(chǔ)的是枚舉值,另建立一個(gè)值對(duì)應(yīng)說(shuō)明表,查詢(xún)時(shí)關(guān)聯(lián)取出說(shuō)明內(nèi)容

mysql怎么獲取數(shù)據(jù)表字段enum類(lèi)型的默認(rèn)值

enum有優(yōu)點(diǎn)。但個(gè)人覺(jué)得。。。缺點(diǎn)更多,客觀的講:優(yōu)點(diǎn)主要是在建數(shù)據(jù) 庫(kù)的時(shí)候就可以把一些值給規(guī)范好。缺點(diǎn)是。。enum不適合PHP。主要是PHP是弱類(lèi)型,如:你insert into ….. set a= 1,你沒(méi)法知道你是想 a= ‘1’ 還是 a= 1(a=’1’是插入值1,a=1是插入enum的之一個(gè)值,尤其php弱類(lèi)型的,如果int的,很少有人在sql里加雙引號(hào)。),這是PHP和mysql 在使用enum 更大的問(wèn)題。所以。。安心點(diǎn)啦。干脆點(diǎn)直接tinyin

mysql怎么獲取數(shù)據(jù)表字段enum類(lèi)型的默認(rèn)值

本節(jié)主要內(nèi)容:

MySQL數(shù)據(jù)類(lèi)型之枚舉類(lèi)型ENUM

MySQL數(shù)據(jù)庫(kù)提供針對(duì)字符串存儲(chǔ)的一種特殊數(shù)據(jù)類(lèi)型:枚舉類(lèi)型ENUM,這種數(shù)據(jù)類(lèi)型可以給予我們更多提高性能、降低存儲(chǔ)容量和降低程序代碼理解的技巧,前面介紹了首先介紹了四種數(shù)據(jù)類(lèi)型的特性總結(jié),其后又分別介紹了布爾類(lèi)型BOOL或稱(chēng)布爾類(lèi)型BOOLEAN,以及后續(xù)會(huì)再單獨(dú)介紹類(lèi)型SET。

本文詳細(xì)介紹類(lèi)型enum測(cè)試過(guò)程與總結(jié),加深對(duì)mysql數(shù)據(jù)庫(kù)類(lèi)型enum的理解記憶。

n 枚舉類(lèi)型ENUM

a).數(shù)據(jù)庫(kù)表mysqlops_enum結(jié)構(gòu)

執(zhí)行數(shù)據(jù)庫(kù)表mysqlops_enum創(chuàng)建的SQL語(yǔ)句:

復(fù)制代碼代碼示例:

root@localhost : test 11:22:29> CREATE TABLE Mysqlops_enum(ID INT NOT NULL AUTO_INCREMENT,

-> Job_type ENUM(‘DBA’,’SA’,’Coding Engineer’,’JavaScript’,’NA’,’QA’,”,’other’) NOT NULL,

-> Work_City ENUM(‘shanghai’,’beijing’,’hangzhou’,’shenzhen’,’guangzhou’,’other’) NOT NULL DEFAULT ‘shanghai’,

-> PRIMARY KEY(ID)

-> )ENGINE=InnoDB CHARACTER SET ‘utf8’ COLLATE ‘utf8_general_ci’;

Query OK, 0 rows affected (0.00 sec)

執(zhí)行查詢(xún)數(shù)據(jù)庫(kù)表mysqlops_enum結(jié)構(gòu)的SQL語(yǔ)句:

復(fù)制代碼代碼示例:

root@localhost : test 11:23:31> SHOW CREATE TABLE Mysqlops_enum\G

*************************** 1. row ***************************

Table: Mysqlops_enum

Create Table: CREATE TABLE `Mysqlops_enum` (

`ID` int(11) NOT NULL AUTO_INCREMENT,

`Job_type` enum(‘DBA’,’SA’,’Coding Engineer’,’JavaScript’,’NA’,’QA’,”,’other’) NOT NULL,

`Work_City` enum(‘shanghai’,’beijing’,’hangzhou’,’shenzhen’,’guangzhou’,’other’) NOT NULL DEFAULT ‘shanghai’,

PRIMARY KEY (`ID`)

) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8

1 row in set (0.00 sec)

小結(jié):

為方便測(cè)試枚舉類(lèi)型,如何處理字段定義的默認(rèn)值、是否允許為NULL和空值的情況,我們定義了2個(gè)枚舉類(lèi)型的字段名,經(jīng)過(guò)對(duì)比創(chuàng)建與查詢(xún)數(shù)據(jù)庫(kù)中表的結(jié)構(gòu)信息,沒(méi)有發(fā)現(xiàn)MySQL數(shù)據(jù)庫(kù)默認(rèn)修改任何信息。

b). 寫(xiě)入不同類(lèi)型的測(cè)試數(shù)據(jù)

寫(xiě)入一條符合枚舉類(lèi)型定義的記錄值:

復(fù)制代碼代碼示例:

root@localhost : test 11:22:35> INSERT INTO Mysqlops_enum(ID,Job_type,Work_City) VALUES(1,’QA’,’shanghai’);

Query OK, 1 row affected (0.00 sec)

測(cè)試第二個(gè)枚舉類(lèi)型字Work_City是否允許為空記錄值:

復(fù)制代碼代碼示例:

root@localhost : test 11:22:42> INSERT INTO Mysqlops_enum(ID,Job_type,Work_City) VALUES(2,’NA’,”);

Query OK, 1 row affected, 1 warning (0.00 sec)

root@localhost : test 11:22:48> SHOW WARNINGS;

++——+——+

| Level | Code | Message|

++——+——+

| Warning | 1265 | Data truncated for column ‘Work_City’ at row 1 |

++——+——+

1 row in set (0.00 sec)

測(cè)試第二個(gè)枚舉類(lèi)型字段Work_City是否允許存儲(chǔ)NULL值:

復(fù)制代碼代碼示例:

root@localhost : test 11:22:53> INSERT INTO Mysqlops_enum(ID,Job_type,Work_City) VALUES(3,’Other’,NULL);

ERROR 1048 (23000): Column ‘Work_City’ cannot be null

測(cè)試之一個(gè)枚舉類(lèi)型字段Job_type是否可以存儲(chǔ)空白值:

復(fù)制代碼代碼示例:

root@localhost : test 11:22:59> INSERT INTO Mysqlops_enum(ID,Job_type,Work_City) VALUES(4,”,’hangzhou’);

Query OK, 1 row affected (0.00 sec)

測(cè)試第二個(gè)枚舉類(lèi)型字段Job_City如何處理沒(méi)有在定義中描述的值域之一個(gè)枚舉類(lèi)型字段Work_Type的默認(rèn)值沒(méi)指定情況下,會(huì)默認(rèn)填寫(xiě)那個(gè)值:

復(fù)制代碼代碼示例:

root@localhost : test 11:23:06> INSERT INTO Mysqlops_enum(ID,Work_City) VALUES(5,’ningbo’);

Query OK, 1 row affected, 1 warning (0.00 sec)

root@localhost : test 11:23:13> SHOW WARNINGS;

++——+——+

| Level | Code | Message|

++——+——+

| Warning | 1265 | Data truncated for column ‘Work_City’ at row 1 |

++——+——+

1 row in set (0.00 sec)

測(cè)試第二個(gè)枚舉類(lèi)型字段未插入數(shù)據(jù)的情況下,是否能使用上字段定義中指定的默認(rèn)值:

復(fù)制代碼代碼示例:

root@localhost : test 11:23:17> INSERT INTO Mysqlops_enum(ID,Job_type) VALUES(6,’DBA’);

Query OK, 1 row affected (0.00 sec)

根據(jù)用戶(hù)定義的枚舉值與分片節(jié)點(diǎn)映射文件,直接定位目標(biāo)分片。

用戶(hù)在rule.xml中配置枚舉值文件路徑和分片索引是字符串還是數(shù)字,DBLE在啟動(dòng)時(shí)會(huì)將枚舉值文件加載到內(nèi)存中,形成一個(gè)映射表

在DBLE的運(yùn)行過(guò)程中,用戶(hù)訪(fǎng)問(wèn)使用這個(gè)算法的表時(shí),WHERE子句中的分片索引值會(huì)被提取出來(lái),直接查映射表得到分片編號(hào)

與MyCat的類(lèi)似分片算法對(duì)比

中間件

DBLE

MyCat

分片算法種類(lèi)    enum 分區(qū)算法    分片枚舉  

兩種中間件的枚舉分片算法使用上無(wú)差別。

開(kāi)發(fā)注意點(diǎn)

【分片索引】1. 整型數(shù)字(可以為負(fù)數(shù))或字符串((不含=和換行符)

【分片索引】2. 枚舉值之間不能重復(fù)

Male=0Male=1

或者

123=1123=2

會(huì)導(dǎo)致分片策略加載出錯(cuò)

【分片索引】3. 不同枚舉值可以映射到同一個(gè)分片上

Mr=0Mrs=1Miss=1Ms=1123=0

運(yùn)維注意點(diǎn)

【擴(kuò)容】1. 增加枚舉值無(wú)需數(shù)據(jù)再平衡

【擴(kuò)容】2. 增加一個(gè)枚舉值的分片數(shù)量數(shù)時(shí),需要對(duì)局部數(shù)據(jù)進(jìn)行遷移

【縮容】1. 減少枚舉值需要數(shù)據(jù)再平衡

【縮容】2. 減少一個(gè)枚舉值的分片數(shù)量數(shù)時(shí),需要對(duì)局部數(shù)據(jù)進(jìn)行遷移

配置注意點(diǎn)

【配置項(xiàng)】1. 在 rule.xml 中,可配置項(xiàng)為  、 和

【配置項(xiàng)】2. 在 rule.xml 中配置  標(biāo)簽,非必須配置項(xiàng),不配置該項(xiàng)的話(huà),用戶(hù)的分片索引值沒(méi)落在 mapFile 定義的范圍時(shí),DBLE 會(huì)報(bào)錯(cuò);若需要配置,必須為非負(fù)整數(shù),用戶(hù)的分片索引值沒(méi)落在 mapFile 定義的范圍時(shí),DBLE 會(huì)路由至這個(gè)值的 MySQL 分片

【配置項(xiàng)】3. 在 rule.xml 中配置  標(biāo)簽,范圍映射文件的路徑:若在映射文件在 DBLE_HOME/conf 或其中,則可以使用相對(duì)路徑的形式配置,例如,映射文件是 DBLE_HOME/conf/map/table_map.txt 時(shí),配置值就可以簡(jiǎn)寫(xiě)為 map/table_map.txt;映射文件在 DBLE_HOME/conf 目錄以外時(shí),需要使用絕對(duì)路徑,但這種做法需要考慮用戶(hù)權(quán)限等問(wèn)題,因此不建議把映射文件放在 DBLE_HOME/conf 外。

【配置項(xiàng)】4. 編輯 mapFile 所配置的文件

記錄格式為:=

枚舉值可以是整型數(shù)字,或任意字符(除了=和換行符),分片編號(hào)必須是非負(fù)整型數(shù)字,記錄之間以換行分隔,一行僅能有一條記錄,枚舉值不能夠是“DEFAULT_NODE”這個(gè)字符串,允許以“//”和“#”在行首來(lái)注釋該行

【配置項(xiàng)】5. 在 rule.xml 中配置  標(biāo)簽;type 必須為整型;取值為 0 時(shí),mapFile 的必須為整型;取值為非 0 時(shí),mapFile 的可以是任意字符(除了=和換行符)

關(guān)于數(shù)據(jù)庫(kù)中枚舉類(lèi)型的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。

創(chuàng)新互聯(lián)是成都專(zhuān)業(yè)網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)、SEO優(yōu)化、手機(jī)網(wǎng)站、小程序開(kāi)發(fā)、APP開(kāi)發(fā)公司等,多年經(jīng)驗(yàn)沉淀,立志成為成都網(wǎng)站建設(shè)第一品牌!


當(dāng)前標(biāo)題:數(shù)據(jù)庫(kù)中枚舉類(lèi)型詳解(數(shù)據(jù)庫(kù)中枚舉類(lèi)型)
轉(zhuǎn)載來(lái)源:http://m.5511xx.com/article/dhgdogj.html