CREATE TABLE 학과 (
번호 NUMBER NOT NULL PRIMARY KEY,
이름 NVARCHAR2(10) NOT NULL
);
CREATE TABLE 교수 (
번호 NUMBER NOT NULL PRIMARY KEY,
이름 NVARCHAR2(10) NOT NULL,
학과번호 NUMBER NOT NULL,
FOREIGN KEY(학과번호) REFERENCES 학과(번호)
);
CREATE TABLE 학생(
번호 NUMBER NOT NULL PRIMARY KEY,
이름 NVARCHAR2(10) NOT NULL,
주소 NVARCHAR2(50),
학년 NUMBER,
키 NUMBER,
몸무게 NUMBER,
상태 NVARCHAR2(4),
입력일자 DATE,
학과번호 NUMBER NOT NULL,
FOREIGN KEY(학과번호) REFERENCES 학과(번호)
);
CREATE TABLE 과목(
번호 NUMBER NOT NULL PRIMARY KEY,
이름 NVARCHAR2(11) NOT NULL,
학점 NUMBER,
교수번호 NUMBER NOT NULL,
FOREIGN KEY(교수번호) REFERENCES 교수(번호)
);
CREATE TABLE 수강내역(
학생번호 NUMBER NOT NULL,
과목번호 NUMBER NOT NULL,
점수 NUMBER(4,1),
등급 NVARCHAR2(1),
CONSTRAINT 수강내역PK PRIMARY KEY(학생번호, 과목번호),
FOREIGN KEY(학생번호) REFERENCES 학생(번호),
FOREIGN KEY(과목번호) REFERENCES 과목(번호)
);
CREATE SEQUENCE SEQ;
INSERT INTO 학과 VALUES(SEQ.NEXTVAL, '소프트웨어공학과');
INSERT INTO 학과 VALUES(SEQ.NEXTVAL, '컴퓨터공학과');
INSERT INTO 학과 VALUES(SEQ.NEXTVAL, '경영정보학과');
INSERT INTO 학과 VALUES(SEQ.NEXTVAL, '경영학과');
INSERT INTO 학과 VALUES(SEQ.NEXTVAL, '연극영화학과');
INSERT INTO 학과 VALUES(SEQ.NEXTVAL, '철학과');
SELECT * FROM 학과;
DROP SEQUENCE SEQ;
CREATE SEQUENCE SEQ;
INSERT INTO 교수 VALUES(SEQ.nextval, '이해진', 1);
INSERT INTO 교수 VALUES(SEQ.nextval, '김정주', 1);
INSERT INTO 교수 VALUES(SEQ.nextval, '김이숙', 1);
INSERT INTO 교수 VALUES(SEQ.nextval, '이석호', 2);
INSERT INTO 교수 VALUES(SEQ.nextval, '김사부', 3);
INSERT INTO 교수 VALUES(SEQ.nextval, '장미희', 5);
INSERT INTO 교수 VALUES(SEQ.nextval, '백남영', 5);
INSERT INTO 교수 VALUES(SEQ.nextval, '김현이', 5);
INSERT INTO 교수 VALUES(SEQ.nextval, '이사부', 5);
SELECT * FROM 교수;
DROP SEQUENCE SEQ;
CREATE SEQUENCE SEQ;
INSERT INTO 과목 VALUES(SEQ.NEXTVAL, '데이터베이스관리', 3, 3);
INSERT INTO 과목 VALUES(SEQ.NEXTVAL, '데이터베이스프로그래밍', 3, 3);
INSERT INTO 과목 VALUES(SEQ.NEXTVAL, 'SQL활용', 3, 4);
INSERT INTO 과목 VALUES(SEQ.NEXTVAL, '데이터베이스', 4, 5);
INSERT INTO 과목 VALUES(SEQ.NEXTVAL, '인터넷마케팅', 3, 5);
INSERT INTO 과목 VALUES(SEQ.NEXTVAL, '연기실습', 2, 7);
INSERT INTO 과목 VALUES(SEQ.NEXTVAL, '영화제작실습', 2, 8);
INSERT INTO 과목 VALUES(SEQ.NEXTVAL, '영화마케팅', 1, 9);
SELECT * FROM 과목;
DROP SEQUENCE SEQ;
CREATE SEQUENCE SEQ;
INSERT INTO 학생(번호,이름,주소,학년,키,몸무게,상태,입력일자,학과번호)
VALUES(SEQ.nextval, '김이향', '인천남동구', 4, 166, 56, '재학', '2005-03-01',5);
INSERT INTO 학생(번호,이름,주소,학년,키,상태,입력일자,학과번호)
VALUES(SEQ.nextval, '박보검', '인천부평구', 4, 168, '재학', '2010-03-01',6);
INSERT INTO 학생(번호,이름,주소,학년,상태,입력일자,학과번호)
VALUES(SEQ.nextval, '이세영', '서울구로구', 4, '재학', '2013-03-01',4);
INSERT INTO 학생(번호,이름,주소,학년,상태,입력일자,학과번호)
VALUES(SEQ.nextval, '문주원', '경기부천시', 3, '재학', '2014-02-13',3);
INSERT INTO 학생(번호,이름,주소,학년,상태,입력일자,학과번호)
VALUES(SEQ.nextval, '성춘향', '서울영등포구', 3, '재학', '2014-02-13',5);
INSERT INTO 학생(번호,이름,주소,학년,키,몸무게,상태,입력일자,학과번호)
VALUES(SEQ.nextval, '박지은', '서울양천구', 2, 183, 65, '재학', '2015-02-14',3);
INSERT INTO 학생(번호,이름,주소,학년,키,몸무게,상태,입력일자,학과번호)
VALUES(SEQ.nextval, '안칠현', '서울금천구', 1, 178, 65, '재학', '2016-02-19',1);
INSERT INTO 학생(번호,이름,주소,학년,키,몸무게,상태,입력일자,학과번호)
VALUES(SEQ.nextval, '김태희', '서울구로구', 1, 165, 45, '재학', '2016-02-19',3);
INSERT INTO 학생(번호,이름,주소,학년,키,몸무게,상태,입력일자,학과번호)
VALUES(SEQ.nextval, '채영', '서울구로구', 1, 172, 47, '재학', '2016-02-19',2);
INSERT INTO 학생(번호,이름,학년,키,몸무게,상태,입력일자,학과번호)
VALUES(SEQ.nextval, '박수애', 1, 168, 46, '재학', '2016-02-19',2);
INSERT INTO 학생(번호,이름,주소,학년,키,몸무게,상태,입력일자,학과번호)
VALUES(SEQ.nextval, '영란', '서울강남구', 1, 162, 43, '재학', '2016-02-19',5);
INSERT INTO 학생(번호,이름,주소,학년,키,몸무게,상태,입력일자,학과번호)
VALUES(SEQ.nextval, '윤호', '서울강남구', 1, 184, 66, '휴학', '2016-08-10',1);
INSERT INTO 학생(번호,이름,주소,학년,키,몸무게,상태,입력일자,학과번호)
VALUES(SEQ.nextval, '보아', '서울구로구', 1, 162, 45, '재학', '2016-02-19',1);
INSERT INTO 학생(번호,이름,주소,학년,키,몸무게,상태,입력일자,학과번호)
VALUES(SEQ.nextval, '문근영', '서울강남구', 1, 165, 45, '재학', '2016-02-19',3);
SELECT * FROM 학생;
INSERT INTO 수강내역 VALUES(7, 1, 84.5, 'B');
INSERT INTO 수강내역 VALUES(12, 1, 50, 'F');
INSERT INTO 수강내역 VALUES(13, 1, 90, 'A');
INSERT INTO 수강내역 VALUES(7, 2, 80, 'B');
INSERT INTO 수강내역 VALUES(13, 2, 94.5, 'A');
INSERT INTO 수강내역 VALUES(9, 3, 90, 'A');
INSERT INTO 수강내역 VALUES(10, 3, 70, 'C');
INSERT INTO 수강내역 VALUES(4, 4, 90, 'A');
INSERT INTO 수강내역 VALUES(6, 4, 55, 'F');
INSERT INTO 수강내역 VALUES(8, 4, 85, 'B');
INSERT INTO 수강내역 VALUES(14, 4, 95, 'A');
INSERT INTO 수강내역 VALUES(4, 5, 70, 'C');
INSERT INTO 수강내역 VALUES(6, 5, 95, 'A');
INSERT INTO 수강내역 VALUES(8, 5, 90, 'A');
INSERT INTO 수강내역 VALUES(14, 5, 95, 'A');
INSERT INTO 수강내역 VALUES(6, 8, 90, 'A');
INSERT INTO 수강내역 VALUES(8, 8, 80, 'B');
INSERT INTO 수강내역 VALUES(14, 8, 90, 'A');
INSERT INTO 수강내역 VALUES(1, 6, 85, 'B');
INSERT INTO 수강내역 VALUES(5, 6, 80, 'B');
INSERT INTO 수강내역 VALUES(11, 6, 78.5, 'C');
INSERT INTO 수강내역 VALUES(1, 7, 95, 'A');
INSERT INTO 수강내역 VALUES(5, 7, 85, 'B');
INSERT INTO 수강내역 VALUES(1, 8, 100, 'A');
SELECT * FROM 수강내역;
SET SERVEROUTPUT ON;
create or replace procedure Q21(
pi_studentID in 학생.학년%TYPE
)
as
begin
for student in (
select 이름, 학년, 키, 몸무게 from 학생
where 학년=pi_studentID order by 키 desc, 몸무게 asc
)
Loop
DBMS_OUTPUT.PUT_LINE('이름 ' || student.이름 || ' 학년 ' || student.학년 ||
' 키 ' || student.키 || ' 몸무게 ' || student.몸무게);
end loop;
end;
execute Q21(2);
execute Q21(1);
create or replace procedure Q23(
pi_studentname in 학생.이름%type
)
as
begin
for student in (
select 이름, 키, 몸무게 from 학생 where 학년 = (select 학년 from 학생 where 이름 = pi_studentname)
)
Loop
DBMS_OUTPUT.PUT_LINE('이름 ' || student.이름 || ' 키 ' || student.키 ||
' 몸무게 ' || student.몸무게);
end loop;
end;
execute Q23('문주원');
execute Q23('윤호');
create or replace procedure Q25(
pi_studentname in 학생.이름%type
)
as
begin
for student in (
select 이름, 학년, 키 from 학생 where 학년 = (select 학년 from 학생
where 이름 = pi_studentname) and 키 > (select 키 from 학생 where 이름 = pi_studentname)
)
Loop
DBMS_OUTPUT.PUT_LINE('이름 ' || student.이름 || ' 학년 ' || student.학년 ||
' 키 ' || student.키);
end loop;
end;
execute Q25('김태희');
create or replace procedure Q36(
pi_studentname in 학생.이름%type
)
as
학생번호 number;
학생이름 nvarchar2(10);
학과이름 nvarchar2(10);
begin
select 학생.번호, 학생.이름, 학과.이름 into 학생번호, 학생이름, 학과이름 from 학생
inner join 학과
on 학생.학과번호 = 학과.번호
where 학생.이름 = pi_studentname;
DBMS_OUTPUT.PUT_LINE('학생 번호 ' || 학생번호 || ' 학생 이름 ' || 학생이름 || ' 학과명 ' || 학과이름);
end;
execute Q36('김이향');
create or replace procedure Q37(
pi_studentheight in 학생.키%type
)
as
begin
for student in (
select 학생.번호, 학생.이름 as 학생이름, 학생.키, 학과.이름 as 학과이름 from 학생
inner join 학과
on 학생.학과번호 = 학과.번호
where 학생.키 >= pi_studentheight
)
Loop
DBMS_OUTPUT.PUT_LINE('학생 번호 ' || student.번호 || ' 학생 이름 ' || student.학생이름 ||
' 학생키 ' || student.키 || ' 학과명 ' || student.학과이름);
end loop;
end;
execute Q37(180);