美文网首页
MySQL-5列属性

MySQL-5列属性

作者: 金克拉拉拉拉 | 来源:发表于2017-11-22 19:11 被阅读0次

    MySQL中的列属性

    真正约束字段的是数据类型,但是数据类型的越是很单一,需要有一些额外的约束,更加保证数据的合法性

    1.NULL

    null / not null 约束是否为空

    理论上来讲任何数据都不应该为NULL 空数据没有意义也没有办法参与运算

    2.comment 列描述 、注释

    该属性没有实际含义,专门用来描述字段,会根据表创建语句保存

    3.default,默认值

    insert into my_default (name) values('foo') insert into my_default values ('foooooo',default);

    4.主键 primary key 

    一张表中只能有一个字段可以使用对应的键,用来唯一的约束该字段里面的数据,不能重复,这种称之为主键,一张表中只能有一个主键

    增加主键 

    SQL中有多种方式给表增加主键 

    --1.创建表时 直接在字段后添加primary key关键字 ,设置关键字后其自动not NULL;

    create table 时设置关键字 primary key

    缺点 只能使用一个字段作为主键

    --2.在创建表时,在所有字段之后,使用primary key(主键创建列表)来创建主键,若有多个字段作为主键,可以是复合主键

    创建复合主键 primary key(字段列表)

    --3.当表已经创建好之后,额外追加主键可以通过修改表字段属性,或者直接追加

    直接追加 alter table 表名 add primary key(字段列表);

    追加主键

    追加主键前提是表中字段对应的数据本身是独立的(不重复)

    修改表 alter table 表名 modify 字段名 字段类型 primary key;

    --4.主键约束

    主键对应的字段中的数据不允许重复,一旦重复,数据操作失败(增、改)

    单主键 和 复合主键的冲突

    --5.更新和删除主键 

    主键必须先删除,才能增加 

    alter table 表名 drop primary key

    alter table king_class drop primary key;

    --6.主键分类

    在实际创建表的过程中,很少使用真实业务数据作为主键字段,大部分时候时候使用逻辑性字段作为主键,字段没有业务含义,值是什么没有关系,将这种字段成为逻辑主键

    id为逻辑主键 和业务无关,且自增长

    5.自动递增 auto_increment

     当对应的字段不给值或者给默认值或NULL时 会自动被系统触发,系统会从当前字段中已有的最大值再进行+1操作,得到一个新的不同的字段,so 常和 primary key搭配 

    而自增涨字段已经上升进表结构,不会随着数据的删除而进行改变

    --1.任何一个字段要做子增长必须前提是本身是一个索引(key 一栏有值)

    --2.自增长字段必须是整形数字类型

    --3.一张表最多只有一个子增长字段

    auto_increment 属性的使用

    --4.触发自增长

    不给值、NULL、Defualt

    --5.修改自增长

    子增长如果涉及到字段改变,需先删除自增长,然后增加,一张表只能有一个自增长

    修改当前自增长已经存在的值,修改只能比当前已有的子增长的最大值大,不能小于当前该值,否则不生效

    alter table 表名 auto_increment = 值;

    --6.删除表字段时自增长导致的问题

    当删除表内字段后,自增长不会为之发生改变,比较极端的例子为,若将表内字段清空,自增长不改变

    删除字段后 自增长不随之改变

    --7.删除自增长

    自增长是字段的一个属性 通过modify 进行修改,保证字段没有auto_increment 即可

    但是注意 有主键时,不要重复添加主键

    6.唯一键

    一张表中需要很多字段有唯一性,数据不能重复,但是一张表中只能有一个主键:唯一键(unique key)就可以解决表中有多个字段需要唯一性约束的问题

    唯一键 本质本质与主键差不多 :唯一键默认的允许自动为空 而且可以多个为空,空字段不参与唯一性比较

    --1.在创建表时字段后增加关键字 unique / unique key 

    创建表时直接添加关键字unique key

    --2.使用unique key(字段列表)增加唯一键

    与添加primary key类似

    添加unique key 时需要注意 not null 否则unique 会添加失败

    --3.追加唯一键

    alter table 表名 add unique key (字段列表);

    --4.唯一键约束

    若唯一键也不允许为空,与主键的约束作用是一致的

    唯一键与主键本质相同,唯一的区别就是唯一键默认允许为null 而且是多个为null

    --5.更新 & 删除 unique key 

    alter table 表名 drop index 索引名

    查看索引名 show create table 表名 发现唯一键默认字段名为索引名

    alter table 表名 drop index 索引名

    7.索引 (几乎所有的索引都是建立在字段之上)

    系统根据某种算法,将已有的数据(未来可能新增的数据),单独创建一个文件,文件能够实现快速的匹配数据,并且能够快速找到对应表中对应的记录

    索引的意义在于 提升查询数据是效率,约束数据的有效性

    索引本身会产生索引文件,非常消耗磁盘空间,有时候甚至可能比数据文件还要大

    若某个字段需要作为查询的条件经常使用,那么可以使用索引(一定会想办法增加)

    若某个字段需要进行数据的有效约束,也可能使用索引(primary key or unique key)

    MySQL中提供了多种索引

    1.primary key

    2.unique key

    3.全文索引 fulltext index 针对文章内部的关键字进行索引 最大的问题 在于如何确定关键字 

    4.普通索引 index

    相关文章

      网友评论

          本文标题:MySQL-5列属性

          本文链接:https://www.haomeiwen.com/subject/abiwvxtx.html