ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • DB Oracle SQL PLUS 활용하는 방법
    Programming and Database/SQL 2023. 1. 17. 00:05
    반응형

    DB로고이미지

    DB Oracle SQL PLUS 활용하는 방법

    C:>sqlplus Shop/oracle@xe
    
    SQL*Plus: Release 11.2.0.2.0 Production on 일 1월 15 18:32:36 2023
    
    Copyright (c) 1982, 2014, Oracle.  All rights reserved.
    
    Connected to:
    Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
    ▶ 윈도우 CMD를 통해 DB에 접속하는 방법으로 sqlplus를 활용할 수 있습니다.
    SQL> CREATE TABLE soccerTable (id INT, data VARCHAR(20));
    
    Table created.
    ▶ 윈도우 CMD를 통해서 DB에 접속하게 되면 Developer에서 사용할 수 있는 sql문을 CMD 창에서도 활용하여 작성할 수 있게 됩니다. 예시를 위해서 soccertable을 임시로 생성하도록 하겠습니다.
    SQL> INSERT INTO soccerTable VALUES(1000, 'TottenhamHotspur');
    
    1 row created.
    
    SQL> INSERT INTO soccerTable VALUES(1001, 'ManchesterUnited');
    
    1 row created.
    
    SQL> INSERT INTO soccerTable VALUES(1002, 'ArsenalFC');
    
    1 row created.
    ▶ 생성된 테이블에서 INSERT문을 통해서 컬럼에 데이터를 추가하도록 합니다.
    SQL> INSERT INTO soccerTable VALUES(1003, 'WolverhamtonWanderers');
    INSERT INTO soccerTable VALUES(1003, 'WolverhamtonWanderers')
                                         *
    ERROR at line 1:
    ORA-12899: value too large for column "SHOP"."SOCCERTABLE"."DATA" (actual: 21,
    maximum: 20)
    ▶ CREATE TABLE soccerTable (id INT, data VARCHAR(20)) 구문에서 VARCHAR(20)으로 텍스트를 넘게 되면 해당 컬럼에 데이터 삽입시 오류 메시지를 호출하게 됩니다.
    SQL> SELECT * FROM SoccerTable;
    
            ID DATA
    ---------- ----------------------------------------
          1000 TottenhamHotspur
          1001 ManchesterUnited
          1002 ArsenalFC
    ▶ SLECT문을 통해서 생성된 SoccerTable을 조회하게 되면 해당 컬럼에 삽입한 ID: 1000,1001,1002와 함께 DATA TottenhamHotspur, ManchesterUnited, ArsenalFC 데이터가 조회됩니다.
    SQL> HELP INDEX
    
    Enter Help [topic] for help.
    
     @             COPY         PAUSE                    SHUTDOWN
     @@            DEFINE       PRINT                    SPOOL
     /             DEL          PROMPT                   SQLPLUS
     ACCEPT        DESCRIBE     QUIT                     START
     APPEND        DISCONNECT   RECOVER                  STARTUP
     ARCHIVE LOG   EDIT         REMARK                   STORE
     ATTRIBUTE     EXECUTE      REPFOOTER                TIMING
     BREAK         EXIT         REPHEADER                TTITLE
     BTITLE        GET          RESERVED WORDS (SQL)     UNDEFINE
     CHANGE        HELP         RESERVED WORDS (PL/SQL)  VARIABLE
     CLEAR         HOST         RUN                      WHENEVER OSERROR
     COLUMN        INPUT        SAVE                     WHENEVER SQLERROR
     COMPUTE       LIST         SET                      XQUERY
     CONNECT       PASSWORD     SHOW
    ▶ sqlplus의 장점으로는 HELP INDEX를 통해서 ;없이도 해당 명령어를 실행할 수 있습니다. 사용가능한 sqlplus 구문은 위와 같습니다.
    SQL> HELP RUN
    
     RUN
     ---
    
     Lists and executes the most recently executed SQL command or
     PL/SQL block which is stored in the SQL buffer. The buffer has
     no command history list and does not record SQL*Plus commands.
    
     R[UN]
    
    
    SQL> HELP COPY
    
     COPY
     ----
    
     Copies data from a query to a table in the same or another
     database. COPY supports CHAR, DATE, LONG, NUMBER and VARCHAR2.
    
     COPY {FROM database | TO database | FROM database TO database}
                {APPEND|CREATE|INSERT|REPLACE} destination_table
                [(column, column, column, ...)] USING query
    
     where database has the following syntax:
         username[/password]@connect_identifier
    ▶ 리눅스의 man 페이지처럼 sqlplus 구문에도 HELP를 통해서 해당 명령어가 어떻게 쓰이는지에 대한 예시와 도움말이 제공됩니다.
    SQL> DESCRIBE soccerTable
     Name                                      Null?    Type
     ----------------------------------------- -------- ----------------------------
     ID                                                 NUMBER(38)
     DATA                                               VARCHAR2(20)
    ▶ DESCRIBE 테이블명을 통해서 Create Table 테이블명 생성 시 Type에 대한 속성을 확인할 수 있습니다.
    SQL> List
      1* SELECT * FROM SoccerTable
    SQL> L
      1* SELECT * FROM SoccerTable
    ▶ List 또는 L을 통해서 이전에 타이핑했던 SQL 구문을 다시 보여주게 됩니다. 캐시에 저장이 되어 기억을 하고 있기 때문에 이전 SQL문을 확인하기 위해서 해당 기능을 사용하시면 됩니다.
    SQL> RUN
      1* SELECT * FROM SoccerTable
    
            ID DATA
    ---------- ----------------------------------------
          1000 TottenhamHotspur
          1001 ManchesterUnited
          1002 ArsenalFC
    
    SQL> /
    
            ID DATA
    ---------- ----------------------------------------
          1000 TottenhamHotspur
          1001 ManchesterUnited
          1002 ArsenalFC
    ▶ RUN 또는 /을 사용하게 되면 이전 SQL문에 대해서 다시 한번 실행을 하게 됩니다. 
    SQL> APPEND ORDER BY data
      1* SELECT * FROM SoccerTable ORDER BY data
    
    SQL> L
      1* SELECT * FROM SoccerTable ORDER BY data
    
    SQL> /
    SELECT * FROM SoccerTable ORDER BY data
    
            ID DATA
    ---------- ----------------------------------------
          1000 TottenhamHotspur
          1001 ManchesterUnited
          1002 ArsenalFC
    ▶ APPEND를 사용하여 뒤에 WHERE 또는 ORDER BY 구문을 추가하게 되면  기존 캐시에 저장되어 있는 SQL 구문 뒤에 해당 절이 추가되어 완성되게 됩니다. 
    SQL> column DATA heading "soccerTeam" format a16
    
    SQL> SELECT * FROM SOCCERTABLE;
    
            ID soccerTeam
    ---------- ---------------
          1000 TottenhamHotspur
    
          1001 ManchesterUnited
    
          1002 ArsenalFC
    ▶ 윈도우에서는 SQL Develop Tool을 활용하여 사용하지만, UNIX 또는 Linux 환경에서는 sqlplus에 더 익숙해져야 하기 때문에 해당 환경에서 테이블 조회 시 ------의 항목이 출력화면을 초과하여 보기 어려운 경우가 있습니다. 이와 같을 때는 format 형식을 변환하여 예시로 -의 개수를 16개로 줄여 확인할 수 있습니다.
    SQL> SAVE C:\DBbackup20220115\sqlfile
    Created file C:\DBbackup20220115\sqlfile.sql
    
    SQL> host
    Microsoft Windows [Version 10.0.19044.2486]
    (c) Microsoft Corporation. All rights reserved.
    ▶ 다음으로는 SAVE를 통해서 시스템 디렉터리에 sqlfile을 저장하게 되면. sql 형식으로 파일이 저장할 수 있게 됩니다.
    C:\>cd DBbackup20230115
    
    C:\DBbackup20230115>dir
     C 드라이브의 볼륨에는 이름이 없습니다.
     볼륨 일련 번호: 5656-1B88
    
     C:\DBbackup20230115 디렉터리
    
    2023-01-15  오후 06:55    <DIR>          .
    2023-01-15  오후 06:55    <DIR>          ..
    2023-01-15  오전 11:45            24,576 ShopSchema.dmp
    2023-01-15  오후 06:55                30 sqlfile.sql
                   2개 파일              24,606 바이트
                   2개 디렉터리  78,242,586,624 바이트 남음
    
    C:\>exit
    ▶ C:\>cd DBbackup20230115 디렉토리로 이동하게 되면 SAVE를 통해서 저장된 sqlfile.sql 파일이 존재하고 해당 파일을 이용해서 출력을 할 수 있습니다.
    SQL> START C:\DBbackup20230115\sqlfile.sql
    
            ID DATA
    ---------- ----------------------------------------
          1000 TottenhamHotspur
          1001 ManchesterUnited
          1002 ArsenalFC
    ▶ START 명령어를 통해서 C:\>cd DBbackup20230115 디렉터리에 존재하는 sqlfile.sql을 실행하면 SLECT * FROM soccerTable;을 조회 했을 때 값과 동일하게 결과가 출력되는 것을 확인할 수 있습니다.
    SQL> SPOOL C:\DBbackup20220115\DailySQL
    
    SQL> SELECT * FROM soccertable;
    
            ID DATA
    ---------- ----------------------------------------
          1000 TottenhamHotspur
          1001 ManchesterUnited
          1002 ArsenalFC
    
    SQL> select count(*) from soccertable;
    
      COUNT(*)
    ----------
             3
    
    SQL> SPOOL OFF
    ▶ 다음으로는 SPOOL의 기능을 사용하여 리눅스의 CAT과 같은 효과를 나타낼 수 있습니다. SPOOL 명령어 실행 후 저장될 경로를 지정하고 SQL문을 작성 후 SPOOL OFF를 통해서 종료합니다.
    C:\DBbackup20230115>DIR
     C 드라이브의 볼륨에는 이름이 없습니다.
     볼륨 일련 번호: 5656-1B88
    
     C:\DBbackup20230115 디렉터리
    
    2023-01-15  오후 07:00    <DIR>          .
    2023-01-15  오후 07:00    <DIR>          ..
    2023-01-15  오후 07:01               976 DailySQL.LST
    2023-01-15  오전 11:45            24,576 ShopSchema.dmp
    2023-01-15  오후 06:55                30 sqlfile.sql
                   3개 파일              25,582 바이트
                   2개 디렉터리  78,243,655,680 바이트 남음
    ▶ C:\DBbackup20230115 디렉터리에 DailySQL.LST 파일이 생성된 것을 확인할 수 있습니다.
    C:\DBbackup20220115>notepad DailySQL.LST
    ▶ 윈도우 CMD창을 통해서 notepad DailySQL.LST을 실행시켜 보도록 합니다.
    SQL> SELECT * FROM soccertable;
    
            ID DATA                                                                 
    ---------- ----------------------------------------                             
          1000 TottenhamHotspur                                                     
          1001 ManchesterUnited                                                     
          1002 ArsenalFC                                                            
    
    SQL> select count(*) from soccertable;
    
      COUNT(*)                                                                      
    ----------                                                                      
             3
    ▶ sqlplus를 통해서 접속한 구문에서 실행되었던 SELECT * FROM soccertable; select count(*) from soccertable; 구문에 대한 조회 값이 메모장에 저장되어 조회가 가능하게 됩니다.

     

    2022.12.22 - [Programming and Database/SQL] - DB Oracle 스키마 생성하는 방법

     

    DB Oracle 스키마 생성하는 방법

    DB Oracle 스키마(유저) 생성하는 방법 ▶ SQL Developer를 통해서 왼쪽 하단의 다른 사용자에서 오른쪽 마우스를 클릭합니다. 사용자 생성이라는 항목을 클릭한 뒤 사용자 생성을 통해 스키마를 생성

    pinetreeday.tistory.com

    2023.01.10 - [Programming and Database/SQL] - DB Oracle 트리거(Trigger) 생성을 통한 데이터 관리하는 방법

     

    DB Oracle 트리거(Trigger) 생성을 통한 데이터 관리하는 방법

    DB Oracle 트리거(Trigger) 생성을 통한 데이터 관리하는 방법 트리거(Trigger)란? 1) 테이블에 대한 이벤트에 반응해 자동으로 실행되는 작업을 의미 2) 테이블에 INSERT 나 UPDATE 또는 DELETE 작업이 발생되

    pinetreeday.tistory.com

    2023.01.16 - [Programming and Database/SQL] - DB Oracle 백업을 통한 테이블 복구 하는 방법

     

    DB Oracle 백업을 통한 테이블 복구 하는 방법

    DB Oracle 백업을 통한 테이블 복구 하는 방법 SELECT * FROM TAB; TNAME TABTYPE CLUSTERID ------------------------------ ------- ---------- BIN$9H/3QzYZTmW8cCAXmlrXdA==$0 TABLE DELETEDMEMBERTBL TABLE INDEXTBL TABLE MEMBERTBL TABLE MEMBERTBL_VIEW

    pinetreeday.tistory.com

     

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

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

    반응형

    댓글

Designed by Tistory.