1
Ch 6: Problems and Exercises 1
CREATE TABLE STUDENT
(StudentID NUMBER NOT NULL ,
StudentName VARCHAR2(25),
CONSTRAINT STUDENT_PK PRIMARY KEY (StudentID));
CREATE TABLE FACULTY
(FacultyID NUMBER NOT NULL,
FacultyName VARCHAR2(25),
CONSTRAINT FACULTY_PK PRIMARY KEY (FacultyID));
CREATE TABLE COURSE
(CourseID CHAR(8) NOT NULL,
CourseName VARCHAR2(15),
CONSTRAINT COURSE_PK PRIMARY KEY (CourseID));
2
Ch 6: Problems and Exercises 1 (cont.)
CREATE TABLE SECTION
(SectionNo NUMBER NOT NULL,
CourseID CHAR(8),
CONSTRAINT SECTION_PK PRIMARY KEY (SectionNo),
CONSTRAINT SECTION_FK FOREIGN KEY (CourseID)
REFERENCES COURSE (CourseID));
CREATE TABLE QUALIFIED
(FacultyID NUMBER NOT NULL ,
CourseID CHAR(8) NOT NULL,
DateQualified DATE,
CONSTRAINT QUALIFIED_PK PRIMARY KEY (FacultyID, CourseID)
CONSTRAINT QUALIFIED_FK1 FOREIGN KEY (FacultyID)
REFERENCES FACULTY (FacultyID)
CONSTRAINT QUALIFIED_FK2 FOREIGN KEY (CourseID)
REFERENCES COURSE (CourseID));
3
Ch 6: Problems and Exercises 1 (cont.)
CREATE TABLE REGISTRATION
(StudentID NUMBER NOT NULL,
SectionNo NUMBER NOT NULL,
Semester CHAR(7),
CONSTRAINT REGISTRATION_PK PRIMARY KEY (StudentID,
SectionNo),
CONSTRAINT REGISTRATION_FK1 FOREIGN KEY (StudentID)
REFERENCES STUDENT (StudentID),
CONSTRAINT REGISTRATION_FK2 FOREIGN KEY (SectionNo)
REFERENCES SECTION (SectionNo));
4
Ch 6: Problems and Exercises 2
CREATE VIEW Student_V AS
SELECT * FROM STUDENT;
5
Ch 6: Problems and Exercises 3
(a) Referential integrity may be enforced when the SECTION table is created:
CREATE TABLE SECTION
(SectionNo NUMBER NOT NULL,
CourseID CHAR(8),
CONSTRAINT SECTION_PK PRIMARY KEY (SectionNo)
CONSTRAINT SECTION_FK FOREIGN KEY (CourseID)
REFERENCES COURSE (CourseID));
(b) Or, referential integrity may be enforced using the ALTER TABLE command:
ALTER TABLE SECTION
ADD CONSTRAINT SECTION_FK FOREIGN KEY (CourseID)
REFERENCES COURSE(CourseID);
6
Ch 6: Problems and Exercises 4
(a) ALTER TABLE STUDENT
ADD (Class VARCHAR2(6));
(b) DROP TABLE REGISTRATION;
(c) ALTER TABLE FACULTY
MODIFY (FacultyName VARCHAR2(40));
7
Ch 6: Problems and Exercises 5
(a) INSERT INTO STUDENT (StudentID, StudentName) VALUES
(65798, ‘Lopez’);
Alternatively:
INSERT INTO STUDENT VALUES (65798, ‘Lopez’);
(b) DELETE FROM STUDENT
WHERE StudentID = 65798;
(c) UPDATE COURSE
SET CourseName=‘Introduction to Relational Databases’
WHERE CourseID=‘ISM 4212’;
8
Ch 6: Problems and Exercises 6
(a) SELECT StudentID, StudentName
FROM STUDENT
WHERE StudentID < 50000;
(b) SELECT FacultyName
FROM FACULTY
WHERE FacultyID = 4756;
(c) SELECT MIN(SectionNo)
FROM REGISTRATION
WHERE Semester= ‘I-2008’;
9
Ch 6: Problems and Exercises 7
(a) SELECT COUNT (*)
FROM REGISTRATION
WHERE SectionID=2714 AND Semester=‘I-2008’;
(b) SELECT FacultyID, CourseID, DateQualified
FROM QUALIFIED
WHERE DateQualified >= ‘01-JAN-1993’;
10
Ch 6: Problems and Exercises 8
(a) SELECT StudentID, COUNT (*)
FROM REGISTRATION
WHERE SectionNo IN (2714, 2715)
GROUP BY StudentID
HAVING COUNT(*) = 2;
(b) SELECT FacultyID, COUNT (*)
FROM QUALIFIED
WHERE CourseID IN (‘ISM 3113’, ‘ISM 3112’)
GROUP BY FacultyID
HAVING COUNT(*) = 1;
Note: COUNT(*)>1 also ok.
11
Ch 6: Problems and Exercises 9
(a) SELECT DISTINCT CourseID
FROM SECTION;
(b) SELECT StudentName
FROM STUDENT
ORDER BY StudentName;
(c) SELECT SectionNo, StudentID
FROM REGISTRATION
ORDER BY SectionNo, StudentID;
(d) SELECT CourseID, CourseName
FROM COURSE
ORDER BY CourseID ;

