본 실습은 Oracle9i introduction to Oracle9i SQL vol2의 '14장 sql 강습' 을 토대로 진행했습니다.
※시퀀스(sequence)
지정 정수로부터 시작하여, 지정한 만큼 증가하여 다음 정수를 반환, 지정 정수까지만 진행하여 독립적인 값을 생성하는 객체
INCREMENT BY 증가 값 -- 해당 값만큼 증가
START WITH 시작 값 -- 해당 값부터 시작
MAXVALUE 끝 값 -- 해당 값까지 증가
NOCACHE --시퀀스의 캐시 메모리 저장 여부
NOCYCLE; -- MAXVALUE 초과 시 다시 START WITH 값으로 시작 여부
3 . MEMBER 테이블 및 TITLE 테이블의 각 행(row)을 고유하게 식별하는 시쿼스를 생성하십시오.
a.MEMBER 테이블의 회원번호는 101부터 시작하고 값이 캐시되지 않도록 하십시오.
시퀀스 이름은 MEMBER_ID_SEQ 로 지정하십시오.
-생성 스크립트
create sequence title_id_seq increment by 1 start with 92 nocache nocycle;
b.TITLE 테이블의 제목 번호는 92부터 시작하고 캐시되지 않도록 하십시오. 시퀀스 이름은 TITLE_ID_SEQ 로 지정하십시오.
-생성 스크립트
create sequence member_id_seq increment by 1 start with 101 nocache nocycle;
※SELECT
-SQL 기본적인 '조회'를 위한 구문
기본 형식
SELECT 열 이름1[, 열 이름2, ... ] FROM 테이블 이름 -- 해당 테이블로부터 필요한 열에 대해 조회
[WHERE 조건식 --해당 조건 식에 대해 만족하는 열에 대해서만 조회
GROUP BY 대상 열 이름 --조회 된 열 들에 대해 그룹회
HAVING 집계 함수 관련 조건식 --조회된 열들에 대해 그룹화한 열에 대해 조건 적용
ORDER BY 기준 열 ... ] --모든 열 출력 후 정렬
실행 순서 : FROM -> WHERE-> GROUP BY -> HAVING -> SELECT -> ORDER BY
SELECT 문으로 조회 된 값은 SELECT, FROM, WHERE 절에서의 사용이 가능하다.
※서브쿼리
-SELECT , FROM, WHERE 에서 다른 테이블에서부터 조회된 결과를 사용하는 방식
FROM 절에서 사용된 서브쿼리는 '인라인 뷰'로 테이블처럼 사용이 가능하다.
사용 조건
-단일행 연산, SELECT 절에서의 서브쿼리에는 반드시 단일 행 이 반환 되어야 한다.
-'인라인 뷰' 서브쿼리에서의 집계함수 사용 열은 별칭을 지정해 줘야 한다.
(SELECT ..., 열 이름 AS 별칭 ... -> 별칭ALIAS)
추가 참고사항
예제에서 사용된 ORACLE 의 시간 기본 형식은 '한글'로 되어있기 때문에 월에 해당하는 형식은 '월'표기가 된다.
TO_DATE('05-OCT-1995', 'DD-MON-YYYY', 'NLS_DATE_LANGUAGE = American')
(TO_DATE : 문자열을 날짜 형식으로 변환)
값 삽입시 다음의 조치를 취하거나, ORACLE 내부 설정 변수를 통한 설정이 필요하다.
4. 테이블 데이터 추가
-TITLE table 데이터 추가 스크립트
insert into title values(title_id_seq.nextval, 'Willie and Christmas Too',
'All of Willie''s friends make a Christmas list for Santa, but Willie has yet to add his own wish list',
'G', 'CHILD', TO_DATE('05-OCT-1995', 'DD-MON-YYYY', 'NLS_DATE_LANGUAGE = American'));
insert into title values(title_id_seq.nextval, 'Alien Again',
'Yet another installation of science fiction history. Can the heroine save the planet from the alien like form?',
'R','SCIFI',TO_DATE('19-MAY-1995', 'DD-MON-YYYY', 'NLS_DATE_LANGUAGE = American'));
insert into title values(title_id_seq.nextval, 'The Glob',
'A meteor crashes near a small American town and unleashes carnivorous foo in this classic',
'NR','SCIFI',TO_DATE('12-AUG-1995', 'DD-MON-YYYY', 'NLS_DATE_LANGUAGE = American'));
insert into title values(title_id_seq.nextval,'My Day Off',
'With a little luck and a lot of ingenuity, a teenager skips school for a day in New York',
'PG','COMEDY',TO_DATE('12-JUL-1995', 'DD-MON-YYYY', 'NLS_DATE_LANGUAGE = American'));
insert into title values(title_id_seq.nextval, 'Miracles on Ice',
'A six-year-old has doubts about Santa Claus, but she discovers that miracles really do exist',
'PG','DRAMA',TO_DATE('12-SEP-1995', 'DD-MON-YYYY', 'NLS_DATE_LANGUAGE = American'));
insert into title values(title_id_seq.nextval, 'Soda Gang',
'After discovering a cache of drugs, a young couple find themselces pitted against a vicious',
'NR','ACTION',TO_DATE('01-JUN-1995', 'DD-MON-YYYY', 'NLS_DATE_LANGUAGE = American'));
-MEMBER table 데이터 추가 스크립트
insert into member values(member_id_seq.nextval, 'Carmen','Velasquez','283 King Street', 'Seattle',
'206-899-6666',TO_DATE('08-MAR-1990', 'DD-MON-YYYY', 'NLS_DATE_LANGUAGE = American'));
insert into member values(member_id_seq.nextval, 'LaDoris','Ngao','5 Modrany', 'Bratislava',
'586-355-882',TO_DATE('08-MAR-1990', 'DD-MON-YYYY', 'NLS_DATE_LANGUAGE = American'));
insert into member values(member_id_seq.nextval, 'Midori','Nagayama','68 Via Centale', 'Sao Paolo',
'254-852-5764',TO_DATE('17-JUN-1991', 'DD-MON-YYYY', 'NLS_DATE_LANGUAGE = American'));
insert into member values(member_id_seq.nextval, 'Mark','Quick-to-See','6921 King Way', 'Lagos',
'63-559-7777',TO_DATE('07-APR-1990', 'DD-MON-YYYY', 'NLS_DATE_LANGUAGE = American'));
insert into member values(member_id_seq.nextval, 'Audry','Ropeburn','86 Chu Street', 'Hong Kong',
'41-559-87',TO_DATE('18-JAN-1991', 'DD-MON-YYYY', 'NLS_DATE_LANGUAGE = American'));
insert into member values(member_id_seq.nextval, 'Molly','Urguhart','3035 Laurier', 'Quebec',
'418-542-9988',TO_DATE('18-JAN-1991', 'DD-MON-YYYY', 'NLS_DATE_LANGUAGE = American'));
-TITLE_COPY table 데이터 추가 스크립트
insert into title_copy values(1,(select title_id from title where title = 'Willie and Christmas Too'),'AVAILABLE');
insert into title_copy values(1,(select title_id from title where title = 'Alien Again'),'AVAILABLE');
insert into title_copy values(2,(select title_id from title where title = 'Alien Again'),'RENTED');
insert into title_copy values(1,(select title_id from title where title = 'The Glob'),'AVAILABLE');
insert into title_copy values(1,(select title_id from title where title = 'My Day Off'),'AVAILABLE');
insert into title_copy values(2,(select title_id from title where title = 'My Day Off'),'AVAILABLE');
insert into title_copy values(3,(select title_id from title where title = 'My Day Off'),'RENTED');
insert into title_copy values(1,(select title_id from title where title = 'Miracles on Ice'),'AVAILABLE');
insert into title_copy values(1,(select title_id from title where title = 'Soda Gang'),'AVAILABLE');
-RENTAL table 데이터 추가 스크립트
insert into title_copy values(1,(select title_id from title where title = 'Willie and Christmas Too'),'AVAILABLE');
insert into title_copy values(1,(select title_id from title where title = 'Alien Again'),'AVAILABLE');
insert into title_copy values(2,(select title_id from title where title = 'Alien Again'),'RENTED');
insert into title_copy values(1,(select title_id from title where title = 'The Glob'),'AVAILABLE');
insert into title_copy values(1,(select title_id from title where title = 'My Day Off'),'AVAILABLE');
insert into title_copy values(2,(select title_id from title where title = 'My Day Off'),'AVAILABLE');
insert into title_copy values(3,(select title_id from title where title = 'My Day Off'),'RENTED');
insert into title_copy values(1,(select title_id from title where title = 'Miracles on Ice'),'AVAILABLE');
insert into title_copy values(1,(select title_id from title where title = 'Soda Gang'),'AVAILABLE');
-RENTAL table 데이터 추가 스크립트
insert into rental values(sysdate-3, 101, 1,sysdate-2,sysdate-1,92);
insert into rental values(sysdate-1, 101, 2,null,sysdate+1,93);
insert into rental values(sysdate-2, 102, 3,null,sysdate,95);
insert into rental values(sysdate-4, 106, 1,sysdate-2,sysdate-2,97);
댓글
댓글 쓰기