1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | SQL> CREATE TABLE MAJOR ( 2 MNUM NUMBER(3) NOT NULL, 3 MNAME VARCHAR2(20) NOT NULL, 4 BUILD VARCHAR2(20), 5 PRIMARY KEY(MNUM) 6 ); 테이블이 생성되었습니다. SQL> INSERT INTO MAJOR VALUES(101,'컴퓨터공학과','정보관'); 1 개의 행이 만들어졌습니다. SQL> INSERT INTO MAJOR VALUES(102,'전자공학과','전자제어관'); 1 개의 행이 만들어졌습니다. SQL> INSERT INTO MAJOR VALUES(103,'경영학과','인문관'); 1 개의 행이 만들어졌습니다. SQL> INSERT INTO MAJOR VALUES(104,'경제학과'); INSERT INTO MAJOR VALUES(104,'경제학과') * 1행에 오류: ORA-00947: 값의 수가 충분하지 않습니다 SQL> INSERT INTO MAJOR (MNUM,MNAME) VALUES(104,'경제학과'); 1 개의 행이 만들어졌습니다. SQL> select * from major; MNUM MNAME BUILD ---------- -------------------- -------------------- 101 컴퓨터공학과 정보관 102 전자공학과 전자제어관 103 경영학과 인문관 104 경제학과 SQL> spool off; | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | SQL> CREATE TABLE STUDENT ( 2 SNUM NUMBER(4) NOT NULL, 3 SNAME VARCHAR2(10) NOT NULL, 4 GRADE NUMBER, 5 MNUM NUMBER(3), 6 PRIMARY KEY(SNUM), 7 FOREIGN KEY(MNUM) REFERENCES MAJOR(MNUM) 8 ); 테이블이 생성되었습니다. SQL> desc student; 이름 널? 유형 ----------------------------------------- -------- ---------------------------- SNUM NOT NULL NUMBER(4) SNAME NOT NULL VARCHAR2(10) GRADE NUMBER MNUM NUMBER(3) SQL> INSERT INTO STUDENT VALUES(9411,'서진수',4,101); 1 개의 행이 만들어졌습니다. SQL> INSERT INTO STUDENT VALUES(9412,'서재수',4,102); 1 개의 행이 만들어졌습니다. SQL> INSERT INTO STUDENT VALUES(9413,'이미경',4,103); 1 개의 행이 만들어졌습니다. SQL> INSERT INTO STUDENT VALUES(9414,'김재수',4,102); 1 개의 행이 만들어졌습니다. SQL> INSERT INTO STUDENT VALUES(9415,'박동호',4,102); 1 개의 행이 만들어졌습니다. SQL> INSERT INTO STUDENT VALUES(9511,'김신영',3,101); 1 개의 행이 만들어졌습니다. SQL> INSERT INTO STUDENT VALUES(9512,'신은경',3,102); 1 개의 행이 만들어졌습니다. SQL> INSERT INTO STUDENT VALUES(9513,'오나라',3,103); 1 개의 행이 만들어졌습니다. SQL> SELECT * FROM STUDENT; SNUM SNAME GRADE MNUM ---------- ---------- ---------- ---------- 9411 서진수 4 101 9412 서재수 4 102 9413 이미경 4 103 9414 김재수 4 102 9415 박동호 4 102 9511 김신영 3 101 9512 신은경 3 102 9513 오나라 3 103 8 개의 행이 선택되었습니다. SQL> SPOOL OFF; | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | SQL> SELECT SNAME,MNAME FROM STUDENT S, MAJOR M WHERE S.MNUM=E.MNUM; SELECT SNAME,MNAME FROM STUDENT S, MAJOR M WHERE S.MNUM=E.MNUM * 1행에 오류: ORA-00904: "E"."MNUM": 부적합한 식별자 SQL> SELECT SNAME,MNAME FROM STUDENT S, MAJOR M WHERE S.MNUM=M.MNUM; SNAME MNAME ---------- -------------------- 서진수 컴퓨터공학과 서재수 전자공학과 이미경 경영학과 김재수 전자공학과 박동호 전자공학과 김신영 컴퓨터공학과 신은경 전자공학과 오나라 경영학과 8 개의 행이 선택되었습니다. SQL> SPOOL OFF; | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | SQL> SELECT SNAME FROM STUDENT WHERE MNUM=(SELECT MNUM FROM MAJOR WHERE MNAME='전자공학과') 2 UNION 3 SELECT SNAME FROM STUDENT WHERE MNUM=(SELECT MNUM FROM STUDENT WHERE SNAME='서진수'); SNAME ---------- 김신영 김재수 박동호 서재수 서진수 신은경 6 개의 행이 선택되었습니다. SQL> SPOOL OFF; | cs |
1 2 3 4 5 6 7 8 9 | SQL> SELECT SNAME, SNUM FROM MAJOR M, STUDENT S WHERE M.MNUM=S.MNUM AND (M.MNAME='경영학과' OR M.MNAME='경제학과'); SNAME SNUM ---------- ---------- 이미경 9413 오나라 9513 SQL> SPOOL OFF; | cs |
1 2 3 4 5 6 7 8 9 10 | SQL> SELECT SNAME, SNUM FROM STUDENT S WHERE EXISTS 2 (SELECT MNUM FROM MAJOR M WHERE S.MNUM=M.MNUM AND(M.MNAME='컴퓨터공학과' OR M.MNAME='경제학과')); SNAME SNUM ---------- ---------- 김신영 9511 서진수 9411 SQL> SPOOL OFF | cs |
'Database > SQL' 카테고리의 다른 글
[SQL] SELECT 문 실습 - 데이터 변경(2) (0) | 2018.03.05 |
---|---|
[SQL] SELECT 문 실습 - 데이터 변경 (0) | 2018.03.05 |
[SQL] SELECT 문 실습 - 데이터 조회 (2) | 2018.03.05 |