**

因为本人之前一直写的是电子笔记,对自己学会的东西作一个总结,所以基本都是文字,本来想全发成博客的形式,发现全发成博客比较花费时间,而且一直发博客质量不是很好,而且通过发博客学到的东西也会变少,所以准备先把笔记发出来,后续再将它们改成博客的形式,争取2天至少改一篇博客,觉得我总结的还行的可以先关注我,后续会发成博客形式,内容也会更加完善

**

默认值和NULL:
一般情况下表的每个数据类型都会有它的默认值,这个默认值在表的结构中用default表示,如果我们在插入数据时,没有给哪个字段插入数据,那么默认情况下就会给那么字段插入默认值,一般情况下数据类型的默认值都是NULL,然后NULL这个字段是用来显示,我们创建的数据表中的字段的默认值是否为NULL,如果为空,就显示YES,如果不为空,就显示NO,但通常我在写一张表时,不希望一些字段为空,比如我要收集一个某班学生的名字和其它的信息,这时名字这个字段总不能为空,所以既然我们知道这个字段不能为空,所以我们创建这个字段时就可以,给这个字段添加一个非空的属性,添加的方法就是,在这个字段类型后面空一格,输入NOT NULL,例如我要给name字段添加非空属性,可以这样写create table stud(name varchar(32) not null);当然也可以用alter table来修改属性,虽然这二个方法可以设置数据为非空属性,只有NULL字段会变成NO,default字段的NULL是不会变的,不过我们在插入数据时,如果不插入name字段的数据,就会报错
mysql中表的约束总结
如果要设置默认值,可以在那个字段名后面,输入default命令,然后空一格输入默认值,例如我要修改ID的默认值为1,可以这样写alter table stud modify ID varchar(10) default 1;

mysql中表的约束总结
mysql中表的约束总结

zerofill:
有时我们在设置数据类型时会加上括号,来表示它的大小,例如varchar(32),表示它是一个32字节的可变字符串,但有时这个括号看起来就没有什么作用,例如int(6),它就表示一个整数32位,后面的6没有意义,但肯定不可能这么简单,如果没有zerofill这个命令,那么后面的6确实没有什么意义,如果有zerofill这个命令,表示这个类型的数据至少应该显示几位数据,例如我设置math字段至少显示2位,可以这样写alter table stud add math int(2) zerofill;如果我插入数据时,只有一位那么另一位就会用0补齐,如果超过2位,则不用受这个限制,zerofill只是一种格式化输出的方式
mysql中表的约束总结
mysql中表的约束总结

自增长:
有时我们希望主键或唯一键,也就是索引字段,可以自动按顺序进行数据写入,所以出现了自增长,它的意思是,如果这个索引字段,在插入数据时没有添加数据,那么则对此字段已有数据中最大的一个数据进行加1操作,然后把这个值添加到这个字段中去,所以可以看出要使用自增长功能,首先这个字段必须是整数类型,其次这个字段必须是索引字段(原因是索引字段通常都是有顺序的,而且必须得存在,还得是唯一的,比较符合这个功能的初衷),最后还有一个要求,就是一张数据表只能有一个自增长字段;如果要给某个字段添加自增长功能,要使用auto_increment命令,使用方法就是在这个字段的索引命令后输入auto_increment,例如我要给age字段添加自增加功能,可以这样写alter table stud modify age int unique auto_increment; 然后这个数据表结构中的Extra字段的对应位置会显示auto_increment,表示这个数据表的age字段已经设置过自增长功能了
mysql中表的约束总结
mysql中表的约束总结

外键:
外键其实就是用主表是来约束从表的(主表就是涵盖范围比较大的一种数据有,这种涵盖范围是相对于从表来说的,例如,我是陕西科技大学的一名学生,然后主表是用来记录我们大学有什么学院,然后都有哪些部门,而从表则是用来记录我们学院的情况的,例如我们学院有哪个班,每个班的学生都有谁),在没有使用外键前,这二个表只是在感觉上是有关系的,因为它们明显是两张表,而一但使用了外键,那么这种关系就变得更密切了,使用外键的原因是,因为我的主表中只是存放了我们学校主要的信息,而详细的信息需要放在从表中,因为如果信息都集中在主表中,那么这个主表就会变得非常大,不利于阅读(这种操作就相当于是,我们所有软件的功能都集中在一个APP中,会变得非常大,非常难操作),所以我们就要使用从表来记录一些详细的信息,而这些详细的信息又受限于主表,因为它只是对主表中的数据进行更细致的记录,所以从表是按照主表所有的数据,对每个数据加以更深入的说明,例如主表中有一个字段是学院,然后从表就是对主表所有的每个学院进行更细致的描述,所以从表在描述时,受限于主表的学院字段,因为如果主表中没有的学院,从表就不用进行描述了,而外键就是定义这样关系的一个功能,外键一般只是加在从表当中,因为从表受限于主表,加外键时一般只给一个字段定义这样的关系,也就是主表中有学院这个字段,从表中也有学院这个字段,那么就给从表的学院字段加一个外键,让主表的学院字段来约束它,也就是从表学院字段中的每个数据在主表的学院字段中必须要存在;在加外键时,有一个个要求,就是主表来约束从表的字段,必须是有主键属性或唯一键属性(因为一般情况下,像这种记录学校的数据表的关键字段都是不允许重复的,而且得是索引,这样才能体现出外键的作用),如果要添加外键就是使用foreign key (从表的被约束字段名) references 主表名 (主表的绝不约束字段名),例如我要创建一个学校的主表,然后给college字段加上主键,可以这样写,create table school( college varchar(32) primary key, leader varchar(15));然后给里面随便添加几个数据insert into class(college, leader) values(“eduction”, “张红”) (“computer”, “小智”) (“electronic”, “小智”);
mysql中表的约束总结
然后我再创建从表,从表中有也有学院(college)字段,并且要受到主表学院字段的约束,然后从表还有一个班级字段,可以这样写create table class(college varchar(32), class varchar(32), foreign key (college) references school(college));
mysql中表的约束总结
然后插入一个数据,college字段对应eduction,然后class对应信工17,可以这样写insert into class(college, class) values(“eduction”, “信工17”);然后数据就插入成功了,因为主表的college字段有eduction,如果我们插入一个主表学院字段中没有的数据,就会报错,例如我要插入一个,college字段对应math,class对应math17,可以这样写insert into class (college, class) values (math, math17);
mysql中表的约束总结
最后,如果我们给一张从表定义过外键,那么这张从表结构中Key字段的对应位置就会出现MUL,表示这个college字段定义过外键

mysql中表的约束总结

相关文章:

  • 2021-11-26
  • 2022-12-23
  • 2021-03-27
  • 2022-01-30
  • 2022-12-23
  • 2021-11-11
  • 2021-12-04
猜你喜欢
  • 2021-11-21
  • 2021-09-05
  • 2021-04-03
  • 2021-11-24
  • 2021-12-29
  • 2022-12-23
相关资源
相似解决方案