mysql枚舉怎么寫,mysql枚舉類型enum用法

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

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

成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供華寧企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、HTML5、小程序制作等業(yè)務(wù)。10年已為華寧眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。

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

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

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

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

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

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

寫入一條符合枚舉類型定義的記錄值:

復(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è)枚舉類型字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è)枚舉類型字段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è)枚舉類型字段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è)枚舉類型字段Job_City如何處理沒有在定義中描述的值域第一個(gè)枚舉類型字段Work_Type的默認(rèn)值沒指定情況下,會(huì)默認(rèn)填寫那個(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è)枚舉類型字段未插入數(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)

mysql中enum類型怎么設(shè)置

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

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

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

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

中間件

DBLE

MyCat

分片算法種類 ? ?enum 分區(qū)算法 ? ?分片枚舉 ?

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

開發(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. 增加枚舉值無需數(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)為?property name="defaultNode" 、property name="mapFile" 和 property name="type"

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

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

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

記錄格式為:枚舉值=分片編號(hào)

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

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

mysql 數(shù)據(jù)類型的詳解

MySQL數(shù)據(jù)庫(kù)的表是一個(gè)二維表,由一個(gè)或多個(gè)數(shù)據(jù)列構(gòu)成。

每個(gè)數(shù)據(jù)列都有它的特定類型,該類型決定了MySQL如何看待該列數(shù)據(jù),我們可以把整型數(shù)值存放到字符類型的列中,MySQL則會(huì)把它看成字符串來處理。

MySQL中的列類型有三種:數(shù)值類、字符串類和日期/時(shí)間類。

從大類來看列類型和數(shù)值類型一樣,都是只有三種。但每種列類型都還可細(xì)分。

下面對(duì)各種列類型進(jìn)行詳細(xì)介紹。

數(shù)值類的數(shù)據(jù)列類型

數(shù)值型的列類型包括整型和浮點(diǎn)型兩大類。

TINYINT:1字節(jié) 非常小的正整數(shù),帶符號(hào):-128~127,不帶符號(hào):0~255

SMALLINT:2字節(jié) 小整數(shù),帶符號(hào):-32768~32767,不帶符號(hào):0~65535

MEDIUMINT:3字節(jié) 中等大小的整數(shù),帶符號(hào):-8388608~8388607,不帶符號(hào):0~16777215

INT:4字節(jié) 標(biāo)準(zhǔn)整數(shù),帶符號(hào):-2147483648~2147483647,不帶符號(hào):0~4294967295

BIGINT:8字節(jié) 大整數(shù),帶符號(hào):-9223372036854775808~9233372036854775807,不帶符號(hào):0~18446744073709551615

FLOAT:4字節(jié) 單精度浮點(diǎn)數(shù),最小非零值:+-1.175494351E-38,最大非零值:+-3.402823466E+38

DOUBLE:8字節(jié) 雙精度浮點(diǎn)數(shù),最小非零值:+-2.2250738585072014E-308,最大非零值:+-1.7976931348623157E+308

DECIMAL:M+2字節(jié) 以字符串形式表示的浮點(diǎn)數(shù),它的取值范圍可變,由M和D的值決定。

MYSQL支持大量的列類型,它們可以被分為 3 類:數(shù)字類型、日期和時(shí)間類型以及字符串(字符)類型。這個(gè)章節(jié)首先給出可用類型的概述,并且總結(jié)各類型所需的存儲(chǔ)需求,然后提供各類型中的類型范疇更詳細(xì)的描述。概述有意地簡(jiǎn)化了。更詳細(xì)的說明應(yīng)該參考特寫列類型的附加信息,例如你能為其指定值的允許格式。

MySQL 支持的列類型在下面列出。下列代碼字母用于描述中:

M指出最大的顯示尺寸。最大的顯示尺寸長(zhǎng)度為 255。D適用于浮點(diǎn)類型。指出跟隨在十進(jìn)制小數(shù)點(diǎn)后的數(shù)字?jǐn)?shù)量。最大可能值為 30,但不應(yīng)大于M-2。

方括號(hào) (“[”and“]”) 指定可選的類型修飾部份。

注意,如果為一個(gè)列指定了ZEROFILL,MySQL 將自動(dòng)為這個(gè)列添加UNSIGNED屬性。

警告:你應(yīng)該知道當(dāng)在兩個(gè)整數(shù)類型值中使用減法時(shí),如有一個(gè)為UNSIGNED類型,那么結(jié)果也是無符號(hào)的。查看章節(jié)6.3.5 Cast 函數(shù)。

TINYINT[(M)] [UNSIGNED] [ZEROFILL]-128到127。無符號(hào)的范圍是0到255。

