-2
我一直在考虑这个SQL代码如下:我需要一只手用SQL任务
CREATE TABLE Student (
stdNo CHAR(5) PRIMARY KEY,
login CHAR(10) UNIQUE NOT NULL,
lastname VARCHAR(25),
givenNames VARCHAR(50),
programCode CHAR(4))
go
CREATE TABLE Course (
courseID CHAR(8) PRIMARY KEY,
cName VARCHAR(25) UNIQUE NOT NULL,
credits TINYINT CHECK (credits BETWEEN 0 AND 200) DEFAULT 20)
go
CREATE TABLE Semester (
semesterID INTEGER PRIMARY KEY CHECK (semesterID >= 0),
semester TINYINT NOT NULL CHECK(semester BETWEEN 0 AND 4),
year SMALLINT NOT NULL CHECK(year BETWEEN 2000 AND 9999),
UNIQUE (semester,year))
go
CREATE TABLE Register (
stdNo CHAR(5),
courseID CHAR(8),
semesterID INTEGER REFERENCES Semester ON UPDATE CASCADE ON DELETE NO ACTION,
grade CHAR(2),
mark DECIMAL(5,2) DEFAULT 0.0,
PRIMARY KEY (stdNo, courseID, semesterID),
CONSTRAINT fkRegisterStd FOREIGN KEY(stdNo) REFERENCES Student(stdNo) ON UPDATE CASCADE ON DELETE NO ACTION,
FOREIGN KEY(courseID) REFERENCES Course(courseID) ON UPDATE CASCADE ON DELETE NO ACTION)
go
INSERT INTO Student VALUES ('S0001', 'ABI723', 'Ingel', 'Abby Kate', 'BITC');
INSERT INTO Student VALUES ('S0210', 'KWE231', 'Kent', 'Robert', 'BSCS');
INSERT INTO Course VALUES ('INFT2040', 'Database Management', 20);
INSERT INTO Course VALUES ('INFT2132', 'Advance Programming', 20);
INSERT INTO Course VALUES ('INFT4001', 'Project', 20);
INSERT INTO Semester VALUES (1,1, 2014);
INSERT INTO Semester VALUES (2,2, 2014);
INSERT INTO Semester VALUES (3,1, 2007);
INSERT INTO Register VALUES ('S0001', 'INFT2040', 1, 'A', 98.02);
INSERT INTO Register VALUES ('S0001', 'INFT2132', 2, 'B', 80.32);
INSERT INTO Register VALUES ('S0210', 'INFT2132', 2, 'B+', 87.89);
INSERT INTO Register VALUES ('S0210', 'INFT2040', 3, null, null);
我问到“查找谁已经注册到同一课程,“罗伯特·肯特学生的学号“”。我怎么能够解决这个问题?有人可以提供一个例子吗?
我意识到连接表的能力,我只是不确定如何实际完成任务。
谢谢,这真的有帮助,我没有回想起使用'on'和'in'。对此,我真的非常感激 :-) – Charles