列属性:约束,真正约束字段的是数据类型,但是数据的类型的约束很单一,需要有一些额外的约束,来更加保证数据的合法性。
列属性有:null, not null ,default,primary key ,unique key ,auto_increment,comment
空属性:
两个值:null 和not null
主键
主键:primary key,一张表中只有一个字段可以使用对应的键,用来唯一约束该字段里面的数据, 不能重复。主键也是索引
增加主键:
方案一:在创建表时直接在字段后面跟primary key 关键字(且不能为空)
create table my_pri(
name varchar(20) not null,
number char(10) primary key
) charset utf8;
优点:非常直接,确定只能使用一个字段作为主键
方案二:在创建表的时候,在所有的字段之后,使用primary key(主键字段列表)来创建主键(如果有多个字段作为主键,则称为复合主键)
-- 复合主键
create table my_pri2(
number char(10) comment '学号',
course char(10) comment '课程',
score tinyint unsigned default 0,
-- 增加主键限制:学号和课程应该是对应的,具有唯一性
primary key(number,course)
) charset utf8;
PS :复合主键还是一个主键,只不过是多个字段共同组合而成的。唯一性的标准是字段组合起来不同。
方案3:当表已经创建好之后,可以额外追加主键:通过修改表字段属性,或者直接追加。
alter table 表名 add primary key(字段列表)
前提:表中字段对应的数据是不重复的。
自动增长属性 auto_increment
删除主键
alter table 表名 drop primary key
自增长通常跟主键搭配自增长特点:
1.任何一个字段做自增长,前提是本身是一个索引(key一栏有值)。
2.自增长的数据类型必须是整型
3.一张表最多有一个自增长修改自增长:
1.自增长属性如果需要属性,则需要先删除这个自增长属性,再增加新的自增长
2.如果修改自增长的基数,则该值必须必当前自增长的值要大。
alter table 表名 auto_increment = 值
3.为什么自增从1开始,为什么自增都为1
有系统变量控制
show variables like 'auto_increment%'
![Upload 屏幕快照 2017-07-25 上午11.43.57.png failed. Please try again.]
可以修改,但修改无意义
- 删除自增长
自增长是字段的一个属性:可以通过modify来进行修改(保证字段没有aoto_increment即可)
alter table 表名 modify 字段 类型
唯一键
一张表往往有很多字段具有唯一性,但是主键只有一个。唯一键 unique key 就可以解决这样的问题。
唯一键默认允许字段为空,而且是多个字段为空。空值不做比较。
- 创建唯一键
方案一:在创建表时直接在字段后面跟unique key 或者unique 关键字
create table my_unique1(
number char(10) unique
) charset utf8;
方案二:在创建表的时候,在所有的字段之后,使用unique key(唯一键字段列表)来创建唯一键(如果有多个字段作为唯一键,则称为复合唯一键)
方案三:当表已经创建好之后,可以额外追加唯一键
alter table 表名 add unique key(字段列表)
- 唯一键约束
唯一键与主键本质相同,区别就是唯一键允许字段的值为空,并且是多个值为空。如果唯一键添加not null属性,约束和主键一样。
- 更新&删除唯一键
更新:先删除后增加(唯一键有多个,可以不删除)
删除:alter table 表名 drop index 索引名
PS:唯一键默认是用字段名作为索引名
额外知识:什么是索引?
几乎所有索引都是建立在字段之上
索引:系统根据某种算法,将已有数据或者可能将要新增的数据,单独建立一个文件,文件能够实现快速匹配数据,并且能够快速找到对应表中的记录。
索引的意义:增加查询数据的效率,约束数据的有效性。
增加索引是有前提条件,索引本身会产生索引文件,意味着会耗费磁盘空间。
如果某个字段需要作为查询的条件经常使用,这可以将该字段设置为索引。
如果某个字段需要作为数据有效性的约束,也可能使用索引(主键,唯一键)
MySQL中提供了多种索引:
1、主键索引:primary key
2、唯一索引:unique key
3、全文索引:fulltext index
4、普通索引:index
全文索引:针对文章内部的关键字进行索引,全文索引的弊端在于如何确定关键字。对英文友好,中文很难(分词 sphinx)。