MySql -- default 默認約束


常用數據庫約束:

一、default 默認約束;

二、not null:非空約束,指定某列不為NULL;

三、unique:唯一約束,指定某列和幾列組合的數據不能重復;

四、primary key:主鍵約束,指定某列的數據非空、唯一、不能重復;

五、foreign key:外鍵,指定該列記錄屬於主表中的一條記錄,參照另一條數據;

六、check:檢查,指定一個表達式,用於檢驗指定數據;

1、default 定義列的默認值

  當插入一個新行到表中時,沒有給該列明確賦值,如果定義了列的默認值,將自動得到默認值;如果沒有,則為(NULL)。

-- 創建一張user表
CREATE
TABLE `test`.`user`( `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'id', `name` VARCHAR(225) COMMENT '姓名', `sex` TINYINT(1) DEFAULT 1 COMMENT '性別 1男 0女', PRIMARY KEY (`id`) ) ENGINE=INNODB CHARSET=utf8 COLLATE=utf8_general_ci

 

給字段添加默認約束:

1.在創建表時:直接在字段類型的后面加上 DEFAULT(value),具體看創建user表時的sex字段;
2.在存在表的情況下添加:
  使用sql語句 ALTER TABLE `user` MODIFY `sex` TINYINT(1) DEFAULT 1; 即可為添加 `sex` 字段添加默認約束;
使用sql語句 ALTER TABLE `user` MODIFY `name` VARCHAR(225)DEFAULT '小明'; 即可為添加 `name` 字段添加默認約束;

tips:默認約束是不可以使用函數的,所以
ALTER TABLE `user` ADD COLUMN `date` DATETIME DEFAULT NOW() AFTER `sex`; 是不可行的。

 

移除默認約束:

移除默認約束和添加默認約束操作方式一樣,都是修改表的字段;

    ALTER TABLE `user` MODIFY `sex` TINYINT(1); 

這樣就移除了sex的默認約束。

 

 

現在我們插入一條數據:

INSERT INTO `user`(`name`) VALUES('小明');

SELECT * FROM `user`;

結果:
-----------------------------------
id name sex
1 小明 1
-----------------------------------

 

 當然我們也可以:

INSERT INTO `user`(`name`,`sex`) VALUES('小明',DEFAULT);
SELECT * FROM `user`;

結果:
---------------------------------
id     name     sex 
3      小明        1
---------------------------------

 

如果你這樣:

INSERT INTO `user`(`sex`) VALUES(DEFAULT);
SELECT * FROM `user`;

結果:
-----------------------------------
id   name    sex 
3    (NULL)   1
-----------------------------------

 

 

tips:在更新和查詢都可以用DEFAULT來操作;

-- 查詢sex字段的默認值  
SELECT DEFAULT(`sex`) FROM `user`; 

-- 更新sex為默認值 
UPDATE `user` SET `sex` = DEFAULT WHERE `id`='1';

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM