常用sql语句摘录,便于以后查看
世间似乎有一种神秘的力量,当你得到某些东西就必须失去某些东西。
主键
增加主键
1字段名 int primary key; --创建表的时候添加主键2primary key(主键字段); --在创建表的后面加上主键声明3alter table 表名 add primary key(主键字段名); --向已存在的表添加主键4alter table 表名 modify 主键字段名 int primary key; --效果同上
删除主键
1alter table 表名 drop primary key;
修改主键&&更新主键
由于一张表只能存在一个主键,所以只能先删除原来的主键,再重新指定主键
主键自增长
1alter table 表名 modify 主键字段名 int auto_increment;
修改自增长
跟主键的修改同理,一张表只能有一个自增长。只能先删除自增长,然后再重新指定自增长字段
删除自增长
1alter table 表名 modify 主键字段名 int;
唯一键
唯一键跟主键差不多,区别是主键不能为null,唯一键允许有多个可以为null并且可以多个null
增加唯一键
1字段名 int unique key; --创建表的时候增加唯一键2alter table 表名 add unique key(字段名); --向存在的表增加主键
删除唯一键
1alter table 表名 drop index 索引的名字; -- 索引的名字默认为字段名
索引
索引是什么
系统根据某种算法,将已有的数据或者将来可能增加的数据,单独建立一个文件:文件能够实现快速的匹配数据,并且找到对应表中的记录。
索引的意义
1.提高数据的查询效率2.约束数据的有效性(唯一性)
什么时候使用索引
索引本身会占用大量的磁盘空间,索引并不是越多越好。1.如果某个字段作为查询条件经常使用。2.如果某个字段需要数据的有效性约束,也可能使用索引。
mysql中提供了多种索引主键索引(primary key)
唯一索引(unique key)
全文索引(fulltext index)
普通索引 (index)
关系
一对一
A表的一条记录只能跟B表的记录唯一对应
一对多
A表的一条记录跟B表的多条记录对应
多对多
A表的一条记录跟B表的多条记录对应;反过来B表的一条记跟A表的多条记录对应。多对多需要中间表维护A与B的关系。
范式NF(Normal Format)
范式是一种离散数学的知识,是为了解决一种数据的存储与优化的问题:保存数据之后,如果能够通过关系查找出来的数据,绝对不再重复存储:终极目标减少数据冗余。(范式一共有6层,但是我们通常使用前三层。)当前层的范式的方式一定满足上一层范式。范式一层比一层严格。
1NF(第一范式)
保证数据的原子性,何为原子性?就是表中的字段不能拆分,已经是最终形态
2NF(第二范式)
设计数据库的过程中,如果存在复合主键并且表中有字段并不是完全依赖整个主键来确定,而是依赖主键的某个部分:存在字段依赖部分主键的问题。我们称之为部份依赖。第二范式正是要解决这种部分依赖。解决方案:取消复合主键,使用逻辑主键。
3NF(第三范式)
理论上:每一个字段都应该直接依赖主键(逻辑主键:代表的是业务主键),如果一张表中存在这样一个字段并不直接依赖主键而是通过某个字段传递依赖到主键,这种关系成为传递依赖。第三范式正是要解决这种传递依赖。 解决方案: 将存在传递依赖的字段,以及传递的字段本身单独取出独立形成一张表。再需要对应信息的时候,使用对应实体表表中的中间对应进来。
逆规范化
范式能够解决数据冗余问题,但是需要查询数据的时候却牺牲了很多的时间,查询的效率大大的降低了。有时候我们需要提高查询数据的效率,就必须牺牲磁盘空间,这时候我们就不一定要遵循范式。