-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