zoukankan      html  css  js  c++  java
  • 枚举与集合类型 约束条件

    枚举与集合类型

      枚举(enum) 限制某个字段能够存储的数据内容
      集合(set) 限制某个字段能够存储的数据内容

    create table user(
          id int,
        name char(16),
        gender enum('male','female','others')
      );
    
      insert into user values(1,'jason','xxx')  # 报错
      insert into user values(2,'egon','female')  # 正确!
      
      
      create table teacher( 
        id int,
        name char(16),
        gender enum('male','female','others'),
        hobby set('read','sleep','sanna','dbj')
      );
      insert into teacher values(1,'egon','male','read,sleep,dbj')  # 集合也可以只存一个

    约束条件

    not null 不能为空
    default 给某个字段设置默认值(当用户写了的时候用用户的,当用户没有写就用默认值)
    create table t17(id int,name char(16) default 'jason');

    往表中插入数据的时候 可以指定字段进行插入 不需要全部都插
    insert into t17(name,id) values('egon',2);

    unique 唯一
    单列唯一 限制某一个字段是唯一的
    联合唯一(在语句的最后 用括号的形式 表示哪几个字段组合的结果是唯一的)
    ip
    port

      create table server(
      id int,
      ip char(16),
      port int,
      unique(ip,port)
      )

    primary key 主键
    限制效果跟 not null + unique 组合效果一致 非空且唯一

    create table t18(id int primary key);


    primary key也是innodb引擎查询必备的索引
    索引你就把当成书的目录

    innodb引擎在创建表的时候 必须要有一个主键
    当你没有指定主键的时候
    1.会将非空切唯一的字段自动升级成主键
    2.当你的表中没有任何的约束条件 innodb会采用自己的内部默认的一个主键字段
    该主键字段你在查询时候是无法使用的
    查询数据的速度就会很慢
    类似于一页一页的翻书

    create table t19(
    id int,
    name char(16),
    age int not null unique,
    addr char(16) not null unique
    );

    主键字段到底设置给谁呢???
    通常每张表里面都应该有一个id字段
    并且应该将id设置为表的主键字段

    联合主键:多个字段联合起来作为表的一个主键,本质还是一个主键!!!
    !!!!!!!!!!!!!!!!!ps:innodb引擎中一张表有且只有一个主键!!!!!!!!!!!!!!!!!!!!!!!



    create table t20(
    ip char(16),
    port int,
    primary key(ip,port)
    );
    desc t20;


    主键字段应该具备自动递增的特点
    每次添加数据 不需要用户手动输入
    auto_increment 自动递增
    create table t21(id int primary key auto_increment,name varchar(16));

    create table t22(id int primary key,name varchar(16));


    delete from 仅仅是删除数据 不会重置主键
    truncate 初始化表 会重置主键














    趁自己还没死 多折腾折腾
  • 相关阅读:
    Eclipse装svn的第三种方式
    JTable的表头渲染
    awt/swing的注意事项
    粘贴外部文本到JTable中
    关于double类型相乘的精度问题
    怎么切换字符集来编译RCP工程
    怎么切换不同语言启动Teamcenter
    关于Teigha的使用记录
    如何清空JTree的节点
    Oracle-SQL 小题
  • 原文地址:https://www.cnblogs.com/lddragon/p/11380616.html
Copyright © 2011-2022 走看看