MySQL约束之默认约束default与零填充约束zerofill

目录
  • 默认约束
    • 添加默认约束
    • 删除默认约束
  • 零填充约束
  • 总结

默认约束

MySQL 默认值约束用来指定某列的默认值。

添加默认约束

  • 方式1: <字段名> <数据> default <默认>;
  • 方式2: alter table 表名 modify 列名 型 default 默认;
create table t_user10 (
id int ,
name varchar(20) ,
address varchar(20) default ‘北京' -- 指定默认约束
);
-- alter table 表名 modify 列名 类型 default 默认值;
create table t_user11 (
id int ,
name varchar(20) ,
address varchar(20)
);
alter table t_user11 modify address varchar(20) default ‘北京';

删除默认约束

-- alter table <表名> modify column <字段名> <类型> default null;
alter table t_user11 modify column address varchar(20) default null;

零填充约束

1、插入数据时,当该字段的值的长度小于定义的长度时,会在该值的前面补上相应的0
2、zerofill默认为int(10)
3、当使用zerofill 时,默认会自动加unsigned(无符号)属性,使用unsigned属性后,数值范围是原值的2倍,例如,有符号为-128~+127,无符号为0~256。

比如:现在设置某个字段的长度为5,那么真实数据是1,那么显示在你的数据库的是00001;

create table t_user12 (
id int zerofill , -- 零填充约束
name varchar(20)
);
alter table t_user12 modify id int;
-- 1. 添加约束
create table t_user12 (
id int zerofill , -- 零填充约束
name varchar(20)
);
insert into t_user12 values(123, '张三');
insert into t_user12 values(1, '李四');
insert into t_user12 values(2, '王五');

总结

前面我们学习了很多的约束,这里这一个大致的总结,我们需要根据自己的应用场景去设置这些约束,最终才可以达到我们的日常需求:

-- 总结
-- 1:通过修改表结构添加主键约束

create table emp4(
eid int primary key,
name varchar(20),
deptId int,
salary double
);
-- 2:添加自增正约束
create table t_user1 (
id int primary key auto_increment,
name varchar(20)
);
-- 3:创建非空约束
create table mydb1.t_user6 (
id int ,
name varchar(20) not null, -- 指定非空约束
address varchar(20) not null -- 指定非空约束
);
-- 4:创建唯一约束
create table t_user8 (
id int ,
name varchar(20) ,
phone_number varchar(20) unique -- 指定唯一约束
);
-- 5:创建默认约束
create table t_user10 (
id int ,
name varchar(20) ,
address varchar(20) default '北京' -- 指定默认约束
);

