数据库约束

  1.基础限制

    ① 单一表内字节量总和不能超过65535,null 占用一个字节空间

    ② varchar存储255 以内字节占用一个字节表示长度,255以上自己则占用两个字节表示长度

    ③ 例如int(10)这里10指的是10字节宽度并非数字10,且 utf8下 一字符=3字节,gbk下一字符=2字节 ,具体如下

  数字类型

       根据字节数即可算出表示的范围了 
  • TINYINT                                    1 字节
  • SMALLINT                                 2 个字节
  • MEDIUMINT                              3 个字节
  • INT                                           4 个字节
  • INTEGER                                   4 个字节
  • BIGINT                                      8 个字节
  • FLOAT(X)                                  4 如果 X < = 24 或 8 如果 25 < = X < = 53
  • FLOAT                                       4 个字节
  • DOUBLE                                    8 个字节
  • DOUBLE PRECISION                  8 个字节
  • REAL                                         8 个字节
  • DECIMAL(M,D)                          M字节(D+2 , 如果M < D)
  • NUMERIC(M,D)                          M字节(D+2 , 如果M < D)
     日期和时间类型
  • DATE                                        3 个字节
  • DATETIME                                 8 个字节
  • TIMESTAMP                               4 个字节
  • TIME                                         3 个字节
  • YEAR                                         1 字节
     字符串类型
  • CHAR(M)                                        M字节,1 <= M <= 255
  • VARCHAR(M)                                 L+1 字节, 在此L <= M和1 <= M <= 255
  • TINYBLOB, TINYTEXT                     L+1 字节, 在此L< 2 ^ 8
  • BLOB, TEXT                                   L+2 字节, 在此L< 2 ^ 16
  • MEDIUMBLOB, MEDIUMTEXT         L+3 字节, 在此L< 2 ^ 24
  • LONGBLOB, LONGTEXT                 L+4 字节, 在此L< 2 ^ 32
  • ENUM('value1','value2',...)                1 或 2 个字节, 取决于枚举值的数目(最大值65535)
  • SET('value1','value2',...)                    1,2,3,4或8个字节, 取决于集合成员的数量(最多64个成员)

  2.主键

    主键关键字primary key ,规则 唯一,非空,索引凭据

    创建方式,例如:

      create table tb1(id int primary key not null auto_increment)engin=innodb chrset=utf8;

      create table tb1(id int not null auto_increment , primary key(id) )engin=innodb chrset=utf8;

    修改主键时需要 使用关键字 modify ,也可设置主键起始值,或者给主键赋值,但是主键赋值之后再次插入数据时候会根据末尾ID进行自增+1

    自增主键可设置起始值

      create table tb1(id int not null auto_increment , primary key(id) )engin=innodb auto_increment=9 chrset=utf8;

    修改主键使用drop关键字,修改主键使用modify

      alter table tb1 drop primary key;

      alter table tb1 modify id int;--这里是去掉了自增

    

    

    查看刚刚生成的主键 last_insert_id() 函数,类似鱼SQL中的 select scope_identity;

      select last_insert_id();   

      

  3.外键

    外键关键字 foreign key(class_id) references tb1(id) ,外键可以为空,可以重复,不符合外键约束值则无法添加,且外键关系是相互的其中一方无效则外键无效

      create table class(id int not null primary key auto_increment,name varchar(20))engine=innodb charset=utf8;

      create table student(id not null primary key auto_increment,name varchar(20),class_id int,foreign(class_id) references class(id))engine=innodb charset=utf8;

      insert into class (name) values('a','b','c');

      insert into student(name,class_id) values('1',1),('2',2),('3',null);

    

    

    

    

    删除外键使用关键字drop,添加外键使用add关键字,删除外键索引index

    注意删除外键之前需要查看外键,直接删除外键名称则找不到外键

    

    

    

  4.非空

    限制字段不润许取NULL值,但是可以存空字符,修改非空与否 与修改表字段相同只是不添加限制条件

    

  ·5.唯一

    限制字段取值,不能取出重复的值,允许null值,若字段中村财重复值则无法加入唯一,当然也可以设置多个字段同时拥有唯一约束

    

  6.检测

    check,该约束在数据插入的时候并不生效,所以一般忽略不计用法类似判断条件,一般会使用enum枚举来代替或者触发器trigger 。。then 代替。

    

