01.主键约束:
-- 主键约束
-- 使某个字段不重复且不得为空,确保表内所有数据的唯一性
CREATE table user( id int primary key, name varchar(20) ); show tables; describe user ;
-- 联合主键
-- 联合主键中的每个字段都不能为空,并且加起来不能和已设置的联合主键重复
DROp table user ; CREATE table user ( id int , name varchar (20), passward varchar (20), primary key(id,name) ); describe user ;
可以看到下面两个字段都为primary
-- 自增约束
-- 自增约束的主键由系统自动递增分配
DROP table user ; CREATE table user ( id int auto_increment, name varchar (20), primary key (id) ); describe user ;
-- 添加主键约束
-- 如果忘记设置主键,还可以通过SQL语句设置(两种方式):
DROP table user ; CREATE table user ( id int , name varchar (20) ); describe user ;
添加主键约束:
ALTER table user add primary key (id);
或者ALTER table user modify id int primary key ;
ALTER table user add primary key (id); describe user ;
删除一下表
DROP table user ;
02.索引约束:
-- 建表时创建唯一索引
CREATE table user ( id int , name varchar (20), unique(name) ); describe user ;
-- 添加唯一索引
-- 如果建表时没有设置唯一索引,还可以通过SQL语句设置(两种方式):
DROP table user ; CREATE table user ( id int , name varchar (20) ); describe user ;
使用ALTER table user add unique (name)或者 ALTER table user modify name varchar (20) unique添加索引
ALTER table user add unique (name); describe user ;
-- 删除索引
ALTER table user drop index name ; describe user ;
插入一条数据进行查看:
INSERT into user values (12,null); SELECT * FROM user ;
这边发现索引是可以为NULL的,注意区分主键和索引的区别
主键是一种约束,唯一索引是一种索引,两者在本质上是不同的。
主键创建后一定包含一个唯一性索引,唯一性索引并不一定就是主键。
唯一性索引列允许空值,而主键列不允许为空值。
主键列在创建时,已经默认为非空值 + 唯一索引了。
主键可以被其他表引用为外键,而唯一索引不能。
一个表最多只能创建一个主键,但可以创建多个唯一索引。
主键和唯一索引都可以有多列。



