• 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';
  • 相关阅读:
    SQL注入攻击三部曲之进阶篇
    SQL注入攻击三部曲之入门篇
    父页面(JSP页面)传参数到子页面(JSP页面)
    Flex弹出窗口请求Action函数
    dojo表格分页插件报错
    堆栈溢出问题 调试到位置(test dword ptr [eax],eax ; probe page.)局部数组变量定义所分配的最大空间为1M
    改装的表格
    FusionCharts饼图中label值太长怎么解决
    dojo中的dojox/grid/EnhancedGrid表格报错
    dojo表格分页之各个参数代表的意义(一)
  • 原文地址:https://www.cnblogs.com/lixingwu/p/7199424.html
Copyright © 2020-2023  润新知