鉴于两种关系:
Students = (St-Id, Name, Address, CourseNo, Cgpa)
Courses = (CourseN0, CourseName, Credits)
其中主键为St-Id
和CourseNo
。学生关系中的CourseNo
是外键引用Courses
关系。
假设经常出现以下问题:
问题:每个学生学习的课程(CourseNo和CourseName)是什么?
SELECT Students.Name, Courses.CourseName, Course.CourseNO
FROM Students
INNER JOIN Courses
ON Students.CourseNo=Course.CourseNo;
使用连接操作是正确的查询吗?
由于课程编号,它是一个主要索引。我们可以将courseNo
作为主要指标视为规则吗?它也聚集在一起?群集和主索引有什么区别?
问题:每个学生的Cgpa是什么?
答案:Select Cgpa and name from students
答案 0 :(得分:2)
我同意rcl的simon,你的设计只允许每个学生一门课程。尝试在学生和课程之间放置一个交叉表。
Students = (St-Id, Name, Address, Cgpa)
Courses = (CourseN0, CourseName, Credits)
StudentCourse = (St-Id, CourseN0)
答案 1 :(得分:0)
如果表具有主键,则聚簇索引与主键相同。如果它没有主键,InnoDB将自己创建一个聚簇索引。 {(3}}。
您的语法不太正确。要从表格中选择多个列,请使用逗号分隔,而不是and
。所以它应该是:
SELECT name, cpga FROM student
答案 2 :(得分:0)
此外,如果St-id是学生的主键,那么学生只能有一门课程。你的设计看起来有点缺乏。
答案 3 :(得分:0)
SELECT
name
,cgpa
FROM
students
WHERE
1=1
试试这个