-
DB Oracle Select문 활용하는 방법Programming and Database/SQL 2023. 2. 11. 21:22728x90반응형
DB Oracle Slect문 활용하는 방법
CREATE TABLE userTbl -- 회원 테이블 ( userID CHAR(8) NOT NULL PRIMARY KEY, -- 사용자 아이디 (pK) name VARCHAR(10) NOT NULL, -- 이름 birthYear INT NOT NULL, -- 출생년도 addr CHAR(2) NOT NULL, -- 지역(경기, 서울, 경남 식으로 2글자만 입력) mobile1 CHAR(3), -- 휴대폰의 국번 (011, 016, 017, 018, 019, 010등) mobile2 CHAR(8), -- 휴대폰의 나머지 번호 (하이픈제외) height NUMBER(3), -- 키 mDate DATE -- 회원 가입일 ); Table USERTBL이(가) 생성되었습니다.
▶ Create문을 통해서 두 개의 테이블을 생성해 보도록 하겠습니다. SQLDB 스키마 유저에 칼럼 속성으로 생성하게 될 userID, name, birthYear, addr, mobile1, mobile2, height, mDate을 usertbl 테이블에 생성합니다. 생성 시 usertbl을 primary 기본키를 userID에 부여하도록 합니다.
CREATE TABLE buyTBl -- 회원 구매 테이블 ( idNum NUMBER(8) NOT NULL PRIMARY KEY, --순번(PK) userID CHAR(9) NOT NULL, -- 아이디(FK) prodName NCHAR(6) NOT NULL, --물품명 groupName NCHAR(4), --분류 price NUMBER(8) NOT NULL, --단가 amount NUMBER(3) NOT NULL, --수량 FOREIGN KEY (userID) REFERENCES userTBl(userID) ); Table BUYTBL이(가) 생성되었습니다.
▶ 두번째 테이블명인 buytbl 테이블에도 idnum, userID, prodname, groupname, price, amount를 생성하고 해당 테이블 내의 기본키를 IdNum으로 지정하고 외래키를 userID로 지정합니다. --> userID는 usertbl의 테이블의 기본키를 buytbl에서 외래키로 사용
SELECT * FROM TAB; TNAME TABTYPE CLUSTERID ------------------------------ ------- ---------- BUYTBL TABLE USERTBL TABLE
▶ 생성된 테이블을 SELECT문을 통해서 확인합니다. 두개의 테이블명(BUYTBL, USERTBL)이 생성된 것을 확인합니다.
INSERT INTO userTbl VALUES('LSG', '이승기', 1987, '서울', '011', '1111111', 182, '2008-8-8'); INSERT INTO userTbl VALUES('KBS', '김범수', 1979, '경남', '011', '2222222', 173, '2012-4-4'); INSERT INTO userTbl VALUES('KKH', '김경호', 1971, '전남', '019', '3333333', 177, '2007-7-7'); INSERT INTO userTbl VALUES('JYP', '조용필', 1950, '경기', '011', '4444444', 166, '2009-4-4'); INSERT INTO userTbl VALUES('SSK', '성시경', 1979, '서울', NULL , NULL , 186, '2013-12-12'); INSERT INTO userTbl VALUES('LJB', '임재범', 1963, '서울', '016', '6666666', 182, '2009-9-9'); INSERT INTO userTbl VALUES('YJS', '윤종신', 1969, '경남', NULL , NULL , 170, '2005-5-5'); INSERT INTO userTbl VALUES('EJW', '은지원', 1972, '경북', '011', '8888888', 174, '2014-3-3'); INSERT INTO userTbl VALUES('JKW', '조관우', 1965, '경기', '018', '9999999', 172, '2010-10-10'); INSERT INTO userTbl VALUES('BBK', '바비킴', 1973, '서울', '010', '0000000', 176, '2013-5-5'); INSERT INTO userTBl VALUES( 'LSG', '이승기', 1987, '서울', '011', '11111111', 182, '2008-8-8'); INSERT INTO userTBl VALUES('LSG', '이승기', 1987, '서울', '011', '11111111', 182, '2008-8-8') 오류 보고 - ORA-12899: value too large for column "SQLDB"."USERTBL"."ADDR" (actual: 6, maximum: 2)
▶ 생성된 USERTBL에 각각의 컬럼(속성)에 맞도록 데이터 값을 입력하도록 합니다. INSERT문을 통해서 VALUES 값을 순차적으로 지정하여 삽입하도록 합니다. 값이 필요 없는 경우는 NULL로 지정합니다.
* ORA-12899: value too large for column "SQLDB"."USERTBL"."ADDR" (actual: 6, maximum: 2)
위와 같이 에러 발생을 통해서 주소의 경우 제한이 오류로 인해 해당 필드 값의 속성을 변경하도록 합니다.ALTER TABLE userTBl modify addr CHAR(8); Table USERTBL이(가) 변경되었습니다. INSERT INTO userTBl VALUES('LSG', '이승기', 1987, '서울', '011', '11111111', 182, '2008-8-8'); 1 행 이(가) 삽입되었습니다.
▶ ALTER을 통해서 USERTBL 테이블의 ADDR 주소 칼럼의 MAXIMUM을 8로 변경하도록 합니다. 변경 후 기존 데이터를 삽입하게 되면 데이터 입력이 가능하게 됩니다.
INSERT INTO userTBl VALUES( 'KBS', '김범수', 1979, '경남', '011', '22222222', 173, '2012-4-4'); INSERT INTO userTBl VALUES( 'KKH', '김경호', 1971, '전남', '019', '33333333', 177, '2007-7-7'); INSERT INTO userTBl VALUES( 'JYP', '조용필', 1950, '경기', '011', '44444444', 166, '2009-4-4'); INSERT INTO userTBl VALUES( 'SSK', '성시경', 1979, '서울', NULL, NULL, 186, '2013-12-12'); INSERT INTO userTBl VALUES( 'LJB', '임재범', 1963, '서울', '016', '66666666', 182, '2009-9-9'); INSERT INTO userTBl VALUES( 'YJS', '윤종신', 1969, '경남', NULL, NULL, 170, '2005-5-5'); INSERT INTO userTBl VALUES( 'EJW', '은지원', 1972, '경북', '011', '88888888', 174, '2014-3-3'); INSERT INTO userTBl VALUES( 'JKW', '조관우', 1965, '경기', '018', '99999999', 172, '2010-10-10'); INSERT INTO userTBl VALUES( 'BBK', '바비킴', 1973, '서울', '010', '00000000', 176, '2013-5-5'); 8 행 이(가) 삽입되었습니다.
▶ 나머지 샘플 데이터를 INSERT문을 통해서 입력하도록 합니다.
CREATE SEQUENCE idSEQ; Sequence IDSEQ이(가) 생성되었습니다.
▶ BUYTBL에 데이터를 입력하기 전에 시퀀스를 생성하게 되면 데이터를 1,2,3,4... 10 순으로 NUM이 생성되어 순차적으로 데이터가 들어가기 위한 시퀀스를 생성하도록 합니다.(BUYTBL 데이터 삽입시 이용)
INSERT INTO buyTbl VALUES(idSEQ.NEXTVAL, 'KBS', '운동화', NULL , 30, 2); INSERT INTO buyTbl VALUES(idSEQ.NEXTVAL, 'KBS', '노트북', '전자', 1000, 1); INSERT INTO buyTbl VALUES(idSEQ.NEXTVAL, 'JYP', '모니터', '전자', 200, 1); INSERT INTO buyTbl VALUES(idSEQ.NEXTVAL, 'BBK', '모니터', '전자', 200, 5); INSERT INTO buyTbl VALUES(idSEQ.NEXTVAL, 'KBS', '청바지', '의류', 50, 3); INSERT INTO buyTbl VALUES(idSEQ.NEXTVAL, 'BBK', '메모리', '전자', 80, 10); INSERT INTO buyTbl VALUES(idSEQ.NEXTVAL, 'SSK', '책' , '서적', 15, 5); INSERT INTO buyTbl VALUES(idSEQ.NEXTVAL, 'EJW', '책' , '서적', 15, 2); INSERT INTO buyTbl VALUES(idSEQ.NEXTVAL, 'EJW', '청바지', '의류', 50, 1); INSERT INTO buyTbl VALUES(idSEQ.NEXTVAL, 'BBK', '운동화', NULL , 30, 2); INSERT INTO buyTbl VALUES(idSEQ.NEXTVAL, 'EJW', '책' , '서적', 15, 1); INSERT INTO buyTbl VALUES(idSEQ.NEXTVAL, 'BBK', '운동화', NULL , 30, 2);
▶ 생성된 BUYTBL에 각각의 칼럼(속성)에 맞도록 데이터 값을 입력하도록 합니다. INSERT문을 통해서 VALUES 값을 순차적으로 지정하여 삽입하도록 합니다. 값이 필요 없는 경우는 NULL로 지정합니다.
삽입시 IdSEQ.NEXTVAL 시퀀스를 사용하여 데이터를 순차적으로 입력을 하여 1,2,3,4... 10으로 나타내도록 합니다.SELECT * FROM USERTBL; USERID NAME BIRTHYEAR ADDR MOB MOBILE2 HEIGHT MDATE -------- ---------- ---------- -------- --- -------- ---------- -------- LSG 이승기 1987 서울 011 1111111 182 08/08/08 KBS 김범수 1979 경남 011 2222222 173 12/04/04 KKH 김경호 1971 전남 019 3333333 177 07/07/07 JYP 조용필 1950 경기 011 4444444 166 09/04/04 SSK 성시경 1979 서울 186 13/12/12 LJB 임재범 1963 서울 016 6666666 182 09/09/09 YJS 윤종신 1969 경남 170 05/05/05 EJW 은지원 1972 경북 011 8888888 174 14/03/03 JKW 조관우 1965 경기 018 9999999 172 10/10/10 BBK 바비킴 1973 서울 010 0000000 176 13/05/05
▶ 데이터 입력 후 생성된 USERTBL 테이블의 데이터를 확인하도록 합니다.
SELECT * FROM BUYTBL; IDNUM USERID PRODNA GROU PRICE AMOUNT ---------- --------- ------ ---- ---------- ---------- 1 KBS 운동화 30 2 2 KBS 노트북 전자 1000 1 3 JYP 모니터 전자 200 1 4 BBK 모니터 전자 200 5 5 KBS 청바지 의류 50 3 6 BBK 메모리 전자 80 10 7 SSK 책 서적 15 5 8 EJW 책 서적 15 2 9 EJW 청바지 의류 50 1 10 BBK 운동화 30 2 11 EJW 책 서적 15 1 12 BBK 운동화 30 2 12개 행이 선택되었습니다.
▶ 데이터 입력 후 생성된 BUYTBL 테이블의 데이터를 확인하도록 합니다.
2022.06.09 - [Programming and Database/SQL] - DB MYSQL 기본 다지기[1편] - SELECT
PS. 포스팅의 내용은 제 기준으로 작성한 것이기 때문에 참고해서 보시면 감사하겠습니다.
포스팅 과정의 오류 및 오타 그리고 궁금한 점에 대해서는 댓글 남겨주세요.
728x90반응형'Programming and Database > SQL' 카테고리의 다른 글
DB Oracle21 ASM + RAC 환경 구축하기(With.H/W 환경 설치) 1편 (0) 2024.06.09 DB Oracle Where문 활용하는 방법(1) (2) 2023.02.15 DB Oracle SQL PLUS 활용하는 방법 (8) 2023.01.17 DB Oracle 백업을 통한 테이블 복구 하는 방법 (4) 2023.01.16 DB Oracle 뷰(View) 테이블 생성 및 저장 프로시저 사용하는 방법 (6) 2023.01.11