(1).null和not null

  not null不可以插入null,但可以插入空值。

  数值型、字符型、日期型都可以插入null,但只有字符型可以插入空值。

  使用方法如下:

mysql> create database test_db;
Query OK, 1 row affected (0.00 sec) mysql> use test_db;
Database changed
mysql> create table `notnull_table`(name varchar(20) not null);
Query OK, 0 rows affected (0.02 sec) mysql> insert into notnull_table values (null);  //设置not null的列是不允许插入null的
ERROR 1048 (23000): Column 'name' cannot be null
mysql> insert into notnull_table values ('');  //但可以插入空值
Query OK, 1 row affected (0.00 sec) mysql> insert into notnull_table values ('Jack');
Query OK, 1 row affected (0.01 sec)

  空值与null的区别:空值不占用空间,但null占用空间(计算1字节)。

  not null比null的效率高。这是因为null不是空值,占用空间,所以进行字段比较时,null会参与字段比较,对效率有一部分影响。而且索引不会存储null值,索引的效率会下降很多。

(2).default

  defalut,默认值。

mysql> create table default_table(id int not null,name varchar(20) not null default 'test');
Query OK, 0 rows affected (0.03 sec) mysql> insert into default_table(id) values(1);
Query OK, 1 row affected (0.00 sec) mysql> select * from default_table;
+----+------+
| id | name |
+----+------+
| 1 | test |
+----+------+
1 row in set (0.00 sec)

  注意:如果字符型字段没有设置default,可以为null时,默认为null;不可以为null时,报错。enum单独处理,默认为第一个元素。时间字段没有default,默认为当前时间。

(3).auto_increment

  auto_increment,自动增长,每次自动加1,只能用于数值型。不过用上auto_increment好像就必须为主键,不然mysql会报1075的错误信息。

mysql> create table auto_table(id bigint auto_increment primary key,name varchar(20));
Query OK, 0 rows affected (0.02 sec) mysql> insert into auto_table(name) values('name');
Query OK, 1 row affected (0.00 sec) mysql> select * from auto_table;
+----+------+
| id | name |
+----+------+
| 1 | name |
+----+------+
1 row in set (0.00 sec)

(4).扩展:清除表数据,包括auto_increment值

  一般情况下,删除表数据会使用delete命令,但是delete是没有办法清除auto_increment值的。如下:

mysql> select * from auto_table;
+----+------+
| id | name |
+----+------+
| 1 | name |
+----+------+
1 row in set (0.00 sec) mysql> delete from auto_table;
Query OK, 1 row affected (0.03 sec) mysql> insert into auto_table(name) values('name2');
Query OK, 1 row affected (0.01 sec) mysql> select * from auto_table;
+----+-------+
| id | name |
+----+-------+
| 2 | name2 |
+----+-------+
1 row in set (0.00 sec)

  这时候就需要使用truncate命令。如下:

mysql> select * from auto_table;
+----+-------+
| id | name |
+----+-------+
| 2 | name2 |
+----+-------+
1 row in set (0.00 sec) mysql> truncate table auto_table;
Query OK, 0 rows affected (0.02 sec) mysql> insert into auto_table(name) values('name3');
Query OK, 1 row affected (0.01 sec) mysql> select * from auto_table;
+----+-------+
| id | name |
+----+-------+
| 1 | name3 |
+----+-------+
1 row in set (0.00 sec)

  注意:truncate会清除表的所有数据。如果只想清除auto_increment值,不要使用该命令。

(5).扩展

  其实除了以上几个,还存在检查约束、外键约束、主键约束和唯一约束,而主键约束和唯一约束也是索引。

