MYSQL約束 -- not null 非空約束
阿新 • • 發佈:2017-07-19
odi ros 如果 bsp ima create tiny mic creat
2、not null 非空約束
用於確保當前列的值不為空;在創建表時,如果不指定是否可以為空,字段默認可以為NULL。
-- 這是上一篇默認約束創建的表 CREATE TABLE `test`.`user`( `id` INT(11) NOT NULL AUTO_INCREMENT COMMENT ‘id‘, `name` VARCHAR(225) NOT NULL COMMENT ‘姓名‘, -- 這裏添加了NOT NULL `sex` TINYINT(1) DEFAULT 1 COMMENT ‘性別 1男 0女‘, PRIMARY KEY (`id`) ) ENGINE=INNODB CHARSET=utf8 COLLATE=utf8_general_c
給字段添加非空約束:
/* 在創建表時,直接在字段類型後面添加 NOT NULL 即可。 如果已經存在了表,那麽直接修改表的字段為非空 */ ALTER TABLE `user` MODIFY `name` VARCHAR(255) NOT NULL;
DESC `user`; -- DESC 查看表結構
結果:
Field Type Null Key Default Extra
-----------------------------------------------------------------
id int(11) NO PRI (NULL) auto_increment
namevarchar(225) NO (NULL)
sex tinyint(1) YES 1
刪除非空約束:
/* 刪除非空約束和添加非空約束一樣,都是修改表字段的結構; 直接刪除 NOT NULL,這樣就把非空刪除了。 */ ALTER TABLE `user` MODIFY `name` VARCHAR(255); DESC `user`; 結果: Field Type Null Key Default Extra --------------------------------------------------------------- id int(11) NO PRI (NULL) auto_increment name varchar(255) YES (NULL) sex tinyint(1) YES 1
向非空約束中添加數據:
-- 添加一條記錄,直接設置name字段為 ‘‘ ,可以添加成功。 INSERT INTO `user`(`name`,`sex`) VALUES(‘‘,0); 結果: 共 1 行受到影響
-- 添加一個‘null‘或者‘(NULL)‘字符串,添加成功
INSERT INTO `user`(`name`,`sex`) VALUES(‘null‘,0);
INSERT INTO `user`(`name`,`sex`) VALUES(‘(NULL)‘,0);
結果:
共 2 行受到影響
-- 設置name字段為null,添加失敗 INSERT INTO `user`(`name`,`sex`) VALUES(NULL,0); 結果: 錯誤代碼: 1048 COLUMN ‘name‘ cannot be NULL
-- 不設置name字段的值,直接添加,添加失敗
-- 如果在name字段上再加上默認約束,那麽就可以添加,添加的值為默認的值
INSERT INTO `user`(`sex`) VALUES(0); 結果: 錯誤代碼: 1364 FIELD ‘name‘ doesn‘t have a default value
有關的null的查詢:
-- 查詢name字段為NULL的記錄 SELECT * FROM `user` WHERE `name` IS NULL; -- 查詢name字段為不為NULL的記錄 SELECT * FROM `user` WHERE `name` IS NOT NULL; -- 查詢空字符串‘‘ SELECT * FROM `user` WHERE `name` = ‘‘; -- 查詢全是空的字符串,使用 LENGTH 和 TRIM 函數組合 SELECT * FROM `user` WHERE LENGTH(TRIM(`name`)) = 0;
MYSQL約束 -- not null 非空約束