有两张表分别记录了老师和学生的数据,
teacher_id/student_id
是表的自增主键
number
是工号/学号,每个人都是唯一的,不能重复
teached_by
表示学生是哪个老师教的,存的是teacher_id
CREATE TABLE `teacher_table` (
`teacher_id` int(0) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NULL,
`age` int(0) NULL,
`number` varchar(255) NULL,
PRIMARY KEY (`teacher_id`)
);
CREATE TABLE `student_table` (
`student_id` int(0) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NULL,
`age` int(0) NULL,
`number` varchar(255) NULL,
`teached_by` int(0) NULL,
PRIMARY KEY (`student_id`)
);
现在要求写一个存储过程,把以下数据存进表里,并且根据number关联好teached_by关系
{
"teachers": [
{
"name": "Jenny",
"age": 30,
"number": "T002"
}
],
"students": [
{
"name": "Tony",
"age": 18,
"number": "S0002",
"teached_by": "T002"
},
{
"name": "Bob",
"age": 19,
"number": "S0003",
"teached_by": "T002"
}
]
}
并且,该存储过程要返回Jenny老师所有学生的姓名的数组,即
["Tony", "Bob"]
可能题目要求看起来有点奇怪,但是需求总是奇怪的,不是吗?
- 题目给的数据是个复杂嵌套的JSON,也就是说,要在存储过程里完成JSON解析(前端直接传过来的数据一般都是JSON)
- 每个人的number都是唯一的,对于传入的数据不能无条件信任,一定要做检查
- 学生的teached_by依赖老师的teacher_id,也就是说,要先插入老师的数据之后才能拿到老师的主键teacher_id
- 要求返回的数据其实是考数据的拼装