MySQL--约束

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

目录

1:非空约束

2:唯一性约束

3:主键约束

4:外键约束


在MySQL中是有着约束的,约束是什么呢,约束又有什么作用呢。约束顾名思义它是对表有着约束的,而它的作用是为了让数据更加有用,具有有效性。

1:非空约束

如何加非空约束,就是在创建表时定义数据类型的
时候在他的最后面加个not  null就行






drop table if exists stu;     
create table stu(
  name char(10),
  score int not null          
);

insert into stu values('sdff',100);     //正常添加数据

 

再加个空值看看会怎么样


insert into stu(name) values('kl');

很遗憾,加了非空约束,它是不允许你讲它的值设定为空值的。

2:唯一性约束

唯一性约束的定义跟前面的非空约束是一样的
都是在创建数据类型的时候,定义的唯一性
约束。非空约束是not bull,而唯一性约束
是unique。



drop table if exists stu;

create table stu(
  name char(10),
  score int unique
);

insert into stu values('sd',99);
insert into stu values('sd',87);

 

但是我现在在设置了唯一性约束的score字段中
在插入一条99与前面的99会出现重复,会不会报错呢

insert into stu values('kl',99);

 

 唯一性约束,唯一性约束,现在不唯一了,肯定会报错了。

唯一性约束,能不能联合起来具有唯一性呢?

联合起来的唯一性约束大家知道是什么意思呢
假如我联合两个字段,两个字段其中一个字段出现
重复是没有问题的,但如果全部都重复,这才会报错
这就叫联合唯一性约束。


理论知识永远比不过实践,我们看一看具体的例子吧




drop table if exists stu;

create table stu(
 id int,
 name char(10),
 email char(10),
 unique(name,email)
);

insert into stu values(123,'sh','7878');
insert into stu values(111,'sh','9090');
insert into stu values(89,'jk','7878');

 这样子创建是允许的,那么这就是联合唯一性约束,除非联合的全部重复,不然是不会报错的。

如下会报错。

insert into stu values(199,'sh','7878');

 那么唯一性约束可以联合起来的话,not null和唯一性约束可以联合吗,当然可以,不过在MySQL中他们的联合就是相当于后面我们讲到的主键约束(注意是MySQL中,其他数据库就不一定是了),那这里我就不多说了。

3:主键约束

主键是什么呢,主键是一行的标记,就是相当于我们的身份证号,独一无二,可以代表我们的身份,那么我这样一说,你是不是就觉得每张表都应该有主键呢,却是如此,每张表都应该有身份证号的(主键),不然表无效。

主键:  primary key

该如何使用呢,跟前面两个约束四一样的,都是在定义数据类型
的时候,在最后面定义就行。


drop table if exists stu;

create table stu(
name char(10),
id int primary key,
score int
);

insert into stu values('kl',123,98);
insert into stu values('op',189,90);

 接下来你就会发现主键的一些作用了

插入这些代码会报错(报错的理由就不用说了吧,大家肯定都知道滴)


insert into stu values('hj',123,12);

insert into stu values('rt',189,78);

insert into stu(name,score) values('ioio',15);

 4:外键约束

外键约束,怎么说呢,举个例子好点,直接定义却是云里雾里的。

假如有一个学生表(有学生学号,班级号),班级表(班级号,班级名)
现在给学生表一个外键约束,给学生表中的班级号添加了外键约束(与班级表中的班级号相关联)
之后学生表中的班级号只能在班级表中的班级号中填写,不能出现班级表中的班级号的其他数据
如班级表中的班级号没有89,那么学生表中的班级号就无法填写89。、


drop table if exists stu;
drop table if exists class; 
create table class(
  name char(10),
  num int primary key          //一定要注意,你要设置的外键约束所关联的那个父,一定要是主键约 
                                 束,不然会报错的
);

create table stu(
   id int,
   cno int,
   foreign key(cno) references class(num)
);

insert into class values('一班',18);
insert into class values('二班',20);


insert into stu values(123,18);
insert into stu values(122,18);
insert into stu values(189,20);

如果想添加一些数据,外键约束会帮你看看是否符合条件的。

这些代码是会报错的。

insert into stu(199,21);
insert into stu(178,18);

 

在这里我在拓展一个自增(默认从1开始自增)的好东西,
具体不说了,大家只要会用就行啦



drop table if exists stu;

create table stu(
  id int primary key auto_increment,   //注意一定要设置有主键哦
  name char(10)
);


insert into stu(name) values('kl');
insert into stu(name) values('op');
insert into stu(name) values('ioio');
insert into stu(name) values('fg');
insert into stu(name) values('bnbn');

OK, 本文到此结束,如有错误,还请大佬指正!!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MySQL-xmind 是一种将 MySQL 数据库架构可视化为思维导图的工具。它可以帮助开发人员更好地理解和管理数据库结构。 使用 MySQL-xmind,我们可以通过图形化的方式表示数据库中的表、字段、关系和约束等元素。这样做可以使得数据库设计更加直观、易于理解。通过思维导图的形式,我们可以清楚地看到表之间的关系,如外键约束和关联关系。这对于开发人员在编写 SQL 查询和构建复杂查询时非常有帮助,因为他们可以更轻松地理解表之间的连接和关联。 此外,MySQL-xmind 还可以帮助我们进行数据库的维护和优化。我们可以使用思维导图来查看表的索引、主键和其他约束,从而更好地了解数据库的性能和结构。通过检查思维导图,我们可以发现潜在的问题,如冗余数据、不合理的索引或缺失的关联。 一些功能强大的特性,如批量生成 SQL 语句、导出导入数据库结构等,也使得 MySQL-xmind 成为一个非常实用的工具。它允许我们快速生成 SQL 脚本,以便在不同的环境中部署数据库结构。同样地,我们可以将数据库结构导出为思维导图,方便与团队成员共享和讨论。 总之,MySQL-xmind 是一个方便实用的工具,可以对 MySQL 数据库的结构进行可视化管理和优化。它帮助了开发人员更好地理解数据库的设计和关系,并提供了一些非常有用的功能,如批量生成 SQL 语句和导出导入数据库结构等,使得数据库管理更加高效和便捷。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜到极致就是渣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值