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的片段中加载ListView

连接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“(代码片段

mysql查看版本的四种方法