zoukankan      html  css  js  c++  java
  • 表的约束

    表的完整性约束

    约束条件与数据类型的宽度一样,都是可选参数,主要分为以下几种:
    unsigned 无符号与int等搭配
    not null :非空约束,指定某列不能为空; 
    unique : 唯一约束,指定某列或者几列组合不能重复
    primary key :主键,指定该列的值可以唯一地标识该列记录 第一个 非空加唯一
    foreign key :外键,指定该行记录从属于主表中的一条记录,主要用于参照完整性
    auto_increment:自增必须设置最少(unique)自带非空只能对数字有效
        设置了自增必须以一一对应的格式添加数据
        如果删除了某个数据 其他不变 自带记录
        delete from t1;如果有自增id,新增的数据,仍然是以删除前的最后 id 作为起始。
        truncate table tl;数据量大,删除速度比上一条快,且直接从零开始,
    

    unsigned 无符号

    与int 搭配

    实列

    drop database day01;
    
    create database day01;
    
    use day01;
    create table d1(
    id int unsigned);
    
    insert into d1 values(1);
    

    not null 非空约束

    不可为空

    实列

    drop database day01;
    create database day01;
    use day01;
    
    create table d1(
        id int not null,
        name char(12),
        hobby set('抽烟','喝酒','烫头','搓脚')
     );
     
     insert into d1(id,name,hobby) values(
     1,'小强','抽烟,喝酒');
    

    unique 唯一约束

    注意
    null 在mysql中 不一样
    在 mysql中每次添加的null 不一样  对于mysql 数据与数据间相等就是重复 所以 就算设置了 unique 唯一 也是可以重复的
    

    实列

    create table t3(
        id int unique,
        username char(18) unique,
    );
    

    unique 联合唯一

    联合唯一 ip 加端口 不可以唯一
    联合唯一 不是ip不可以重复 也不是port不可以重复 而是 ip+port不可以重复
    

    实列

    create table t2(
    id inta primary key,
    servername char(12) not null,
    ip char(15), 
    port int,
    unique(ip, port)
    );
    

    default默认值

    create table t3(int unsigned not null default 18);
    

    primary key 主键

    primary key  主键
    一张表只能有一个
    如果不指定主键,默认是第一个非空+唯二
    联合主键primary, key(字段1,字段2)
    primary key 主键 设置
    非空+唯一 第一个设置会被设置成主键
    如果一张表中没有设置primary key 主键,那么第一个设置非空+唯一的字段会被设置成主键
    一张表中只能有一个主键
    

    实列

    create table t4(
        id int not null unique,
        username  char(18) not null unique,     age tinyint unsigned
    );
    

    联合主键

    姓名中 姓 和 名唯一

    create table t14(
            id int,
            server_name char(12),
            ip char(15),
            port char(5),
            primary key(ip,port)); 
    

    foreign 外键约束

    创建时 先创被关联的 在创关联的 没有给权限 不可以更新删除(好处避免错误)
    # 外键约束 : 对应外表中的字段至少是unique的,推荐使用主键作为关联字段   一变全变
    基本格式
    foreign key(自己的字段) references 其他表(字段)
    给权限
    on delete cascade 级联删除一般不设置
    on update cascade 级联更新
    
    
    
    # create table class3(
    #   id int primary ,
    #   cname char(12) not null unique,
    #   start_date date,
    #   period char(12),
    #   course char(12),
    #   teacher char(12)
    # );
    # create table student3(
    #   id int primary key auto_increment,
    #   name char(12) not null,
    #   gender enum('male','female'),
    #   cid int,
    #   foreign key(cid) references class3(id) on delete cascade on update cascade
    # );
    

    自增auto_increment

    自增auto_increment 
    必须设置最少  unique
    auto increment自带非空
    只能对  数字 有效
    删除了某个数据 其他不变 自带记录**
    delete from t1;如果有自增id,新增的数据,仍然是以删除前的最后 id 作为起始。
    truncate table tl;数据量大,删除速度比上一条快,且直接从零开始,
    
    不需要自己写、
    只能对数字有效自带非空约束
    并至少是unique的约束之后才能使用auto increment
    

    实列

    create table t20(id int primary key auto increment,
                    name char (12));
    设立了自增后 只可以这么写 看起来麻烦 其实不麻烦 以为数据多了 你不知道那一条
    insert into t20(name, job, age, post) values
    (' alex',' cto', 84, 'Iuffy ),
    
  • 相关阅读:
    数据量你造吗-JAVA分页
    编写高质量代码改善java程序的151个建议——[1-3]基础?亦是基础
    概率论快速学习03:概率公理补充
    概率论快速学习02:概率公理
    项目ITP(六) spring4.0 整合 Quartz 实现动态任务调度
    项目ITP(五) spring4.0 整合 Quartz 实现任务调度
    编写高质量代码改善java程序的151个建议——导航开篇
    概率论快速学习01:计数
    改善JAVA代码01:考虑静态工厂方法代替构造器
    Python快速学习10: 循环的对象及设计 (生活的规律)
  • 原文地址:https://www.cnblogs.com/saoqiang/p/12386745.html
Copyright © 2011-2022 走看看