ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [SQLD] SQL 개발자 공부하기 Day 20 : 부록 정리, ORACLE과 SQL Server 차이점
    Study/SQL 2024. 3. 7. 22:01
    728x90
    반응형
    목차
    1. 부록 정리
    2. ORACLE과 SQL Server 차이점

    1. 부록 정리

     

     

    부록 정리

    ERD

    ERD는 크게 IE 표기법과 바커 표기법으로 나뉜다.

    • IE 표기법
      • 동그라미의 유무에 따라서 필수/선택을 나눈다.
      • 식별관계는 점선과 실선으로 나눈다.
      • 주식별자는 맨 위 네모칸에 배치하고 일반속성은 밑 네모칸에 배치한다.
      • 널 허용과 허용하지 않을 때는 표기하지 않는다.
    • 바커 표기법
      • 점선의 유무에 따라서 필수/선택을 나눈다. (자신 엔터티에 대한 표현을 반대쪽에 한다.)
      • 식별관계는 UID BAR의 유무로 나뉜다.
      • 주식별자는 #을 사용하고 일반속성은 ﹡또는 ◯을 사용한다.
      • 널 허용은 ◯, 허용하지 않을 때는 ﹡을 사용한다.

     

     

    데이터 입력의 차이

    • CHAR 타입은 고정 길이만큼 뒤에 공백을 채워서 저장한다.
    • VARCHAR 타입은 입력된 값 그대로 저장한다.
    • 문자 타입 입력 시 제한된 길이보다 큰 "공백을 포함한 문자열" 값을 입력하면 고정 길이에 맞게 값에서 뒤 공백이 자르고 입력 (ORACLE은 입력 에러)

     

     

     

    CHAR 타입 컬럼의 문자 상수 비교

    • CHAR 컬럼끼리 서로 비교될 때 뒤 공백의 수만 다르고 값이 같다면 같은 것으로 간주한다.
      • ex) 'ORACLE' = 'ORACLE   '   
    • 그러나 앞의 공백이 다르면 다른 값이다.
      • ex) 'ORACLE' != '   ORACLE'
    • 왼쪽부터의 값이 같을 때까지 체크 후 크기가 더 큰 쪽이 더 큰 값이 됨
      • ex) '가' < '가나' < '가나다'
    • 일반적으로 공백 < 특수기호 < 숫자 < 영어 < 한글의 크기 순서
    • 대소문자를 구분하는 경우 대문자 < 소문자
    반응형

     

    VARCHAR 타입 컬럼의 문자 상수 비교

    • 왼쪽에서부터 서로 다른 문자가 나올 때까지 비교하여 공백포함 모든 값이 같을 때 같은 값으로 인정한다.

     

     

     

    문자타입과 숫자 상수 비교

    • 항상 숫자에 맞춰 형 변환 후 비교한다.
      • 문자 컬럼에 숫자변환이 불가능한 문자('ABCDE')가 이미 존재하는 경우 비교 불가
      • 문자 컬럼에 숫자변환이 가능한 문자('0001')만 존재하는 경우 비교 가능

     

     

     

    EXISTS 연산자의 원리

    • IN 연산자처럼 포함 관계를 표현할 때 자주 등장
    • 비교 컬럼을 따로 명시하지 않고 바로 서브쿼리에서 메인쿼리와 비교를 진행함
    • NOT EXISTS 연산자는 메인쿼리의 결과를 출력하되, 서브쿼리 결과와 일치하지 않는 데이터만 출력할 목적으로 사용

     

     

     


    2. ORACLE과 SQL Server 차이점

     

    ORACLE vs SQL Server

    • 주로 차이가 발생하는 지점
      • 조인 문법 / 함수 / 빈문자열 입력 처리 / 문자열 입력 시 크기 제한 / Auto commit / 테이블 별칭 / Top N query / 컬럼 수정

     

    조인 문법

    • ORACLE은 ORACLE 표준, ANSI 표준 모두 가능
    • SQL Server는 ANSI 표준만 가능

     

    함수

    • 두 DBMS 간의 함수가 가장 많은 차이 발생
    728x90

    빈문자열 입력 처리

    • 빈문자열이 입력되면 ORACLE은 NULL로 입력
    • 빈문자열이 입력되면 SQL Server는 빈문자열 그대로 입력

     

    문자열 입력 시 크기 제한

    • ORACLE은 정해진 사이즈를 초과한 문자열 입력 불가
    • SQL Server는 공백을 포함한 문자열 입력 시 사이즈 초과만큼의 공백을 자르고 입력됨.

     

    Auto commit

    • ORACLE은 DDL만 AUTO COMMIT, DML의 경우는 수동 COMMIT
    • SQL Server는 DDL, DML 모두 AUTO COMMIT이 기본이다.

     

    테이블 별칭

    • ORACLE은 AS 없이 전달 
    • SQL Server는 테이블 별칭 시 AS를 전달 혹은 생략 가능하지만, 인라인뷰에는 반드시 AS를 전달해야 함.

     

    Top N query

    • ORACLE은 ROWNUM 방식
    • SQL Server는 TOP 쿼리 방식 (TOP n [with ties])
    • 둘 다 Rank 함수와 Fetch절 사용 가능

     

    컬럼 수정 시 NULL 설정 여부

    • 컬럼 생성 시 Default는 Nullable
    • ORACLE은 NOT NULL 속성 컬럼 타입이나 크기를 변경해도 Not null 속성을 유지
    • SQL Server는 Nullable로 변경된, 다시 Not null 선언 필요함

     

    728x90
    반응형

    댓글

Designed by Tistory.