MySQL默认值约束怎么用
程序员文章站
2022-04-21 20:38:03
...
本篇文章将介绍default 默认约束,如何使用和改动后的效果。
推荐课程:MySQL教程。
常用数据库约束:
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 -----------------------------------
当然我们也可以:
INSERT INTO `user`(`name`,`sex`) VALUES('小明',DEFAULT); SELECT * FROM `user`; 结果: --------------------------------- id name sex 小明 1 ---------------------------------
如果你这样:
INSERT INTO `user`(`sex`) VALUES(DEFAULT); SELECT * FROM `user`; 结果: ----------------------------------- id name sex (NULL) 1 -----------------------------------
tips:在更新和查询都可以用DEFAULT来操作;
-- 查询sex字段的默认值 SELECT DEFAULT(`sex`) FROM `user`; -- 更新sex为默认值 UPDATE `user` SET `sex` = DEFAULT WHERE `id`='1';
以上就是MySQL默认值约束怎么用的详细内容,更多请关注其它相关文章!
推荐阅读
-
什么是MySQL数据库?MySQL怎么用?
-
Mysql设置外键约束失效怎么办?
-
mysql表字段的默认值为函数的返回值 用mysql触发器实现
-
教你怎么用Python操作MySql数据库
-
mysql-怎么用程序保证表之间的关联,而不是主外键?
-
怎么用php在mysql中插入列
-
mysql_query函数到底怎么用
-
swing-请问:用SWING容器怎么实现excel导入导出mysql里?谢谢!!!
-
开发wap网站涉及到哪些技术,后台用的php,数据库用mysql,前端怎么处理?
-
mysql用php怎么分批处理插入?比如前1000条数据处理结束后,再处理1001至2000条,然后再处理2001至3000条……,直到全部处理完毕?