mysql怎么獲取數(shù)據(jù)表字段enum類型的默認(rèn)值
網(wǎng)站的建設(shè)成都創(chuàng)新互聯(lián)公司專注網(wǎng)站定制,經(jīng)驗(yàn)豐富,不做模板,主營網(wǎng)站定制開發(fā).小程序定制開發(fā),H5頁面制作!給你煥然一新的設(shè)計(jì)體驗(yàn)!已為護(hù)欄打樁機(jī)等企業(yè)提供專業(yè)服務(wù)。
本節(jié)主要內(nèi)容:
MySQL數(shù)據(jù)類型之枚舉類型ENUM
MySQL數(shù)據(jù)庫提供針對(duì)字符串存儲(chǔ)的一種特殊數(shù)據(jù)類型:枚舉類型ENUM,這種數(shù)據(jù)類型可以給予我們更多提高性能、降低存儲(chǔ)容量和降低程序代碼理解的技巧,前面介紹了首先介紹了四種數(shù)據(jù)類型的特性總結(jié),其后又分別介紹了布爾類型BOOL或稱布爾類型BOOLEAN,以及后續(xù)會(huì)再單獨(dú)介紹集合類型SET。
本文詳細(xì)介紹集合類型enum測試過程與總結(jié),加深對(duì)mysql數(shù)據(jù)庫集合類型enum的理解記憶。
n 枚舉類型ENUM
a).數(shù)據(jù)庫表mysqlops_enum結(jié)構(gòu)
執(zhí)行數(shù)據(jù)庫表mysqlops_enum創(chuàng)建的SQL語句:
復(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ù)庫表mysqlops_enum結(jié)構(gòu)的SQL語句:
復(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é):
為方便測試枚舉類型,如何處理字段定義的默認(rèn)值、是否允許為NULL和空值的情況,我們定義了2個(gè)枚舉類型的字段名,經(jīng)過對(duì)比創(chuàng)建與查詢數(shù)據(jù)庫中表的結(jié)構(gòu)信息,沒有發(fā)現(xiàn)MySQL數(shù)據(jù)庫默認(rèn)修改任何信息。
b). 寫入不同類型的測試數(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)
測試第二個(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)
測試第二個(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
測試第一個(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)
測試第二個(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)
測試第二個(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)
Enum 定義的是枚舉變量。
變量和參數(shù)都可以定義為 Enum 類型。Enum 類型中的元素被初始化為 Enum 語句中指定的常數(shù)值。所賦給的值可以包括正數(shù)和負(fù)數(shù),且在運(yùn)行時(shí)不能改變。
你可以把它理解為一個(gè)常數(shù)集合。方便實(shí)用。最常用的地方是用作函數(shù)的參數(shù)類型。
假設(shè)有個(gè)GetSeason函數(shù)返回某月所在的季節(jié):
不用枚舉則定義為:
GetSeason(Month As Integer) As Integer
則參數(shù)Month取值1到12表示一到十二月,返回值1-4表示春夏秋冬四季。
但這樣做程序可讀性明顯不佳。
使用枚舉:
Enum Months
January = 1
February
March
April
May
June
July
August
September
October
November
December
End Enum
Enum Seasons
Spring = 1
Summer
Autumn
Winter
End Enum
則函數(shù)定義為:GetSeason(Month As Months) As Seasons
調(diào)用時(shí)可以寫:
iSeason = GetSeason(August)
If GetSeason(August) = Spring Then Msgbox "你瞎說。"
/*搜索的語句,如果表名稱為table1*/
$sql = "select locks from table1 where id=1";
$que = mysql_query($sql);
$row = mysql_fetch_array($que);
$re = ($row['locks'] == '0') ? '禁用' : '不禁用';
echo $re;
?php// 兩個(gè)類的對(duì)象$myclass = new MyClass;$otherclass = new OtherClass;// 致命錯(cuò)誤:第一個(gè)參數(shù)必須是 OtherClass 類的一個(gè)對(duì)象$myclass-test('hello');// 致命錯(cuò)誤:第一個(gè)參數(shù)必須為 OtherClass 類的一個(gè)實(shí)例$foo = new stdClass;$myclass-test($foo);// 致命錯(cuò)誤:第一個(gè)參數(shù)不能為 null$myclass-test(null);// 正確:輸出 Hello World$myclass-test($otherclass);// 致命錯(cuò)誤:第一個(gè)參數(shù)必須為數(shù)組$myclass-test_array('a string');// 正確:輸出數(shù)組$myclass-test_array(array('a', 'b', 'c'));// 正確:輸出 ArrayObject$myclass-test_interface(new ArrayObject(array()));// 正確:輸出 int(1)$myclass-test_callable('var_dump', 1);?
enum 關(guān)鍵字用于聲明枚舉,即一種由一組稱為枚舉數(shù)列表的命名常數(shù)組成的獨(dú)特類型。每種枚舉類型都有基礎(chǔ)類型,該類型可以是除 char 以外的任何整型。枚舉元素的默認(rèn)基礎(chǔ)類型為 int。默認(rèn)情況下,第一個(gè)枚舉數(shù)的值為 0,后面每個(gè)枚舉數(shù)的值依次遞增