JAVA基础--MySQL(二)的更多相关文章

  1. java 基础知识二 基本类型与运算符

    java  基础知识二 基本类型与运算符 1.标识符 定义:为类.方法.变量起的名称 由大小写字母.数字.下划线(_)和美元符号($)组成,同时不能以数字开头 2.关键字 java语言保留特殊含义或者 ...

  2. java基础(二章)

    java基础(二章) 一,变量 1.变量是内存中的一个标识符号,用于存储数据 2.变量命名规则 l  必须以字母.下划线 _ .美元符号 $ 开头 l  变量中,可以包括数字 l  变量中,不能出现特 ...

  3. Java基础十二--多态是成员的特点

    Java基础十二--多态是成员的特点 一.特点 1,成员变量. 编译和运行都参考等号的左边. 覆盖只发生在函数上,和变量没关系. Fu f = new Zi();System.out.println( ...

  4. java基础-多线程二

    java基础-多线程二 继承thread和实现Runnable的多线程每次都需要经历创建和销毁的过程,频繁的创建和销毁大大影响效率,线程池的诞生就可以很好的解决这一个问题,线程池可以充分的利用线程进行 ...

  5. JAVA基础(二)—— 常用的类与方法

    JAVA基础(二)-- 常用的类与方法 1 Math类 abs ceil floor 绝对值 大于等于该浮点数的最小整数 小于等于该浮点数的最大整数 max min round 两参数中较大的 两参数 ...

  6. Java实习生常规技术面试题每日十题Java基础(二)

    目录 1. JAVA 的反射机制的原理. 2.静态嵌套类(Static Nested Class)和内部类(Inner Class)的不同? 3.如何将String类型转化成Number类型. 4.什 ...

  7. Java基础系列二:Java泛型

    该系列博文会告诉你如何从入门到进阶,一步步地学习Java基础知识,并上手进行实战,接着了解每个Java知识点背后的实现原理,更完整地了解整个Java技术体系,形成自己的知识框架. 一.泛型概述 1.定 ...

  8. Java 基础(二)| 使用 lambad 表达式的正确姿势

    前言 为跳槽面试做准备,今天开始进入 Java 基础的复习.希望基础不好的同学看完这篇文章,能掌握 lambda 表达式,而基础好的同学权当复习,希望看完这篇文章能够起一点你的青涩记忆. 一.什么是 ...

  9. Java基础(十二)--clone()方法

    Clone在Java中就是用来复制对象,通过分配一个和源对象相同大小的内存空间,然后创建一个新的对象,那么他和=的区别在哪? 通过=实现对象拷贝: @Data @NoArgsConstructor @ ...

  10. Java基础教程——二维数组

    二维数组 Java里的二维数组其实是数组的数组,即每个数组元素都是一个数组. 每个数组的长度不要求一致,但最好一致. // 同样有两种风格的定义方法 int[][] _arr21_推荐 = { { 1 ...

随机推荐

  1. java版的状态机实现

    状态机适用场景: C的操作,需要等到A.B的两个操作(A.B顺序操作),那就需要在 A.B之间创建一个状态机(state machine),C的操作需要状态机达到某一个状态才能进行 1. Overvi ...

  2. ML学习笔记之LATEX数学公式基本语法

    作者:@houkai本文为作者原创,转载请注明出处:https://www.cnblogs.com/houkai/p/3399646.html 0x00 概述 TEX 是Donald E. Knuth ...

  3. 思维导图xmind的文档保存问题

    如果文件名相同,可能最新的文档覆盖以前的.当前活动文档只能有一个,如果有多个,保存后,其他活动文档也被更新了. 新建一个空白doc文档,仅仅是文件名,作为附件导入到xmind中,在xmind中保存后, ...

  4. C#读写设置修改调整UVC摄像头画面-焦点

    有时,我们需要在C#代码中对摄像头的焦点进行读和写,并立即生效.如何实现呢? 建立基于SharpCamera的项目 首先,请根据之前的一篇博文 点击这里 中的说明,建立基于SharpCamera的摄像 ...

  5. Julie D. Saba:儿童肿瘤学是一个令人惊奇的领域

    编者按 作为一名儿童肿瘤学家,工作中充满了挑战与机遇.近几十年来,世界各地的儿童肿瘤的发病率呈持续上升的趋势.许多人认为这不仅是由于诊断水平的提高,而且是因为儿童肿瘤的潜在风险也确实在增加.据英国儿童 ...

  6. 【JVM学习笔记一】Java内存区域

    1. 运行时数据区域 1) 程序计数器 | 线程私有,存储线程运行时所执行字节码的行号,实现分支.循环.跳转.异常处理.线程恢复等基础功能 | Java方法,记录正在执行的虚拟机字节码指令的行号:Na ...

  7. Android源码分析(三)-----系统框架设计思想

    一 : 术在内而道在外 Android系统的精髓在源码之外,而不在源码之内,代码只是一种实现人类思想的工具,仅此而已...... 近来发现很多关于Android文章都是以源码的方向入手分析Androi ...

  8. 7 静态分析Android

    静态分析两种方式: 1. 阅读反汇编的Dalvik字节码:使用IDA 分析dex文件或baksmali反编译的smali文件 2. 阅读反汇编的Java源码:使用dex2jar生成jar文件,用jd- ...

  9. 一款APP的完整开发流程 (转载)

    来源:https://www.sohu.com/a/239089829_100063940 近年来,在市场和政策的双轮驱动下,我国服务外包产业快速发展,服务智能化趋势显现.随着企业核心业务外包活动的日 ...

  10. Jquery。

    Jquery: 1.概念:JavaScript的框架.本质上就是一些JS文件,封装了JS的原生代码而已. 2.快速入门:下载Jquery -导入文件-使用. 3.JQ对象和JS对象的区别. * :Jq ...