相关推荐recommended
【MySQL探索之旅】MySQL数据表的增删查改——约束
作者:mmseoamin日期:2024-04-01

【MySQL探索之旅】MySQL数据表的增删查改——约束,在这里插入图片描述,第1张

📚博客主页:爱敲代码的小杨.

✨专栏:《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 《MySQL探索之旅》 |《Web世界探险家》

❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️

🙏小杨水平有限,欢迎各位大佬指点,相互学习进步!

【MySQL探索之旅】MySQL数据表的增删查改——约束,第2张

文章目录

  • 1. 数据库约束类型
  • 2. not null 非空
  • 3. unique 唯一
  • 4. default 默认值
  • 5. primary key:主键约束
  • 6. foreign key:外键约束

    1. 数据库约束类型

    • not null :不允许某列存储空值(非空);
    • unique :不允许你某列存储重复值(唯一);
    • default :没有赋值的列存储默认值;
    • primary key:主键约束,not null 和unique 的结合,确保某列(或两个列多个列的结合)有唯一标

      识,有助于更容易更快速地找到表中的一个特定的记录。

    • foreign key:外键约束,保证一个表中的数据匹配另一个表中的值的参照完整性。

      2. not null 非空

      创建表的时候,指定列不为空

      create table student(id int not null, name varchar(20), age int);
      

      【MySQL探索之旅】MySQL数据表的增删查改——约束,image-20240329085634362,第3张

      上述命令指定 id 这一列的数据不能为空。

      测试:插入 id 为空的记录是否能成功插入

      insert into student values (null,'张三',18);
      

      【MySQL探索之旅】MySQL数据表的增删查改——约束,image-20240329090522099,第4张

      3. unique 唯一

      创建表的时候,指定某类的值不能重复。

      create table student(id int unique, name varchar(20), age int);
      

      上述命令指定 id 这一列的数据不能重复

      测试:插入 id 重复的记录是否都能成功插入

      insert into student values (1,'张三',18);
      insert into student values (1,'张三',18);
      

      【MySQL探索之旅】MySQL数据表的增删查改——约束,image-20240329091154965,第5张

      4. default 默认值

      指定插入数据的时候,sex 列为空,默认值

      create table student(id int, name varchar(20), sex varchar(10) default '女');
      

      【MySQL探索之旅】MySQL数据表的增删查改——约束,image-20240329091838196,第6张

      测试:

      insert into student(id, name) values (1,'张三');
      insert into student(id, name, sex) values (2,'李四','男');
      

      【MySQL探索之旅】MySQL数据表的增删查改——约束,image-20240329092609204,第7张

      5. primary key:主键约束

      指定 id 列为主键

      create table student(id int primary key, name varchar(20));
      

      主键相当于 not null 和 unique 的结合

      测试:

      insert into student values (null,'张三');
      insert into student values (1,'张三');
      insert into student values (1,'张三');
      

      【MySQL探索之旅】MySQL数据表的增删查改——约束,image-20240329093621098,第8张

      对于整数类型的主键,常配搭自增长 auto_increment来使用。插入数据对应字段不给值时,使用最大

      值 +1 ,而不是前一条记录 +1。

      insert into student values (1,'张三');
      insert into student values (null,'李四');
      insert into student values (100,'赵五');
      insert into student values (5,'宋六');
      insert into student values (null,'王麻子');
      select * from student;
      

      【MySQL探索之旅】MySQL数据表的增删查改——约束,image-20240329094438389,第9张

      6. foreign key:外键约束

      外键用于关联其他表的主键或者唯一键,语法:

      foreign key (字段名) referenes 主表(列)
      

      示例:

      • 创建班级表,设置 classId 为主键

        create table class(id int primary key, name varchar(20));
        
      • 创建学生表,设置id 为主键,一个学生对应一个班级,一个班级对应多个学生。使用id为主键,

        classeId 为外键,关联班级表id

        create table student(id int primary key, name varchar(20), classId int, foreign key (classId) references class(id));
        

        在这个语句中, 定义一个外键的实际作用是,在这条语句执行后,确保 MySQL 插入外键中的每一个非空值已经在被参照表中作为主键出现。这意味着,对于student 表中的每一个 classId ,都执行一次检查,看这个编号是否出现在 class 表的 id 列(主键)中。如果不存在,则出现出错信息。

        【MySQL探索之旅】MySQL数据表的增删查改——约束,image-20240329181043976,第10张

        【MySQL探索之旅】MySQL数据表的增删查改——约束,第11张