Professional Documents
Culture Documents
데이터베이스 07 gisa
데이터베이스 07 gisa
(4) DML
1) SELECT 9908 0007 0103 0303 0305 0503 9904 9908 9910 0305 0409 0505 0509
58
www.gisa79.com
• HAVING 9910 0509 9906
- COUNT(속성): 그룹별 튜플 수
- AVG(속성): 그룹별 평균
- SUM(속성): 그룹별 합계
- MAX(속성): 그룹별 최대값
- MIN(속성): 그룹별 최소값
• EXISTS(Q)
질의 Q의 결과에 최소한 한 개의 튜플이 있다면 참, 그렇지 않으면 거짓
을 반환.
• NOT EXISTS(Q)
질의 Q의 결과에 튜플이 없다면 참, 그렇지 않으면 거짓을 반환.
• 비교연산자 0106
= : 같다
<> : 같지 않다
> : 크다
< : 작다
>= : 크거나 같다
<= : 작거나 같다
IN : 포함되어 있다
• IS NULL 0409
59
PART 1 | 데이터베이스
③ 예제
• 수강생 테이블에 김길현, 정보, 남구, 100 을 넣어라.
⇨ INSERT INTO 수강생 VALUES ('김길현','정보','남구',100)
• 수강생 테이블에 이름, 수강료 에 이상인, 120을 넣어라.
⇨ INSERT INTO 수강생(이름,수강료) VALUES ('이상인',120)
• 수강생 테이블에서 주소가 남구인 이름, 과목, 수강료를 SELECT 해서
정보수강생 테이블을 만들어 이름, 과목, 수강료를 넣어라.
⇨ INSERT INTO 정보수강생(이름,과목,수강료)
SELECT 이름,과목,수강료 FROM 수강생 WHERE 주소='남구‘
속성 테이블 조건
③ 예제
• 수강생 테이블에서 이름의 최영희인 튜플의 과목을 사무로 바꾸시오.
⇨ UPDATE 수강생 SET 과목='사무' WHERE 이름='최영희'
• 수강생 테이블에서 과목이 워드인 튜플의 수강료를 +10 하시오.
⇨ UPDATE 수강생 SET 수강료=수강료+10 WHERE 과목='워드'
60
www.gisa79.com
4) DELETE 9904
④ 예제
• 수강생 테이블에서 과목이 사무인 것만 삭제하시오.
⇨ DELETE FROM 수강생 WHERE 과목='사무'
• DELETE 는 튜플을 삭제하는 명령어 (테이블 X)
⇨ DELETE FROM 수강생
※ DROP 은 테이블 자체를 삭제하는 명령어이고,
DELETE는 튜플을 삭제하는 명령어임
61
PART 1 | 데이터베이스
(5) DCL
1) GRANT 9904 0010 0505
③ 예제
• GRANT SELECT ON 수강생 TO KSH;
(KSH는 다른 사람에게 권한을 부여할 수 없음)
⇨ 권한 : ALL, INSERT, DELETE, UPDATE, SELECT 등
※ WITH GRANT OPTION
사용자가 받은 권한을 다른 사용자에게 부여할 수 있음
2) REVOKE 0505
③ 예제
• REVOKE SELECT ON 수강생 FROM KSH [CASCADE];
⇨ KSH 에게 수강생 테이블에 대한 권한 취소
※ CASCADE
권한을 부여받은 사용자가 다른 사용자에게 부여한 권한도 취소
3) COMMIT
데이터베이스 조작 작업을 영구적으로 반영하여 완료함
4) ROLLBACK
데이터베이스 조작 작업이 비정상적으로 종료되었을 때 원래의 상태로 복구
62
www.gisa79.com
• 내장 SQL을 포함한 프로그램을 번역하여 실행시키는데 필요한 요소 0010
3) 커서(Cursor)
① SQL 문의 수행을 위해 별도의 메모리영역(Context Area)을 할당함
② Context Area는 SQL 문의 결과 Set과 수행된 SQL 문에 대한 정보를 가짐
③ 사용자는 Cursor를 통하여 Context Area의 통제와 관리가 가능함. 즉, 커서
는 Context Area에 대한 핸들
4) 커서 관련 명령어 0103
① DECLARE
커서를 정의하는 증 커서에 관련된 선언을 하는 명령
② OPEN
커서가 질의 결과의 첫 번째 튜플을 포인트 하도록 설정하는 명령
③ FETCH
질의 결과의 튜플들 중 현재의 자음 튜플로 커서를 이동시키는 명령
④ CLOSE
질의 수행 결과에 대한 처리 종료 시 커서를 닫기 위해 사용하는 명령
• 예제
DECLARE
v_dept dept.dname%type;
CURSOR cur_dept IS --------------Cursor 선언
select dname from dept;
BEGIN
OPEN cur_dept; -- Cursor open
FETCH cur_dept INTO v_dept; -- 첫 번째 row fetch
FETCH cur_dept INTO v_dept; -- 두 번째 row fetch
FETCH cur_dept INTO v_dept; -- 세 번째 row fetch
FETCH cur_dept INTO v_dept; -- 네 번째 row fetch
CLOSE cur_dept;
END;
63
PART 1 | 데이터베이스
64
www.gisa79.com
65