1. 程式人生 > >MYSQL約束 -- not null 非空約束

MYSQL約束 -- not null 非空約束

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
name
varchar(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 非空約束