二 动态SQL和多对一,一对多10、多对一处理测试环境搭建按照查询嵌套处理(子查询)按照结果嵌套处理(联表查询)11、一对多按照结果嵌套处理按照查询嵌套处理小结12、动态 SQLIFchoose (when, otherwise)trim (where,set)SQL片段foreach
10、多对一处理
子查询,联表查询
多个学生,对应一个老师
对于学生这边而言,关联(association)多个学生,关联一个老师【多对一】
对于老师而言,集合(Collection),一个老师,有很多学生【一对多】
在 SQL Server 中建立多对多关系需要使用中间表来实现。以下是一个示例:
假设有两个表:学生(Student)和课程(Course),其中一个学生可以选修多门课程,一门课程也可以被多个学生选修。这就是一个典型的多对多关系。
首先,我们需要创建两个表:
CREATE TABLE Student
StudentID INT PRIMARY KEY,
StudentName VARCHAR(50)
CREATE TABLE Course
CourseID INT PRIMARY KEY,
CourseName VARCHAR(50)
然后,我们需要创建一个中间表来存储学生和课程之间的关系。这个中间表应该包含两个外键分别指向学生表和课程表。
CREATE TABLE StudentCourse
StudentID INT,
CourseID INT,
PRIMARY KEY (StudentID, CourseID),
FOREIGN KEY (StudentID) REFERENCES Student(StudentID),
FOREIGN KEY (CourseID) REFERENCES Course(CourseID)
在中间表中,主键由两个列 StudentID 和 CourseID 组成,这是因为同一个学生可以选修多门课程,同一门课程也可以被多个学生选修。同时,我们在中间表中创建了两个外键,分别指向学生表和课程表,以保证数据的完整性。
现在我们就可以通过向中间表中插入数据来建立多对多关系了。例如,如果学生1选修了课程1和课程2,我们可以这样插入数据:
INSERT INTO StudentCourse (StudentID, CourseID)
VALUES (1, 1), (1, 2)
这样,我们就建立了一个学生和两门课程之间的多对多关系。