ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • DB Oracle Select문 활용하는 방법
    Programming and Database/SQL 2023. 2. 11. 21:22
    반응형

    DB로고이미지

    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

     

    DB MYSQL 기본 다지기[1편] - SELECT

    MY SQL 기본 다지기[1편] SELECT * FROM Customers; ▶ Customers테이블에서 전체 컬럼을 조회하여 추출 ★구문 표시 설명 1. SLECT : 선택하다=가져오다는 의미 2. * : 모든 컬럼을 가져오겠다는 의미 3. FROM : 어

    pinetreeday.tistory.com

    PS. 포스팅의 내용은 제 기준으로 작성한 것이기 때문에 참고해서 보시면 감사하겠습니다.

    포스팅 과정의 오류 및 오타 그리고 궁금한 점에 대해서는 댓글 남겨주세요.

    반응형

    댓글

Designed by Tistory.