> 文章列表 > MySQL的一些基础学习总结(二)

MySQL的一些基础学习总结(二)

MySQL的一些基础学习总结(二)

文章目录

  • primary key和foreign key
    • 数据表添加主键
    • 给数据表添加外键
      • 创建teacher和classes表
      • 创建三个表的关联关系
      • mysql语句展示
  • 限制约束条件
  • 总结

primary key和foreign key

在关系型数据库中,primary key和foreign key是两个非常重要的概念。Primary key(主键)是用于唯一标识一条记录的一列或一组列,它可以保证每条记录的唯一性。Foreign key(外键)则是一个表中的一个或多个列,它们的值必须匹配另一个表中的主键,以保证表之间的关联性和完整性。

举个例子,假设有两个表,一个是"Customers"(客户)表,另一个是"Orders"(订单)表。在"Customers"表中,我们可以使用"CustomerID"列作为主键,用来唯一标识每个客户。在"Orders"表中,我们可以使用"CustomerID"列作为外键,来关联"Customers"表中的主键。这样,我们就可以在两个表之间建立关系,使得我们能够查询某个客户的订单信息。

总之,primary key和foreign key是数据库中非常重要的概念,它们能够帮助我们建立表之间的关联关系,确保数据的完整性和准确性。

给数据表添加主键

那么,如何用sql语句在数据表中创建主键,可以在创建数据表时这样定义(有两种方法):
第一种,直接在可以体现学生唯一性的student_id后面加上primary key语句

create table `student`(`student_id` int primary key,`name` varchar(20),`sex`  varchar(1),`age`  int,`class` varchar(20),`head_teacher` varchar(20)
);

第二种,在创建表的最后一行写,这种方法可以定义多个主键,例如,下面代码就将student_id和name都定义为主键;

create table `student`(`student_id` int,`name` varchar(20),`sex`  varchar(1),`age`  int,`class` varchar(20),`head_teacher` varchar(20),primary key(`student_id`,`name`)
);

给数据表添加外键

从简介可知,数据表光有主键是不行的,还要有外键,作为表之间的关联关系,确保数据的完整性和准确性。那么,这里再创建一个teacher表和一个classes表,有如下属性(属性值就不加注释了,直接看对应字母就可以明白):

创建teacher和classes表

create table `teacher`(`teacher_id` int,`name` varchar(20),`course` varchar(20),`sex`  varchar(1),`age`  int,`class` varchar(20),primary key(`teacher_id`)
);
create table `classes`(`class_id` varchar(20),`num_people` int,`manager_teacher` varchar(20),primary key(`class_id`)
);

创建三个表的关联关系

这时,考虑如何将三个表做关联,这里先考虑简单一点,学生归属于哪个班级,老师管理哪一个班级,对于初学,先把这些关系弄简单一点,便于学习(就不考虑给班级添加外键了)。
那么,就可以创建外键了,对于学生表,可以创建每个学生对应的老师,对应的班级为外键,对于老师,可以创建管理的对应班级为外键。

create table `teacher`(`teacher_id` int,`name` varchar(20),`course` varchar(20),`sex`  varchar(1),`age`  int,`manage_class` varchar(20),primary key(`teacher_id`)foreign key (`manage_class`) references `classes` (`class_id`) on delete set null
);
create table `student`(`student_id` int,`name` varchar(20),`sex`  varchar(1),`age`  int,`class` varchar(20),`head_teacher` varchar(20),primary key(`student_id`,`name`),foreign key (`class`) references `classes` (`class_id`) on delete set null,foreign key (`head_teacher`) references `teacher` (`teacher_id`) on delete set null
);

这就是外键如何创建,通过其班级将三个表关联起来,外键创建的语句其实也很好理解,以teacher表为例,翻译创建外键语句:将manage_class设为外键,其关联项为classes表中的class_id(主键)项,至于后面的on delete set null,后面再进行总结,这儿先按这个写。(一定注意,主键外键是关联用的,创建的外键一定要关联另一个表的主键)

mysql语句展示

不过,直接运行上面任何一个表语句都会报错,原因是foreign key创建时,会直接关联另一个表,而上述语句都是在表内创建,无法关联,因此,命令得这样写,在表外创建外键:

create table `student`(`student_id` int,`name` varchar(20),`sex`  varchar(1),`age`  int,`class` varchar(20),`head_teacher` varchar(20),primary key(`student_id`,`name`)
);
create table `teacher`(`teacher_id` int,`name` varchar(20),`course` varchar(20),`sex`  varchar(1),`age`  int,`manage_class` varchar(20),primary key(`teacher_id`),foreign key (`manage_class`) references `classes` (`class_id`) on delete set null
);
alter table `student`
add foreign key(`class`)
references `classes`(`class_id`)
on delete set null;alter table `student`
add foreign key(`head_teacher`)
references `teacher`(`teacher_id`)
on delete set null;

先创建完整的student表,再创建teacher表和classes表,之后再为student加上外键,语法如上述代码所示,和之前一样,都是用的alter table命令对表操作,只不过后面的不一样,多加了个add。

限制约束条件

通过上述操作,我们已经建立了三个数据表,并且建立了彼此的联系,这儿先插一段,创建数据表时的一些限制约束条件,其实,上述的主键和外键也属于限制约束条件。
在MySQL中,可以在创建数据表时添加各种限制约束条件,以确保数据的完整性和一致性。下面是一些常见的限制约束条件:

PRIMARY KEY: -- 表示一个表中的唯一标识符,确保每行都具有唯一标识符。
FOREIGN KEY: --表示表之间的关系,并确保表之间的数据一致性。FOREIGN KEY必须与PRIMARY KEY或UNIQUE约束配合使用。
NOT NULL: --确保某个字段的值不为NULL,这意味着该字段必须在每行中有一个值。
UNIQUE: --确保某个字段的值在整个表中是唯一的,不能有重复值。
CHECK: --检查某个字段的值是否符合特定的条件或范围,如果不符合,则会拒绝插入或更新数据。
DEFAULT: --指定在插入数据时,如果该字段没有被指定值,则使用默认值。
AUTO_INCREMENT: --自动生成递增的值,用于创建主键或其他唯一标识符。
需要注意的是,这些约束条件可以组合使用,以创建更复杂的数据表结构,并确保数据的完整性和一致性。

这儿简单举一个例子,比如利用CHECK这个限制条件:

create table `student`(`student_id` int primary key,`name` varchar(20),`sex`  varchar(1),`age`  int,`class` varchar(20),`head_teacher` varchar(20)primary key(`student_id`)check (`age`>= 6 and `age`<= 30)
);

这儿就限制了学生的年龄必须处于6至30岁之间,如果利用insert插入数据时,年龄小于6或者大于30时,就会报错。其余的限制约束条件可以自行查阅命令,这里就不逐一展示了。

总结

这一节主要记录了数据表的限制约束条件,着重说明了主键和外键的添加方式。