BITBOOL它們是TINYINT(1)的同義詞。

SMALLINT[(M)] [UNSIGNED] [ZEROFILL]一個(gè)小整數(shù)。有符號(hào)的范圍是-32768到32767。無符號(hào)的范圍是0到65535。

MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]一個(gè)中等大小的整數(shù)。有符號(hào)的范圍是-8388608到8388607。無符號(hào)的范圍是0到16777215。

INT[(M)] [UNSIGNED] [ZEROFILL]一個(gè)正常大小的整數(shù)。有符號(hào)的范圍是-2147483648到2147483647。無符號(hào)的范圍是0到4294967295。

INTEGER[(M)] [UNSIGNED] [ZEROFILL]INT的同義詞。

BIGINT[(M)] [UNSIGNED] [ZEROFILL]一個(gè)大的整數(shù)。有符號(hào)的范圍是-9223372036854775808到9223372036854775807。無符號(hào)的范圍是0到18446744073709551615。

你應(yīng)該知道的有關(guān)BIGINT列的一些事情:

BIGINT或DOUBLE值來完成的,因此你不應(yīng)該使用大于9223372036854775807(63 bits) 的無符號(hào)大整數(shù),除了位函數(shù)之外!如果你這樣做了,結(jié)果中的某些大數(shù)字可能會(huì)出錯(cuò),因?yàn)閷IGINT轉(zhuǎn)換成DOUBLE時(shí)產(chǎn)生了舍入錯(cuò)誤。MySQL 4.0 在下列情況下可以處理BIGINT:

在一個(gè)BIGINT列中使用整數(shù)存儲(chǔ)一個(gè)大的無符號(hào)值。

在MIN(big_int_column)和MAX(big_int_column)中。

當(dāng)兩個(gè)操作數(shù)都是整數(shù)時(shí)使用操作符 (+、-、*、等)。

通常你可以在一個(gè)BIGINT列中以字符串方式存儲(chǔ)的一個(gè)精確的整數(shù)。在這種情況下,MySQL 將執(zhí)行一個(gè)字符串到數(shù)字的轉(zhuǎn)換,包括無 intermediate 的雙精度表示法。

當(dāng)兩個(gè)參數(shù)均是整數(shù)值時(shí),“-”、“+”和“*”將使用BIGINT運(yùn)算!這就意味著,如果兩個(gè)大整數(shù)的乘積(或函數(shù)的結(jié)果返回整數(shù))的結(jié)果大于9223372036854775807時(shí),你可能會(huì)得到意想不到的結(jié)果。

FLOAT(precision) [UNSIGNED] [ZEROFILL]一個(gè)浮點(diǎn)型數(shù)字。

precision可以是=24作為一個(gè)單精度的浮點(diǎn)數(shù)字和介于 25 和 53 之間作為一個(gè)雙精度的浮點(diǎn)數(shù)字。這些類型與下面描述的FLOAT和DOUBLE類型相似。FLOAT(X)有與相應(yīng)的FLOAT和DOUBLE類型同樣的范圍,但是顯示尺寸和十進(jìn)制小數(shù)位數(shù)是未定義的。在 MySQL 3.23 中,它是一個(gè)真實(shí)的浮點(diǎn)值。而在 MySQL 早期的版本中,F(xiàn)LOAT(precision)通常有 2 小數(shù)位。 注意,由于在 MySQL 中所有的計(jì)算都是以雙精度執(zhí)行的,所以使用FLOAT可能帶來一些意想不到的問題。查看章節(jié)A.5.6 解決沒有匹配行的問題。

FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]一個(gè)小的(單精度) 浮點(diǎn)數(shù)字。允許的值是-3.402823466E+38到-1.175494351E-38、0和1.175494351E-38到3.402823466E+38。如果UNSIGNED被指定,負(fù)值是不允許的。M是顯示寬度,D是小數(shù)位數(shù)。FLOAT沒有參數(shù)或有X= 24 的FLOAT(X)代表一個(gè)單精度的浮點(diǎn)數(shù)字。

DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]一個(gè)正常大小的(雙精度)浮上數(shù)字。允許的值是-1.7976931348623157E+308到-2.2250738585072014E-308、0和2.2250738585072014E-308到1.7976931348623157E+308。如果UNSIGNED被指定,負(fù)值是不允許的。M是顯示寬度,D是小數(shù)位數(shù)。DOUBLE沒胡參數(shù)或有 25 =X= 53 的FLOAT(X)代表一個(gè)雙精度的浮點(diǎn)數(shù)字。

DOUBLE PRECISION[(M,D)] [UNSIGNED] [ZEROFILL]

