詳解MySQL數(shù)據(jù)庫default設置的三種不同表現(xiàn)
作者:波波說運維
我們在建表的時候有時候會加default默認值,有時不加,而default默認值又有''和NULL兩種情況,那么這三種不同情況具體表現(xiàn)成什么呢?這里用一個實驗來簡單測試一下。
我們在建表的時候有時候會加default默認值,有時不加,而default默認值又有''和NULL兩種情況,那么這三種不同情況具體表現(xiàn)成什么呢?這里用一個實驗來簡單測試一下。
1. 建表腳本
- CREATE TABLE `test` (
- `uid` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
- `USER_CODE` varchar(225) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用戶編碼',
- `LEAVE_REASON` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '請假理由',
- PRIMARY KEY (`uid`) USING BTREE
- ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
2. 查看列定義
- SELECT
- c.TABLE_SCHEMA '數(shù)據(jù)庫',
- c.TABLE_NAME '表',
- c.COLUMN_NAME '字段',
- c.COLUMN_DEFAULT '默認值',
- c.IS_NULLABLE '是否為空',
- c.DATA_TYPE '字段類型',
- c.character_set_name '字符集',
- c.collation_name '排序規(guī)則'
- FROM
- information_schema.`COLUMNS` c
- WHERE
- TABLE_NAME = 'test'
這里可以發(fā)現(xiàn)default設置為NULL和default不設置在information_schema.`COLUMNS`表都表現(xiàn)為NULL,如果我們腳本從這個去判斷很容易就和是否為空產(chǎn)生了沖突。
3. 從navicat觀察
如果直接從navicat去看表定義,可以發(fā)現(xiàn)不同的表現(xiàn)。
責任編輯:趙寧寧
來源:
今日頭條