• JAVA基础--MySQL(二)


     数据库约束

      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 代替。

        

  • 相关阅读:
    史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)
    漫谈《大型网站技术架构》
    如何使用MongoDB+Springboot实现分布式ID?
    IOS UIView 01-View开始深入 绘制像素到屏幕上
    IOS 多线程04-GCD详解 底层并发 API
    IOS 多线程05-OperationQueue 、GCD详解
    IOS 多线程02-pthread 、 NSThread 、GCD 、NSOperationQueue、NSRunLoop
    IOS 公共类-数字处理
    React Native02-开始运行 Android篇
    React Native01-开始 Windows环境安装配置篇
  • 原文地址:https://www.cnblogs.com/workstation-liunianguowang/p/9557721.html
Copyright © 2020-2023  润新知