REAL[(M,D)] [UNSIGNED] [ZEROFILL]它們是DOUBLE同義詞。

DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]一個(gè)未壓縮(unpacked)的浮點(diǎn)數(shù)。運(yùn)作如同一個(gè)CHAR列:“unpacked” 意味著數(shù)字是以一個(gè)字符串存儲(chǔ)的,值的每一位將使用一個(gè)字符。小數(shù)點(diǎn)并且對(duì)于負(fù)數(shù),“-”符號(hào)不在M中計(jì)算(但是它們的空間是被保留的)。如果D是 0,值將沒有小數(shù)點(diǎn)或小數(shù)部份。DECIMAL值的最大范圍與DOUBLE一致,但是對(duì)于一個(gè)給定的DECIMAL列,實(shí)際的范圍可以被所選擇的M和D限制。如果UNSIGNED被指定,負(fù)值是不允許的。 如果D被忽略,缺省為 0。如果M被忽略,缺省為 10。 在 MySQL 3.23 以前,M參數(shù)必須包含符號(hào)與小數(shù)點(diǎn)所需的空間。

DEC[(M[,D])] [UNSIGNED] [ZEROFILL]

NUMERIC[(M[,D])] [UNSIGNED] [ZEROFILL]DECIMAL的同義詞。

DATE一個(gè)日期。支持的范圍是'1000-01-01'到'9999-12-31'。MySQL 以'YYYY-MM-DD'格式顯示DATE值,但是允許你以字符串或數(shù)字給一個(gè)DATE列賦值。查看章節(jié)6.2.2.2DATETIME、DATE和TIMESTAMP類型。

DATETIME一個(gè)日期和時(shí)間的組合。支持的范圍是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。MySQL 以'YYYY-MM-DD HH:MM:SS'格式顯示DATETIME值,但是允許你以字符串或數(shù)字給一個(gè)DATETIME列賦值。查看章節(jié)6.2.2.2DATETIME、DATE和TIMESTAMP類型。

TIMESTAMP[(M)]一個(gè)時(shí)間戳。范圍是'1970-01-01 00:00:00'到2037年間的任意時(shí)刻。 MySQL 4.0 和更早版本中,TIMESTAMP值是以YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD或YYMMDD格式顯示的,它取決于M是否是14(或省略)、12、8或6,但是允許你以字符串或數(shù)字給一個(gè)TIMESTAMP列賦值。 從 MySQL 4.1 開始,TIMESTAMP以'YYYY-MM-DD HH:MM:DD'格式作為字符返回。如果你你希望以數(shù)字形式返回則必須在該時(shí)間戳字段后加上 +0。不同的時(shí)間戳長(zhǎng)度是不支持的。從 MySQL 4.0.12 開始,選項(xiàng)--new可以被用來使服務(wù)器與 4.1 一樣運(yùn)作。TIMESTAMP列有益于記錄一個(gè)INSERT或UPDATE操作的日期和時(shí)間,因?yàn)槿绻阕约簺]有給它賦值,它將被自動(dòng)地設(shè)置為最近一次操作的日期和時(shí)間。也可以通過給它賦一個(gè)NULL而使它設(shè)置為當(dāng)前的日期和時(shí)間。查看章節(jié)6.2.2 Date 和 Time 類型。 參數(shù)M只影響一個(gè)TIMESTAMP列的顯示格式;它的值總是占用 4 個(gè)字節(jié)存儲(chǔ)。 注意,當(dāng)TIMESTAMP(M)列的M是 8 或 14 時(shí),它返回的是數(shù)字而其它的TIMESTAMP(M)列返回的是字符串。這僅僅是為了可以可靠地轉(zhuǎn)儲(chǔ)并恢復(fù)到其它格式的表中。查看章節(jié)6.2.2.2DATETIME、DATE和TIMESTAMP類型。TIME一個(gè)時(shí)間。范圍是'-838:59:59'到'838:59:59'。MySQL 以'HH:MM:SS'格式顯示TIME值,但是允許你使用字符串或數(shù)字來給TIME列賦值。查看章節(jié)6.2.2.3TIME類型。YEAR[(2|4)]一個(gè) 2 或 4 位數(shù)字格式的年(缺省為 4 位)。允許的值是1901到2155、0000(4 位年格式) 以及使用 2 位格式的 1970-2069 (70-69)。MySQL 以YYYY格式顯示YEAR值,但是允許你使用字符串或數(shù)字來給YEAR列賦值。(YEAR類型在 MySQL 3.22 之前不支持。) 查看章節(jié)6.2.2.4YEAR類型。

