ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 오라클 1주차
    Database 2020. 6. 3. 00:46

    create user 계정이름 identified by 계정비번; 

    하면 당연히 계정이 생성 되어야 하는데 에라가 똮!! 

     

    1행에 오류: ORA-65096: 공통 사용자 또는 롤 이름이 부적합합니다.

     

    검색해보니...

     

    오라클 12c로 넘어오면서 계정이름 앞에 c##을 붙여줘야 공통 사용자를 생성가능...

     

    -- create new user
    CREATE USER c##[아이디] IDENTIFIED BY [비밀번호];

    사용자가 생성되었습니다.


    -- grant priviledges
    GRANT CONNECT, RESOURCE, DBA TO c##[아이디];

    권한이 부여되었습니다.

     

    -- drop user c##[아이디] cascade

     

     

    1. OT 계정으로 접속 설정 후 접속

     

    1. ot_schema.sql 파일 적용

    2. ot_data.sql 파일 적용

     

    해당 파일 적용 중 "ORA-01843: 지정한 월이 부적합합니다." 에러 발생 원인을 검색해 보니 NLS_DATE_FORMAT이 맞지 않아서 생기는 오류였다.

       

    NLS_DATE_FORMAT을 다음 명령어로 확인해보니

    select sysdate from dual;

     

    입력하고자 하는 테이터 포맷은 to_date('21-SEP-16','DD-MON-RR')  형태인데 "YYYY-MON-DD" 형식으로 되어있어 INSERT가 되지 않았다.

     

    입력하고자 하는 데이터 포맷에 맞게 아래 명령어로 수정 후 에러 해결!

    alter session set nls_date_format='DD-MON-RR';

     

     

    1주차 과제

    --1)
    SELECT * 
    FROM EMPLOYEES
    NATURAL JOIN (SELECT EMPLOYEE_ID
                  FROM EMPLOYEES me
                  WHERE EMPLOYEE_ID = '103');
         
    --2)         
    SELECT * 
    FROM EMPLOYEES
    NATURAL JOIN (SELECT EMPLOYEE_ID
                  FROM EMPLOYEES)
                  WHERE EMPLOYEE_ID = '103';

     

    1번과 2번 중 어는 쿼리의 수행 속도가 빠른가?

     

    1번의 서브쿼리에서는 EMPLOYEE 테이블에서 EMPLOYEE_ID 103번을 추출 후  

    EMPLOYEE 테이블에서 EMPLOYEE_ID가 103번인 데이터와 동일한 데이터를 찾아 조인

     

    2번의 서브쿼리에서는 EMPLOYEE 테이블에 존재하는 모든 EMPLOYEE_ID 조회 후

    EMPLOYEE_ID가 동일한 데이터를 전체적으로 조인한 후 103번인 데이터를 한번 더 찾기 때문에 

     

    2번 쿼리의 수행 속도가 더 느릴것 같다.

     

    'Database' 카테고리의 다른 글

    데이터베이스 설계에서 중요한점  (0) 2024.04.02
    NATURAL JOIN이란?  (0) 2020.06.04
    부분범위처리  (0) 2020.05.30
    같은 테이블의 컬럼 값을 참조하여 null 값 Update  (0) 2019.12.24
Designed by Tistory.