今天去面试 Java, 被面试官问了这道很基础的概念题,一时很是懵逼,平时用索引用的很多,但是约束的概念并不是特别清晰 (其实工作中经常用到,结果却不知道那玩意被定义为约束,尴尬),完了,面试被问后,不能给一个很全面的总结。
什么是约束
作用:是为了保证数据完整性的一种机制。
mysql 中的主要约束有下面这些:
-
1.非空约束:
not null
-
2.唯一约束:
unique
unique
约束的字段必须是唯一的,但是null
除外
- 3.主键约束:
primary key
主键约束 = not null + unique
-
4.外键约束:
foreign key
(互联网项目中不推荐使用) -
5.自增约束:
auto_increment
-
6.默认约束:
default
-
7.检查性约束:
check
作用:保证列中的值符合指定条件
什么是索引
作用:用来快速定位特定数据,提高查询效率。索引的类型分为以下几点:
-
1.主键索引 (primary key)
-
2.唯一索引(unique)
-
3.普通索引 (index)
-
4.全文索引 (full text)
总结
约束和索引的区别在于:约束是为了保证表数据的完整性,索引是为了提高查询效率。