[NATIONAL] CHAR(M) [BINARY]一個(gè)定長(zhǎng)的字符串,當(dāng)存儲(chǔ)時(shí),總是以空格填滿右邊到指定的長(zhǎng)度。M的范圍是 0 到 255 (在 MySQL 3.23 版本之前為 1 到 255)。當(dāng)該值被檢索時(shí),尾部空格將被刪除。CHAR值根據(jù)缺省的字符集進(jìn)行忽略大小寫的排索與比較,除非指定了關(guān)鍵詞BINARY。NATIONAL CHAR(或短形式NCHAR) 是以 ANSI SQL 方式定義一個(gè)CHAR列,它將使用缺省的字符集。這在 MySQL 中是默認(rèn)的。

CHAR是CHARACTER的縮寫。 MySQL 允許以CHAR(0)類型建立一個(gè)列。一些老程序運(yùn)行時(shí)必需一個(gè)列,卻又并不使用這個(gè)列的值,你就不得不為了適應(yīng)它而建立該列,在這情況下,CHAR(0)將是很有益的。當(dāng)需要一個(gè)列僅保存兩個(gè)值時(shí):一個(gè)為CHAR(0)(該列沒有定義為NOT NULL),這將僅占用一個(gè)比特位來存儲(chǔ) 2 個(gè)值:NULL或""。查看章節(jié)6.2.3.1CHAR和VARCHAR類型。CHAR這是CHAR(1)的同義詞。

[NATIONAL] VARCHAR(M) [BINARY]一個(gè)變長(zhǎng)的字符串。注意:尾部的空格在存儲(chǔ)時(shí)將會(huì)被刪除(這與 ANSI SQL 約規(guī)不同)。M的范圍是 0 到 255 (在 MySQL 4.0.2 之前的版本中是 1 到 255)。

VARCHAR值以大小寫忽略方式進(jìn)行排索與比較,除非關(guān)鍵詞BINARY被指定。查看章節(jié)6.5.3.1 隱式的列定義變化。VARCHAR是CHARACTER VARYING的縮寫。查看章節(jié)6.2.3.1CHAR和VARCHAR類型。

TINYBLOBTINYTEXT一個(gè)BLOB或TEXT列,最大長(zhǎng)度為 255 (2^8 - 1) 個(gè)字符。查看章節(jié)6.5.3.1 隱式的列定義變化。查看章節(jié)6.2.3.2BLOB和TEXT類型。

BLOBTEXT一個(gè)BLOB或TEXT列,最大長(zhǎng)度為 65535 (2^16 - 1) 個(gè)字符。查看章節(jié)6.5.3.1 隱式的列定義變化。查看章節(jié)6.2.3.2BLOB和TEXT類型。

MEDIUMBLOBMEDIUMTEXT一個(gè)BLOB或TEXT列,最大長(zhǎng)度為 16777215 (2^24 - 1) 個(gè)字符。查看章節(jié)6.5.3.1 隱式的列定義變化。查看章節(jié)6.2.3.2BLOB和TEXT類型。

LONGBLOBLONGTEXT一個(gè)BLOB或TEXT列,最大長(zhǎng)度為 4294967295 (2^32 - 1) 個(gè)字符。查看章節(jié)6.5.3.1 隱式的列定義變化。注意,由于服務(wù)器/客戶端的協(xié)議以及 MyISAM 表通常有一個(gè) 16M 每通信包/表行的限制,你仍然不能使用這個(gè)類型的整個(gè)范圍。查看章節(jié)6.2.3.2BLOB和TEXT類型。ENUM('value1','value2',...)一個(gè)枚舉類型。一個(gè)僅能有一個(gè)值的字符串對(duì)象,這個(gè)值選自值列'value1'、'value2'、...、NULL或特殊的""出錯(cuò)值。一個(gè)ENUM列可以有最大 65535 不同的值。查看章節(jié)6.2.3.3ENUM類型。SET('value1','value2',...)一個(gè)集合。一個(gè)能有零個(gè)或更多個(gè)值的字符串對(duì)象,其中每個(gè)值必須選自值列'value1'、'value2'、...。一個(gè)SET列可以有最大 64 個(gè)成員。查看章節(jié)6.2.3.4SET類型。

MySQL 支持所有的 ANSI/ISO SQL92 數(shù)字類型。這些類型包括準(zhǔn)確數(shù)字的數(shù)據(jù)類型(NUMERIC、DECIMAL、INTEGER和SMALLINT),也包括近似數(shù)字的數(shù)據(jù)類型(FLOAT、REAL和DOUBLE PRECISION)。關(guān)鍵詞INT是INTEGER的同義詞,關(guān)鍵詞DEC是DECIMAL的同義詞。

