更新唯一键 & 删除唯一键
错误的删除方法:alter table 表名 drop unique key;
alter table 表名 drop index 索引名字;
索引:系统根据某种算法,将已有的数据,或未来可能新增的数据,单独建立一个文件,文件能够实现快速的匹配数据,并且能够快速地找到对应表中的记录
索引的意义:
提升查询数据的效率
约束数据的有效性、唯一性等
MySQL中提供了多种索引
主键索引:primary key
唯一索引:unique key
全文索引:fulltext index
普通索引:index
创建
create [unique] index 索引名 on 表名(字段名(长度));
alter 表名 add [unique] index [索引名] on (字段名(长度));
删除:drop index [索引名] on 表名;
查看:show index from 表名\G
使用alter命令添加数据表的索引
alter table 表名 add primary key (字段列表):添加一个主键,意味着索引值必须是唯一且不为空
alter table 表名 add unique 索引名 (字段列表):创建索引的值必须是唯一的,允许NULL,且NULL可能会出现多次
alter table 表名 add fulltext 索引名 (字段列表):添加全文索引
alter table 表名 add index 索引名 (字段列表):添加普通索引,索引值可出现多次
一对一: 一张表的一条记录一定只能与另外一张表的一条记录进行对应,反之亦然
一对多:一张表中有一条记录可以对应另外一张表中的多条记录,但是反过来,另外一张表的一条记录只能对应第一张表的一条记录
多对多:一张A表中的一条记录,能够对应B表中的多条记录,同时B表中的一条记录也能对应A表中的多条记录
范式:Normal Format,是一种离散数学中的知识,是为了解决一种数据的存储与优化的问题,它的终极目标是为了减少数据的冗余
范式是一种分层结构的规范,分为六层:
1NF、2NF、3NF、……6NF
1NF是最底层,要求最低
6NF是最高层,要求最严格
新增数据
基本语法:insert into 表名 [(字段列表)] values(值列表);
主键冲突(Duplicate key)
当主键存在冲突的时候,可以选择性地进行处理,进行更新和替换
更新操作:insert into 表名 [(字段列表)] values(值列表) on duplicate key update 字段=新值;
替换:replace insert into 表名 [(字段列表)] values(值列表);
表创建的高级操作
从已有表创建新表(复制表结构):create table 表名 like 数据库.表名;
蠕虫复制:先查出数据,然后将查出的数据新增一遍
insert into 表名[(字段列表)] select 字段列表/* from 数据表名;
蠕虫复制的意义
从已有表拷贝数据到新表中
可以迅速地让表中的数据膨胀到一定的数量级,用来测试表的压力以及效率
更新数据
基本语法:update 表名 set 字段=值 [where条件];
高级语法:update 表名 set 字段=值 [where条件] [limit 更新数量];
删除数据
delete from 表名 [where条件] [limit 数量];
truncate 表名; -- 先删除该表,后新增该表
查询数据
基本语法:select 字段列表/* from 表名 [where条件];
完整语法:select [select 选项] 字段列表[字段别名]/* from 数据源 [where条件子句] [group by子句] [having 子句] [order by子句] [limit 子句];