Mysql字段修饰符(约束)的更多相关文章

  1. mysql字段约束-索引-外键---3

    本节所讲内容: 字段修饰符 清空表记录 索引 外键 视图 一:字段修饰符 (约束) 1:null和not null修饰符   我们通过这个例子来看看 mysql> create table wo ...

  2. 2-16 MySQL字段约束-索引-外键

    一:字段修饰符 1:null和not null修饰符 我们通过这个例子来看看 mysql> create table worker(id int not null,name varchar(8) ...

  3. Java中的 修饰符

    java中的修饰符分为类修饰符,字段修饰符,方法修饰符. 根据功能的不同,主要分为以下几种. 1.权限访问修饰符  访问权限的控制常被称为具体实现的隐藏 把数据和方法包进类中,以及具体实现的隐藏,常共 ...

  4. 对于形式参数只能用final修饰符,其它任何修饰符都会引起编译器错误

    在Java中修饰符总共有一下几种: 1.访问控制修饰符    分别有:public private protected,缺省 2.其它修饰符      分别有:abstract,final,stati ...

  5. private static final 修饰符

    java修饰符分类修饰符字段修饰符方法修饰符根据功能同主要分下几种 1.权限访问修饰符 public,protected,default,private,四种级别修饰符都用来修饰类.方法和字段 包外 ...

  6. java 修饰符总结

    java中的修饰符分为类修饰符,字段修饰符,方法修饰符.根据功能的不同,主要分为以下几种.    1.权限访问修饰符    public,protected,default,private,这四种级别 ...

  7. Java基本修饰符

    java中的修饰符分为类修饰符,字段修饰符,方法修饰符.根据功能的不同,主要分为以下几种: *权限访问修饰符(可以用来修饰类.方法和字段) 适用范围<访问权限范围越小,安全性越高> 访问权 ...

  8. mysql字段约束

    为了确保数据的完整性和唯⼀性,关系型数 据库通过约束机制来实现目. 一. unique 唯一性约束    : 值不可重复: 二. not null    非空约束    : 值不可为空: 三. def ...

  9. MySQL 聚合函数(二)Group By的修饰符——ROLLUP

    原文为MySQL 5.7 官方手册:12.20.2 GROUP BY Modifiers 一.ROLLUP 修饰符的意义 GROUP BY子句允许添加WITH ROLLUP修饰符,该修饰符可以对分组后 ...

随机推荐

  1. 利用videojs自动播放下一个

    利用videojs自动播放下一个 一.总结 一句话总结: 在视频放完的ended方法里面,指定video的src,然后this.play()放视频就好 vue来控制视频的链接也是蛮不错的 this.o ...

  2. P2P system: Napster

    Napster structure client machines之所以叫peers是因为对于server来说这些machines是平等对待的 当你upload一首歌曲如PennyLane.mp3时, ...

  3. 关于前端 jQuery 面试的知识点

    参考一个博主整理的一些前端 jQuery 的一些面试题 参考博客:https://www.cnblogs.com/dashucoding/p/11140325.html 参考博客:https://ww ...

  4. 04_Tutorial 4: Authentication & Permissions 认证和权限

    1.认证和权限 0.文档 https://www.django-rest-framework.org/tutorial/4-authentication-and-permissions/ https: ...

  5. 【解题报告】CSP2019-S D1T1 格雷码

    题目链接:https://www.luogu.org/problem/P5657 话说这道题怎么是道橙题啊. 基本思路 因为n位格雷码的前2n-1位就是n-1位格雷码前面加了一位‘0’,所以可以把它们 ...

  6. text-transform

    text-transform 语法: text-transform:none | capitalize | uppercase | lowercase |  默认值:none 适用于:所有元素 继承性 ...

  7. 十.iSCSI网络磁盘

    默认端口:3260 • Internet SCSI,网际SCSI接口 – 一种基于C/S架构的虚拟磁盘技术 – 服务器提供磁盘空间,客户机连接并当成本地磁盘使用   • backstore,后端存储 ...

  8. jQuery相关方法8-----解绑事件

    一.解绑事件方法unbind() 用什么方式绑定的事件,最好用对应的方式解绑事件 unbind("事件名字")括号里写上事件名字,就会解除这个事件 unbind()括号里没有参数就 ...

  9. 【概率论】5-6:正态分布(The Normal Distributions Part II)

    title: [概率论]5-6:正态分布(The Normal Distributions Part II) categories: - Mathematic - Probability keywor ...

  10. 欢迎使用CSDN的markdown编辑器

    以下是蒻鞫第一次打开CSDN-markdown编译器的温馨提示,感觉CSDN好贴心,不作任何用途,仅为纪念,若存在违法侵权行为,请联系留言,立即删除. List item 这里写 欢迎使用Markdo ...