重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
mysql怎么獲取數據表字段enum類型的默認值
網站的建設成都創新互聯公司專注網站定制,經驗豐富,不做模板,主營網站定制開發.小程序定制開發,H5頁面制作!給你煥然一新的設計體驗!已為護欄打樁機等企業提供專業服務。
本節主要內容:
MySQL數據類型之枚舉類型ENUM
MySQL數據庫提供針對字符串存儲的一種特殊數據類型:枚舉類型ENUM,這種數據類型可以給予我們更多提高性能、降低存儲容量和降低程序代碼理解的技巧,前面介紹了首先介紹了四種數據類型的特性總結,其后又分別介紹了布爾類型BOOL或稱布爾類型BOOLEAN,以及后續會再單獨介紹集合類型SET。
本文詳細介紹集合類型enum測試過程與總結,加深對mysql數據庫集合類型enum的理解記憶。
n 枚舉類型ENUM
a).數據庫表mysqlops_enum結構
執行數據庫表mysqlops_enum創建的SQL語句:
復制代碼代碼示例:
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)
執行查詢數據庫表mysqlops_enum結構的SQL語句:
復制代碼代碼示例:
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)
小結:
為方便測試枚舉類型,如何處理字段定義的默認值、是否允許為NULL和空值的情況,我們定義了2個枚舉類型的字段名,經過對比創建與查詢數據庫中表的結構信息,沒有發現MySQL數據庫默認修改任何信息。
b). 寫入不同類型的測試數據
寫入一條符合枚舉類型定義的記錄值:
復制代碼代碼示例:
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)
測試第二個枚舉類型字Work_City是否允許為空記錄值:
復制代碼代碼示例:
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)
測試第二個枚舉類型字段Work_City是否允許存儲NULL值:
復制代碼代碼示例:
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
測試第一個枚舉類型字段Job_type是否可以存儲空白值:
復制代碼代碼示例:
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)
測試第二個枚舉類型字段Job_City如何處理沒有在定義中描述的值域第一個枚舉類型字段Work_Type的默認值沒指定情況下,會默認填寫那個值:
復制代碼代碼示例:
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)
測試第二個枚舉類型字段未插入數據的情況下,是否能使用上字段定義中指定的默認值:
復制代碼代碼示例:
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 定義的是枚舉變量。
變量和參數都可以定義為 Enum 類型。Enum 類型中的元素被初始化為 Enum 語句中指定的常數值。所賦給的值可以包括正數和負數,且在運行時不能改變。
你可以把它理解為一個常數集合。方便實用。最常用的地方是用作函數的參數類型。
假設有個GetSeason函數返回某月所在的季節:
不用枚舉則定義為:
GetSeason(Month As Integer) As Integer
則參數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
則函數定義為:GetSeason(Month As Months) As Seasons
調用時可以寫:
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// 兩個類的對象$myclass = new MyClass;$otherclass = new OtherClass;// 致命錯誤:第一個參數必須是 OtherClass 類的一個對象$myclass-test('hello');// 致命錯誤:第一個參數必須為 OtherClass 類的一個實例$foo = new stdClass;$myclass-test($foo);// 致命錯誤:第一個參數不能為 null$myclass-test(null);// 正確:輸出 Hello World$myclass-test($otherclass);// 致命錯誤:第一個參數必須為數組$myclass-test_array('a string');// 正確:輸出數組$myclass-test_array(array('a', 'b', 'c'));// 正確:輸出 ArrayObject$myclass-test_interface(new ArrayObject(array()));// 正確:輸出 int(1)$myclass-test_callable('var_dump', 1);?
enum 關鍵字用于聲明枚舉,即一種由一組稱為枚舉數列表的命名常數組成的獨特類型。每種枚舉類型都有基礎類型,該類型可以是除 char 以外的任何整型。枚舉元素的默認基礎類型為 int。默認情況下,第一個枚舉數的值為 0,后面每個枚舉數的值依次遞增