Solution5(database)

  • 1.
    1 Ch 6: Problemsand Exercises 1 CREATE TABLE STUDENT (StudentID NUMBER NOT NULL , StudentName VARCHAR2(25), CONSTRAINT STUDENT_PK PRIMARY KEY (StudentID)); CREATE TABLE FACULTY (FacultyID NUMBER NOT NULL, FacultyName VARCHAR2(25), CONSTRAINT FACULTY_PK PRIMARY KEY (FacultyID)); CREATE TABLE COURSE (CourseID CHAR(8) NOT NULL, CourseName VARCHAR2(15), CONSTRAINT COURSE_PK PRIMARY KEY (CourseID));
  • 2.
    2 Ch 6: Problemsand Exercises 1 (cont.) CREATE TABLE SECTION (SectionNo NUMBER NOT NULL, CourseID CHAR(8), CONSTRAINT SECTION_PK PRIMARY KEY (SectionNo), CONSTRAINT SECTION_FK FOREIGN KEY (CourseID) REFERENCES COURSE (CourseID)); CREATE TABLE QUALIFIED (FacultyID NUMBER NOT NULL , CourseID CHAR(8) NOT NULL, DateQualified DATE, CONSTRAINT QUALIFIED_PK PRIMARY KEY (FacultyID, CourseID) CONSTRAINT QUALIFIED_FK1 FOREIGN KEY (FacultyID) REFERENCES FACULTY (FacultyID) CONSTRAINT QUALIFIED_FK2 FOREIGN KEY (CourseID) REFERENCES COURSE (CourseID));
  • 3.
    3 Ch 6: Problemsand Exercises 1 (cont.) CREATE TABLE REGISTRATION (StudentID NUMBER NOT NULL, SectionNo NUMBER NOT NULL, Semester CHAR(7), CONSTRAINT REGISTRATION_PK PRIMARY KEY (StudentID, SectionNo), CONSTRAINT REGISTRATION_FK1 FOREIGN KEY (StudentID) REFERENCES STUDENT (StudentID), CONSTRAINT REGISTRATION_FK2 FOREIGN KEY (SectionNo) REFERENCES SECTION (SectionNo));
  • 4.
    4 Ch 6: Problemsand Exercises 2 CREATE VIEW Student_V AS SELECT * FROM STUDENT;
  • 5.
    5 Ch 6: Problemsand Exercises 3 (a) Referential integrity may be enforced when the SECTION table is created: CREATE TABLE SECTION (SectionNo NUMBER NOT NULL, CourseID CHAR(8), CONSTRAINT SECTION_PK PRIMARY KEY (SectionNo) CONSTRAINT SECTION_FK FOREIGN KEY (CourseID) REFERENCES COURSE (CourseID)); (b) Or, referential integrity may be enforced using the ALTER TABLE command: ALTER TABLE SECTION ADD CONSTRAINT SECTION_FK FOREIGN KEY (CourseID) REFERENCES COURSE(CourseID);
  • 6.
    6 Ch 6: Problemsand Exercises 4 (a) ALTER TABLE STUDENT ADD (Class VARCHAR2(6)); (b) DROP TABLE REGISTRATION; (c) ALTER TABLE FACULTY MODIFY (FacultyName VARCHAR2(40));
  • 7.
    7 Ch 6: Problemsand Exercises 5 (a) INSERT INTO STUDENT (StudentID, StudentName) VALUES (65798, ‘Lopez’); Alternatively: INSERT INTO STUDENT VALUES (65798, ‘Lopez’); (b) DELETE FROM STUDENT WHERE StudentID = 65798; (c) UPDATE COURSE SET CourseName=‘Introduction to Relational Databases’ WHERE CourseID=‘ISM 4212’;
  • 8.
    8 Ch 6: Problemsand Exercises 6 (a) SELECT StudentID, StudentName FROM STUDENT WHERE StudentID < 50000; (b) SELECT FacultyName FROM FACULTY WHERE FacultyID = 4756; (c) SELECT MIN(SectionNo) FROM REGISTRATION WHERE Semester= ‘I-2008’;
  • 9.
    9 Ch 6: Problemsand Exercises 7 (a) SELECT COUNT (*) FROM REGISTRATION WHERE SectionID=2714 AND Semester=‘I-2008’; (b) SELECT FacultyID, CourseID, DateQualified FROM QUALIFIED WHERE DateQualified >= ‘01-JAN-1993’;
  • 10.
    10 Ch 6: Problemsand Exercises 8 (a) SELECT StudentID, COUNT (*) FROM REGISTRATION WHERE SectionNo IN (2714, 2715) GROUP BY StudentID HAVING COUNT(*) = 2; (b) SELECT FacultyID, COUNT (*) FROM QUALIFIED WHERE CourseID IN (‘ISM 3113’, ‘ISM 3112’) GROUP BY FacultyID HAVING COUNT(*) = 1; Note: COUNT(*)>1 also ok.
  • 11.
    11 Ch 6: Problemsand Exercises 9 (a) SELECT DISTINCT CourseID FROM SECTION; (b) SELECT StudentName FROM STUDENT ORDER BY StudentName; (c) SELECT SectionNo, StudentID FROM REGISTRATION ORDER BY SectionNo, StudentID; (d) SELECT CourseID, CourseName FROM COURSE ORDER BY CourseID ;