-
-- 정보미디어학부(부서번호:100)에 소속된 모든 학생의 학번, 이름, 학과 번호를 출력하여라 select * from student; select * from department; select studno, name, deptno from student where deptno in( select deptno from department where college = 100); -- 모든 학생 중에서 4학년 학생 중에서 키가 제일 작은 학생보다 키가 큰 학생의 학번, 이름, 키를 출력하여라 -- any연산자 select studno, name, height from student where height > any( select height from student where grade = '4'); select studno, name, height from student where height >( select min(height) from student where grade = '4'); -- all연산자 select studno, name, height from student where height > all( select height from student where grade = '4'); -- 보직수당을 받는 교수가 한 명이라도 있으면 모든 교수의 교수번호, 이름, 보직수당 그리고 급여와 보직수당의 합을 출력하여라 select profno, name, sal, comm, (sal+nvl(comm,0)) from professor where Exists( select * from professor where comm is not null); -- PAIRWISE 비교 방법에 의해 학년별로 몸무게가 최소인 학생의 이름, 학년, 몸무게를 출력하여라. SELECT * FROM STUDENT WHERE (GRADE, WEIGHT) IN ( SELECT GRADE, MIN(WEIGHT) FROM STUDENT GROUP BY GRADE); -- UNPAIRWISE 비교 방법에 의해 학년별로 몸무게가 최소인 학생의 이름, 학년, 몸무게를 출력하여라. SELECT NAME, GRADE, WEIGHT FROM STUDENT WHERE GRADE IN( SELECT GRADE FROM STUDENT GROUP BY GRADE) AND WEIGHT IN( SELECT MIN(WEIGHT) FROM STUDENT GROUP BY GRADE) ORDER BY 2, 3; -- 각 학과 학생의 평균 키보다 키가 큰 학생의 이름, 학과 번호, 키를 출력하여라 SELECT NAME, DEPTNO, HEIGHT FROM STUDENT S1 WHERE HEIGHT>( SELECT AVG(HEIGHT) FROM STUDENT S2 WHERE S2.DEPTNO = S1.DEPTNO); INSERT INTO STUDENT (STUDNO, NAME) VALUES(12345, '홍길동'); SELECT * FROM STUDENT WHERE STUDNO = 12345; COMMIT; UPDATE STUDENT SET NAME = '고길동' WHERE STUDNO = 12345; DELETE STUDENT WHERE STUDNO = 12345; insert into student values (10110, '홍길동','hong','1','8501011143098','85/01/01','041)630-3114',170,70,101,9903); select * from student where studno = 10111; insert into student values (10111, '홍길동','hong','1','8501011143098','85/01/01','041)630-3114',170,70,101,''); insert into department values(301,'환경보건학과', '',''); select * from department; insert into professor(profno, name, position, hiredate, deptno) values(9920, '최윤식','조교수',TO_DATE('2006/01/01','YYYY/MM/DD'), 102); select * from professor; insert into professor values(9910,'백미선','white', '전임강사',200, sysdate, 10, 101); delete from student where studno=10110; insert into stu3 select * from student; select * from stu3; rollback; create table weight_info as select studno, name, weight from student where 1=0; create table height_info as select studno, name, Height from student where 1=0; --VALUES 값에 별칭도 가능 INTO값도 생략가능(대신 VALUES값을 다 넣어줘야함) INSERT ALL INTO Weight_info(STUDNO, NAME) VALUES(S, N) INTO height_info VALUES(S, N, H) SELECT STUDNO S, NAME N, HEIGHT H FROM STUDENT WHERE GRADE >= 2; SELECT * FROM WEIGHT_INFO; SELECT * FROM HEIGHT_INFO; --테이블은 남겨두고 데이터값만 삭제 TRUNCATE TABLE WEIGHT_INFO; TRUNCATE TABLE HEIGHT_INFO;서브쿼리
in
any
all
EXISTS
PAIRWISE
UNPAIRWISE
- DML
- SELECT
- INSERT
- UPDATE
- DELETE
- DDL
- 트랜잭션(ACID)
- 원자성
- 일관성
- 값 참조시에 복사본을 활용 해서
- 고립성
- 다른 트랜잭션이 끼어 들지 못함 SQL DEVELOPER로 SQL작동 시 CMD에선 무한 대기가 생길 순 있음
- 지속성
- 정상적인 종료가 된 다음에 데이터베이스 작업의 결과가 저장되어야한다
- CONDITIONAL
- DML