NUMERIC和DECIMAL類型被 MySQL 以同樣的類型實(shí)現(xiàn),這在 SQL92 標(biāo)準(zhǔn)中是允許的。他們用于保存對(duì)準(zhǔn)確精度有重要要求的值,例如與金錢有關(guān)的數(shù)據(jù)。當(dāng)以它們中的之一聲明一個(gè)列時(shí),精度和數(shù)值范圍可以(通常是)被指定;例如:

salary DECIMAL(5,2)

在這個(gè)例子中,5(精度(precision)) 代表重要的十進(jìn)制數(shù)字的數(shù)目,2(數(shù)據(jù)范圍(scale)) 代表在小數(shù)點(diǎn)后的數(shù)字位數(shù)。在這種情況下,因此,salary列可以存儲(chǔ)的值范圍是從-99.99到99.99。(實(shí)際上 MySQL 在這個(gè)列中可以存儲(chǔ)的數(shù)值可以一直到999.99,因?yàn)樗鼪]有存儲(chǔ)正數(shù)的符號(hào))。

譯者注:

M 與D 對(duì)DECIMAL(M, D) 取值范圍的影響

類型說明 取值范圍(MySQL 3.23) 取值范圍(MySQL = 3.23)

DECIMAL(4, 1) -9.9 到 99.9 -999.9 到 9999.9

DECIMAL(5, 1) -99.9 到 999.9 -9999.9 到 99999.9

DECIMAL(6, 1) -999.9 到 9999.9 -99999.9 到 999999.9

DECIMAL(6, 2) -99.99 到 999.99 -9999.99 到 99999.99

DECIMAL(6, 3) -9.999 到 99.999 -999.999 到 9999.999

# 在MySQL 3.23 及以后的版本中,DECIMAL(M, D) 的取值范圍等于早期版本中的DECIMAL(M + 2, D) 的取值范圍。注釋結(jié)束:

在 ANSI/ISO SQL92 中,句法DECIMAL(p)等價(jià)于DECIMAL(p,0)。同樣的,在執(zhí)行被允許決定值p的地方,句法DECIMAL等價(jià)于DECIMAL(p,0)。MySQL 目前還不支持DECIMAL/NUMERIC數(shù)據(jù)類型的這些變體形式中的任一種。一般來說這并不是一個(gè)嚴(yán)重的問題,通過明確地控制精度和數(shù)值范圍可以得到這些類型的主要功能益處。

DECIMAL和NUMERIC值是作為字符串存儲(chǔ)的,而不是作為二進(jìn)制浮點(diǎn)數(shù),以便保護(hù)這些值的十進(jìn)制精確度。一個(gè)字符用于數(shù)值的每一位、小數(shù)點(diǎn)(如果scale 0) 和“-”符號(hào)(對(duì)于負(fù)值)。如果scale是 0,DECIMAL和NUMERIC值不包含小數(shù)點(diǎn)或小數(shù)部分。

DECIMAL和NUMERIC值的最大范圍與DOUBLE一致,但是對(duì)于一個(gè)給定的DECIMAL或NUMERIC列,它的實(shí)際范圍可制定該列時(shí)的precision或scale限制。當(dāng)這樣的列被賦給了小數(shù)點(diǎn)的位數(shù)超過scale所指定的值時(shí),該將根據(jù)scale進(jìn)行四舍五入。當(dāng)一個(gè)DECIMAL或NUMERIC列被賦與一個(gè)大小超過指定(或缺省)的precisionandscale的限止范圍時(shí),MySQL 以該列范圍的端點(diǎn)值存儲(chǔ)該值。

如何將mysql中枚舉類型的數(shù)值在前臺(tái)遍歷為漢字

如何將mysql中枚舉類型的數(shù)值在前臺(tái)遍歷為漢字

publicenumtestenum

{

aa,

bb,

cc,

dd

};

foreach

(testenum

item

in

Enum.GetValues(typeof(testenum)))

{

}

Enum.GetValues(typeof(枚舉的名稱));可以獲得指定枚舉的枚舉值。

Enum.GetNames(typeof(枚舉的名稱));可以獲得指定枚舉的枚舉名稱。

網(wǎng)頁(yè)題目:mysql枚舉怎么寫,mysql枚舉類型enum用法
標(biāo)題路徑:http://muchs.cn/article38/hcgcpp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、App開發(fā)云服務(wù)器、網(wǎng)站建設(shè)、定制網(wǎng)站網(wǎng)站營(yíng)銷

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

營(yíng)銷型網(wǎng)站建設(shè)