到此这篇关于MySQL约束之默认约束default与零填充约束zerofill的文章就介绍到这了,更多相关MySQL约束 内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • MySQL 5.6 中的 TIMESTAMP 和 explicit_defaults_for_timestamp 参数

    安装MySQL时,有warning: [root@localhost mysql]# scripts/mysql_install_db --user=mysql Installing MySQL system tables...2015-08-13 14:20:09 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server

  • 详解Mysql数据库date, datetime类型设置0000-00-00默认值(default)报错问题

    现象:MySQL5.7版本之后,date, datetime类型设置默认值"0000-00-00",出现异常:Invalid default value for 'time' 原因:在命令行窗口查看当前的sql_mode配置: select @@sql_mode; 结果如下: ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE,  ERROR_FOR_DIVISION_BY_ZERO, NO_AU

  • 详解MySQL中default的使用

    NULL 和 NOT NULL 修饰符.DEFAULT 修饰符,AUTO_INCREMENT 修饰符. NULL 和 NOT NULL 修饰符 可以在每个字段后面都加上这 NULL 或 NOT NULL 修饰符来指定该字段是否可以为空(NULL), 还是说必须填上数据 (NOT NULL).MySQL 默认情况下指定字段为 NULL 修饰符,如果一个字段指定为NOT NULL, MySQL 则不允许向该字段插入空值(这里面说的空值都为 NULL),因为这是 "规定". /* 创建好友表

  • MYSQL5.7.24安装没有data目录和my-default.ini及服务无法启动的完美解决办法

    mysql官网下载地址:https://dev.mysql.com/downloads/mysql/ 新版安装包解压后,没有网上教程里面提到的data文件夹和my-default.ini,如下图所示 根据网上很多教程安装仍不成功,结果: 1.Can't change dir to 'D:\from20181022\soft\mysql-5.7.24\mysql-5.7.24-winx64\data'(Errcode : 2 - No such file or directory) 2.MySQL

  • 解决Mysql报Invalid default value for ''operate_time''错误的问题

    在数据库中执行建表语句 CREATE TABLE `sys_acl` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '权限id', `code` varchar(20) NOT NULL DEFAULT '' COMMENT '权限码', `name` varchar(20) NOT NULL DEFAULT '' COMMENT '权限名称', `acl_module_id` int(11) NOT NULL DEFAULT '0' COMMEN

  • MySQL约束之默认约束default与零填充约束zerofill

    目录 默认约束 添加默认约束 删除默认约束 零填充约束 总结 默认约束 MySQL 默认值约束用来指定某列的默认值. 添加默认约束 方式1: <字段名> <数据类型> default <默认值>; 方式2: alter table 表名 modify 列名 类型 default 默认值; create table t_user10 ( id int , name varchar(20) , address varchar(20) default '北京' -- 指定默认

  • 详解MySQL的字段默认null对唯一索引的影响

    目录 正文 看一下为何唯一索引为影响insert速度 MySQL版本:在docker中启动一个mysql 假设只存在邮箱注册: insert数据 经验 正文 在日常业务开发中,会经常遇到需要保证唯一性的数据业务,如用户注册业务.一般注册业务中允许用户以手机号或email注册账号,且需要保证唯一,不允许重复注册.当用户输入手机号或email登录时,程序会判定输入信息的存在与否性,存在则走登录,不存在则走注册.而保证唯一性就不仅仅需要在程序端做判断,还需要MySQL的唯一索引去做最后一道防线.那么唯

  • MySQL安装后默认自带数据库的作用详解

    大家在学习MySQL时,安装后都会发现里边已经自带了几个默认的数据库,我装的MySQL5.5里边自带六个数据库 网上查了一些资料对这几个数据库的功能做一下学习. 1.information_schema 这个库中有很多的表 information_schema数据库表说明: SCHEMATA表:提供了当前mysql实例中所有数据库的信息.是show databases的结果取之此表. TABLES表:提供了关于数据库中的表的信息(包括视图).详细表述了某个表属于哪个schema,表类型,表引擎,

  • Linux下安装Python3和django并配置mysql作为django默认服务器方法

    我的操作系统为centos6.5 1  首先选择django要使用什么数据库.django1.10默认数据库为sqlite3,本人想使用mysql数据库,但为了测试方便顺便要安装一下sqlite开发包. yum install mysql mysql-devel #为了测试方便,我们需要安装sqlite-devel包 yum install sqlite-devel 2  接下来需要安装Python了,因为Python3已经成为主流,所以接下来我们要安装Python3,到官网去下载Python3

  • mysql时间字段默认设置为当前时间实例代码

    目录 mysql时间字段默认为当前时间 附:mysql 字段 default 默认赋值 当前系统时间 总结 mysql时间字段默认为当前时间 1.直接在创建表时添加该列并声明默认值,如下: CREATE TABLE `table1` ( `id` int(11) NOT NULL, `createtime` timestamp NULL default CURRENT_TIMESTAMP, `updatetime` timestamp NULL default CURRENT_TIMESTAMP

  • mysql修改数据库默认路径无法启动问题的解决

    前言 mysql 修改数据库默认路径时出现服务无法启动,检查日志发现报文件权限的错误. 对于更改后的目录已经设置mysql为目录的owner啦呀!且命令行下直接启动数据库就一切正常. 祭出万能的Google ,最后在一篇老外的帖子中找到了原因--SELINUX 策略问题! 凡是后台服务都需要有对相应目录的对应权限,而 mysql 的默认路径/var/lib/mysql 已经添加了相应的策略,修改路径后由于没有相应的策略,导致后台进程读取文件被selinux阻止,从而出现权限错误! 方法如下: m

  • Java8默认方法Default Methods原理及实例详解

    这篇文章主要介绍了Java8默认方法Default Methods原理及实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Java 8 引入了新的语言特性--默认方法(Default Methods). Default methods enable new functionality to be added to the interfaces of libraries and ensure binary compatibility wit

  • 解决JPA save()方法null值覆盖掉mysql预设的默认值问题

    目录 JPA save()方法null值覆盖掉mysql预设的默认值 覆盖原因 解决办法 data jpa动态插入(null为sql默认值,utime自动更新 ) JPA save()方法null值覆盖掉mysql预设的默认值 覆盖原因 save()方法在没有参数传进去的时候默认是null值,而mysql表中该字段设置为可以为null值,这时虽然我们设置了默认值,可null值还是会把默认值覆盖掉. 解决办法 将该字段设置为不允许null值即可,这样null值就会被替换为默认值. data jpa

  • pytorch中的nn.ZeroPad2d()零填充函数实例详解

    在卷积神经网络中,有使用设置padding的参数,配合卷积步长,可以使得卷积后的特征图尺寸大小不发生改变,那么在手动实现图片或特征图的边界零填充时,常用的函数是nn.ZeroPad2d(),可以指定tensor的四个方向上的填充,比如左边添加1dim.右边添加2dim.上边添加3dim.下边添加4dim,即指定paddin参数为(1,2,3,4),本文中代码设置的是(3,4,5,6)如下: import torch.nn as nn import cv2 import torchvision f

  • python中numpy矩阵的零填充的示例代码

    目录 需求: 一.再new一个更大的所需要的矩阵大小 二.pad函数 其他想法 需求: 对于图像处理中的一些过程,我需要对读取的numpy矩阵进行size的扩充,比如原本是(4,6)的矩阵,现在需要上下左右各扩充3行,且为了不影响数值计算,都用0填充. 比如下图,我有一个4x5大小的全1矩阵,但是现在我要在四周都加上3行的0来扩充大小,最后扩充完还要对原区域进行操作. 方法: 想到了几种方法,记录一下. 一.再new一个更大的所需要的矩阵大小 a = np.ones((4,5)) #假设原矩阵是

随机推荐