<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          MySQL字段默認(rèn)值設(shè)置詳解

          共 7079字,需瀏覽 15分鐘

           ·

          2021-03-03 10:35

          前言: 


          在 MySQL 中,我們可以為表字段設(shè)置默認(rèn)值,在表中插入一條新記錄時(shí),如果沒有為某個(gè)字段賦值,系統(tǒng)就會(huì)自動(dòng)為這個(gè)字段插入默認(rèn)值。關(guān)于默認(rèn)值,有些知識(shí)還是需要了解的,本篇文章我們一起來學(xué)習(xí)下字段默認(rèn)值相關(guān)知識(shí)。


            1.默認(rèn)值相關(guān)操作


          我們可以用 DEFAULT 關(guān)鍵字來定義默認(rèn)值,默認(rèn)值通常用在非空列,這樣能夠防止數(shù)據(jù)表在錄入數(shù)據(jù)時(shí)出現(xiàn)錯(cuò)誤。


          創(chuàng)建表時(shí),我們可以給某個(gè)列設(shè)置默認(rèn)值,具體語(yǔ)法格式如下:


          # 格式模板
          <字段名> <數(shù)據(jù)類型> DEFAULT <默認(rèn)值>

          # 示例
          mysql> CREATE TABLE `test_tb` (
              ->   `id` int NOT NULL AUTO_INCREMENT,
              ->   `col1` varchar(50not null DEFAULT 'a',
              ->   `col2` int not null DEFAULT 1,
              ->   PRIMARY KEY (`id`)
              -> ) ENGINE=InnoDB  DEFAULT CHARSET=utf8;
          Query OK, 0 rows affected (0.06 sec)

          mysql> desc test_tb;
          +-------+-------------+------+-----+---------+----------------+
          | Field | Type        | Null | Key | Default | Extra          |
          +-------+-------------+------+-----+---------+----------------+
          | id    | int(11)     | NO   | PRI | NULL    | auto_increment |
          | col1  | varchar(50) | NO   |     | a       |                |
          | col2  | int(11)     | NO   |     | 1       |                |
          +-------+-------------+------+-----+---------+----------------+
          3 rows in set (0.00 sec)

          mysql> insert into test_tb (col1) values ('fdg');
          Query OK, 1 row affected (0.01 sec)

          mysql> insert into test_tb (col2) values (2);
          Query OK, 1 row affected (0.03 sec)

          mysql> select * from test_tb;
          +----+------+------+
          | id | col1 | col2 |
          +----+------+------+
          |  1 | fdg  |    1 |
          |  2 | a    |    2 |
          +----+------+------+
          2 rows in set (0.00 sec)

          通過以上實(shí)驗(yàn)可以看出,當(dāng)該字段設(shè)置默認(rèn)值后,插入數(shù)據(jù)時(shí),若不指定該字段的值,則以默認(rèn)值處理。


          關(guān)于默認(rèn)值,還有其他操作,例如修改默認(rèn)值,增加默認(rèn)值,刪除默認(rèn)值等。一起來看下這些應(yīng)該如何操作。


          # 添加新字段 并設(shè)置默認(rèn)值
          alter table `test_tb` add column `col3` varchar(20not null DEFAULT 'abc';

          # 修改原有默認(rèn)值
          alter table `test_tb` alter column `col3` set default '3a';
          alter table `test_tb` change column `col3` `col3` varchar(20not null DEFAULT '3b';
          alter table `test_tb` MODIFY column `col3` varchar(20not null DEFAULT '3c';

          # 刪除原有默認(rèn)值
          alter table `test_tb` alter column `col3` drop default;

          # 增加默認(rèn)值(和修改類似)
          alter table `test_tb` alter column `col3` set default '3aa';


            2.幾點(diǎn)使用建議


          其實(shí)不止非空字段可以設(shè)置默認(rèn)值,普通字段也可以設(shè)置默認(rèn)值,不過一般推薦字段設(shè)為非空。


          mysql> alter table `test_tb` add column `col4` varchar(20DEFAULT '4a';
          Query OK, 0 rows affected (0.12 sec)
          Records: 0  Duplicates: 0  Warnings: 0

          mysql>  desc test_tb;
          +-------+-------------+------+-----+---------+----------------+
          | Field | Type        | Null | Key | Default | Extra          |
          +-------+-------------+------+-----+---------+----------------+
          | id    | int(11)     | NO   | PRI | NULL    | auto_increment |
          | col1  | varchar(50) | NO   |     | a       |                |
          | col2  | int(11)     | NO   |     | 1       |                |
          | col3  | varchar(20) | NO   |     | 3aa     |                |
          | col4  | varchar(20) | YES  |     | 4a      |                |
          +-------+-------------+------+-----+---------+----------------+
          5 rows in set (0.00 sec)

          在項(xiàng)目開發(fā)中,有些默認(rèn)值字段還是經(jīng)常使用的,比如默認(rèn)為當(dāng)前時(shí)間、默認(rèn)未刪除、某狀態(tài)值默認(rèn)為 1 等等。簡(jiǎn)單通過下表展示下常用的一些默認(rèn)值字段。


          CREATE TABLE `default_tb` (
            `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '自增主鍵',
            ...
            `country` varchar(50not null DEFAULT '中國(guó)',
            `col_status` tinyint not null DEFAULT 1 COMMENT '1:代表啥 2:代表啥...',
            `col_time` datetime NOT NULL DEFAULT '2020-10-01 00:00:00' COMMENT '什么時(shí)間',
            `is_deleted` tinyint not null DEFAULT 0 COMMENT '0:未刪除 1:刪除',
            `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間',
            `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改時(shí)間',
            PRIMARY KEY (`id`)
          ENGINE=InnoDB  DEFAULT CHARSET=utf8;


          這里也要提醒下,默認(rèn)值一定要和字段類型匹配,比如說某個(gè)字段表示狀態(tài)值,可能取值 1、2、3... 那這個(gè)字段推薦使用 tinyint 類型,而不應(yīng)該使用 char 或 varchar 類型。


          筆者結(jié)合個(gè)人經(jīng)驗(yàn),總結(jié)下關(guān)于默認(rèn)值使用的幾點(diǎn)建議:


          • 非空字段設(shè)置默認(rèn)值可以預(yù)防插入報(bào)錯(cuò)。

          • 默認(rèn)值同樣可設(shè)置在可為 null 字段。

          • 一些狀態(tài)值字段最好給出備注,標(biāo)明某個(gè)數(shù)值代表什么狀態(tài)。

          • 默認(rèn)值要和字段類型匹配。


          總結(jié): 


          本篇文章主要講述 MySQL 字段默認(rèn)值相關(guān)知識(shí),比較簡(jiǎn)單易懂,希望各位有所收獲。

          推薦閱讀


          (點(diǎn)擊標(biāo)題可跳轉(zhuǎn)閱讀)

          MySQL查看及殺掉鏈接方法大全

          MySQL字段類型最全解析

          簡(jiǎn)單說幾個(gè)MySQL高頻面試題

          - End -

          動(dòng)動(dòng)手指轉(zhuǎn)發(fā)、在看
          是對(duì)我最大的鼓勵(lì)

          瀏覽 58
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  韩国黄色三集片 | 香蕉操妣 | 欧美成人性爱影院 | 精品A∨一区二区E区 | 蜜桃成人综合 |