MYSQL学习笔记06:列属性[NULL,default,comment],主键,⾃
增长,。。。
列属性
列属性⼜称为字段属性.
在mysql中⼀共有6个属性:null,默认值,列描述,主键,唯⼀键和⾃增长.
NULL属性
NULL属性代表字段为空.
如果对应的值为yes表⽰该字段允许为null,
注意:
1. 设计表的时候尽量不要让数据为空.
2. mysql记录长度为65535字节,如果⼀个表中有字段允许为null,那么系统就会设计保留1个字节来存储null,最终有效存储长度为65534个字节.
默认值
default:默认值,当字段被设计的时候,如果允许默认条件下,⽤户不进⾏数据的插⼊,那么就可以使⽤事先准备好的数据来填充.填充的通常是NULL.
测试:不给当前字段提供数据,看默认值是否⽣效.
如上图,同⼀⾏只指定name值,关联的age被系统⾃动赋予默认值18.
default关键字的另⼀层使⽤:显⽰的告知字段使⽤默认值:在进⾏数据插⼊的时候,对字段值直接使⽤default.
列描述:
comment,是专门⽤于给开发⼈员进⾏维护的⼀个注释说明.
基本语法:comment '字段描述';
查看comment须⽤查看创建表语句:
\主键
顾名思义:主要的键.primary key,在⼀张表中有且只有1个主键,⾥⾯的值具有唯⼀性,.
创建主键
1.随表创建
系统提供了2种增加主键的⽅式
⽅案⼀,直接在需要当做主键的字段之后,增加primary key属性来确定主键
⽅案⼆,在所有字段之后增加primary key选项: primary key(字段信息)
2.创建表后增加
基本语法:alter table 表名 add primary key(字段);
查看主键
⽅案1:查看表结构
⽅案2:查看表的创建语句
删除主键
基本语法:alter table 表名 drop primary key;
复合主键:
案例:有⼀张学⽣选修课表:⼀个学⽣可以选修多个选修课,⼀个选修课也可以由多个学⽣来选;但⼀个学⽣在⼀个选修课中只有⼀个成绩.
主键约束
主键⼀旦增加,那么对对应的字段有数据要求:
1. 当前字段对应的数据不能为空;
2. 当前字段对应的数据不能有任何重复
如上插⼊3条合理数据,每个学⽣和每门课程结合,由于复合主键的设置,每个学⽣每门课程只可能有1个成绩,系统不允许再出现同⼀学⽣同⼀课程的成绩
如下:我们故意插⼊⼀条重复的新数据2号学⽣和1号课程的成绩98,由于表中已经存在2号学⽣和1号课程的成绩90,系统提⽰重复点"2号学⽣-1号课程",不允许再插⼊,即每个学⽣每门课程只允许有⼀个成绩:
主键分类
主键分类采⽤的是主键对应的字段的业务意义分类
业务主键:主键所在的字段,具有业务意义(学⽣ID,课程ID)
逻辑主键:⾃然增长的整型(应⽤⼴泛)
⾃动增长
⾃动增长:auto_increment属性会让该字段⾃动增长.
通常⾃增长⽤于逻辑主键.
原理
1. 在系统中有维护⼀组数据,⽤来保存当前使⽤了⾃动增长属性的字段,记住当前对应的数据值,再给定⼀个指定的步长
2.当⽤户进⾏数据插⼊的时候,如果没有给定值,系统在原始值上再增加步长变成新的数据
3. ⾃动增长的触发:给定属性的字段没有提供值
4. ⾃动增长只适⽤于数值.
使⽤⾃动增长
基本语法:在指定字段之后增加⼀个属性aauto_increment
插⼊数据:触发⾃动增长--不能给定具体的值(auto_increment属性字段)
mysql删除重复的数据保留一条
以上代码解释:插⼊数据时,⽤户给予⾃增长字段null值,即⽤户不给⾃增长字段赋值,则插⼊数据时⾃增长字段⾃动触发⾃增长.虽然插⼊时给与null值,似乎与⾃增长主键字段不能为null冲突,实际上系
统最终给⾃增长字段⾃增长赋值了,最终其值为1⽽并不是null.
请⼀定注意!即插⼊数据时⽤户语句中给予⾃增长字段null值并不是真正赋值null给它,⽽是为了触发系统⾃增长,让系统⾃动赋予⾃增长字段真正的⾃增长后的值.
修改⾃动增长
1. 查看⾃增长:⾃增长⼀旦触发使⽤之后,会⾃动在表选项中增加⼀个选项(⼀张表最多只能拥有1个⾃增长)
2. ⼿⼯修改⾃增长值:如上图,下⼀个auto_increment值为2,属于表选项,那么我们可以通过修改表结构的表选项来实现:
alter table 表名 auto_increment=值;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论