前进之路 发表于 2024-11-18 10:17:27

【MySQL】数据库必考:深度学习表的约束 | 超全知识点穿透

        媒介:本节内容讲述表的约束的干系内容。 表的约束博主分了两篇文章举行解说, 这是第二篇下半部分。 重要谈到了唯一键和外键这两种比力重要的约束。下面友友们开始学习吧!
        ps:友友们使用了mysql就可以放心观看喽!
目录
自增长
唯一键
外键
自增长

        自增长就是能让主键列自动增长, 而且可以不指定主键列的数据。注意:自增长必须配合主键来使用。 下面为示例:
mysql> create table if not exists t21(
    -> id int unsigned primary key auto_increment,
    -> name varchar(20) not null
    -> ); https://i-blog.csdnimg.cn/direct/5945b0d168bc472d98dfbe6268150d71.png
        然后我们举行插入数据的时间就可以不指定id, id也会从1开始自增长, 如下:
https://i-blog.csdnimg.cn/direct/07e28afc2aad4dc19f0234c615dc7ff8.png
        但是, 假如我们插入了一个值后, 那么这个值就是新的起始值, 下一次插入就是从这个数字开始。
https://i-blog.csdnimg.cn/direct/e4a65e4bbd5b4631a00fa592cab108c5.png
唯一键

        一张表中有些数据须要唯一性, 数据不能重复。但是一张表中只能有一个主键, 所以这就不能让所有的信息列都变成主键, 那么怎样包管这些列的信息的唯一性, 这个就用到了唯一键。下面为示例:
mysql> create table stu(
    -> id char(20) unique comment'这是一个学生的唯一键',
    -> name varchar(32) not null
    -> );
https://i-blog.csdnimg.cn/direct/b8f78cc5591144b289bff81728435da3.png
        https://i-blog.csdnimg.cn/direct/98b573eca9224b53924c7648aa3287f5.png
        插入数据时假如插入到的id重复, 他就会给我们不报错, 说有一个地方重复, 为id。 但是假如我们把id设为NULL,就不会重复。——这个区别于主键, 主键不能为空, 不能重复。 但是唯一键可以为空。
        而且假如设置了唯一健, desc的时间的Key列就会表现UNI。
外键

        外键更强调的是表与表之间的关联, 表与表之间的约束。外键应该叫做外键约束。就比如我们有一个班级表, 一个学生表。 学生表达内部有一列信息为隶属班级class_id。那么此时学生表和班级表就形成了关联关系。——》这个就是外键约束。
        假如没有外键的情况下我们假如要将两个表的内容接洽起来, 那么我们就得创建一个student表:
mysql> create table if not exists student(
    -> id int unsigned primary key auto_increment,
    -> name varchar(20) not null,
    -> telphone varchar(32) not null,
    -> class_id int
    -> );
        再创建一个class表:
        然后先给class插入新数据:
insert into class values(1, '103'); insert into class values(2, '104');
https://i-blog.csdnimg.cn/direct/919ca41b0bcc4459bb147a8a3bb822ae.png
        再给student插入数据:
insert into student values(2, '李四', '11112', 1); insert into student values(1, '张三', '11111', 2);          但是, 题目是我们的班级只有两个, 假如有人插入的时间, 插入了一个3号班级, 是不是就错了?而且, 我们说过, 表的约束是来倒逼程序员规范插入的。 那么我们有没有一种约束来让程序员在这种情况下规范插入呢?——这里就要用到外键。 
           其实上面我们上面创建的两个表布局, 是有所谓的外键之名的。此中, 班级表就是主表, 学生表就是从表。 从表有所谓的列和主表的主键关联。
        下面是带有外键的表:
mysql> create table if not exists newstudent(
    -> id int unsigned primary key,
    -> name varchar(20) not null,
    -> telphone varchar(32) unique key,
    -> class_id int,
    -> foreign key(class_id) references class(id)
    -> );
         然后我们再插入, 就会发现, 假如我们插入不是class内里的存在的数据的话就会报错:
https://i-blog.csdnimg.cn/direct/e13e6a1c8fa0477eb8d03650683dbdc4.png
        这就是外键约束。 
        另外还要注意的点就是, 从表内里有的数据, 在主表内里是不能删除的。 就比如如今我们从表内里只有一个张三的信息, 张三是2班的。 那么删除class表内里的数据的时间, 就不能把2班删除, 只能删除1班。 
        回归界说: 外键是界说主表和从表之间的关系。 外键是界说在从表上面。主表必须是有主键约束大概唯一键约束。界说外键后, 要求外键列数据必须在主表的主键列存在大概为null。

https://i-blog.csdnimg.cn/direct/5757a9a3d5084cec8ee4547c48f215e6.png
  ——————以上就是本节全部内容哦, 假如对友友们有资助的话可以关注博主, 方便学习更多知识哦!!!  

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 【MySQL】数据库必考:深度学习表的约束 | 超全知识点穿透