MySQL
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL 相关的知识,希望对你有一定的参考价值。
1 字段属性
- 主键、唯一键和自增长。
1.1 主键
- 主键:primary key,一张表中只能有一个字段可以使用对应的键,用来唯一的约束该字段里面的数据,不能重复。
- 一张表只能有最多一个主键。
1.1.1 增加主键
- 在SQL操作中欧有多种方式可以给表增加主键,大体分为三种:
- 方案1:在创建表的时候,直接在字段之后,跟primary key关键字(主键本身不能为空)。
-- 增加主键 create table my_pri( id int primary key, name varchar(20) not null comment ‘姓名‘ )charset utf8;
-
- 优点:非常直接;缺点:只能使用一个字段作为主键。
- 方案2:在创建表的时候,在所有的字段之后,使用primary key(主键字段列表)来创建主键,如果有多个字段作为主键,可以是复合主键。
create table my_pri2( number char(10) comment ‘学号‘, course char(10) comment ‘课程代码:3901+0000‘, score tinyint unsigned default 60 comment ‘成绩‘, -- 增加主键限制:学号和课程代码应该是唯一的 primary key (number,course) )charset utf8;
- 方案3:当表已经创建好之后,额外追加主键:可以通过修改表字段属性,也可以直接追加。
alter table 表名 add primary key (字段列表);
- 前提:表中字段对应的数据本身是独立的(不重复)。
1.1.2 主键约束
- 主键对应的字段中的数据不允许重复,一旦重复,数据操作失败(增和该)。
1.1.3 主键更新 & 删除主键
- 没有办法更新主键:主键必须先删除,才能增加。
drop table 表名 drop primary key;
1.1.4 主键分类
- 在实际创建表的过程中,很少使用真实业务数据作为主键字段(业务主键,如学号、课程号)。
- 大部分的时候,是使用逻辑性的字段(字段没有业务含义,值是什么都没有关系),将这种字段主键称为逻辑主键。
1.2 自动增长
- 自增长:当对应的字段,不给值,或者给默认值,或者给null的时候,会自动的被系统触发,系统会从当前字段中的已有的最大值+1操作,得到一个新的不同的字段。
- 通常自动增长和主键搭配。
1.2.1 新增自增长
- 自增长特点:auto_increment
- 任何一个字段要做自增长必须前提是本身是一个索引(key一栏有值)。
-
- 自增长必须是数字。
-
- 一张表最多只能有一个自增长。
1.2.2 自增长使用
- 当自增长被给定的值为null或者默认值的时候,会触发自动增长。
1.2.3 修改自增长
- 自增长如果是涉及到字段改变:必须先删除自增长,后增加(一张薄只能有一个自增长)。
- 修改当前自增长已经存在的值:修改只能比当前已有的自增长的最大值大,不能笑(小不生效)。
-- 修改表选项的值 alter table 表名 auto_increment = 值;
- 思考:为什么自增长是从1开始?为什么每次都是自增1呢?
- 所有系统的变现(如字符集、校对集)都是系统内部的变量进行控制的。
- 查看自增长对应的变量:show variables like ‘auto_increment%‘;
- 可以修改变量实现不同的效果,但是修改是针对整个数据库的修改,而不是单张表,不建议修改。
-- 不建议修改 set auto_increment_increment = 5;
1.2.4 删除自增长
- 自增长是字段的一个属性:可以通过modify来进行修改(保证字段没有auto_increment即可)
alter table 表名 modify 字段 类型;
1.3 唯一键
- 一张表往往有很多字段需要具有唯一性,数据不能重复;但是一张表中只能有一个主键,所以唯一键就可以解决表中有多个字段需要唯一性的约束。
- 唯一键的本质和主键差不多,唯一键默认的允许自动为空,而且可以多个为空。
1.3.1 增加唯一键
- 基本上和主键差不多:三种方案。
- 方案一:在创建表的时候,字段之后直接跟unique/unque key。
- 方案二:在所有的字段之后增加unique key(字段列表);--复合唯一键
- 方案三:在创建表之后增加唯一键。
以上是关于MySQL 的主要内容,如果未能解决你的问题,请参考以下文章
连接MySQL出现错误:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)(代码片段
使用 json rereiver php mysql 在片段中填充列表视图
关于mysql驱动版本报错解决,Cause: com.mysql.jdbc.exceptions.jdbc4Unknown system variable ‘query_cache_size(代码片段
修改MySQL密码报错“ERROR 1819 (HY000): Your password does not satisfy the current policy requirements“(代码片段