网络科技公司网站/网络营销课程培训课程
MySql之索引和主键
为啥把主键单独放出来:是因为长时间只写select语句,导致对表结构都失去了基础的了解,会对主键和索引的概念有疑问,其实主键是索引的一种,也是一种唯一索引,要求每一个主键的值都是唯一的
索引创建的条件:被频繁作为查询条件的列才应该被定义为索引,也就是where后经常出现的列名
索引越多越好?:小的时候考试一旦有这种越怎么样越怎么样的选项,老师告诉我们千万不要选,为啥呢,我们在更新表的时候还得更新索引,同样会损失效率
索引>唯一索引>主键
索引的创建
拿来一张平时练手的表的创建语句,在最后有一段create index,就是在创建索引,语法:
create index 索引名字(UK即为unique key,独一无二的) on 表名(列名)
on m_user (username)
create table m_user
(id bigint not nullprimary key,username varchar(64) null,avatar varchar(255) null,email varchar(64) null,password varchar(64) null,status int(5) not null,created datetime null,last_login datetime null
);create index UK_USERNAMEon m_user (username);
索引的删除
drop index UK_USERNAME on m_user;
唯一索引的创建
只不过是在索引的创建语句中新增一个unique
create unique index UK_USERNAME on m_user(username);
唯一索引的删除
和删除索引是一样的
drop index UK_USERNAME on m_user;
主键的创建
一个表只能有一个主键,而且这个主键是不可以为空值的
再拿来一张平时使用的数据库表的建表语句,最后一句的alter语句即为创建主键,语法:
alert table 表名 add primary key(列名)
create table tai1_cases
(id int auto_increment,group_id int not null,sort_id int null,case_name char(128) not null,yn int default 1 not null,constraint tai1_cases_id_uindexunique (id)
);create index tai1_cases_group_id_indexon tai1_cases (group_id);alter table tai1_casesadd primary key (id);
主键的删除
alter table tai1_cases drop primary key ;