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
网友评论