본문 바로가기

DATA 분석 교육 과정 (2024.02~08)/SQL

SQL_데이터 모델링, SELECT(의미, 실행순서, *, DISTINCT, AS, NULL, 자료형, 리터럴)

728x90

 

1, 데이터베이스란?

 
  -  현실의 대상을 데이터 베이스에 저장할 수 있도록 설계 및 구축을 하는 과정
  - 요구사항 접수 > 개념적 데이터 모델링 > 논리적 데이터 모델링 > 물리적 데이터 모델링 > 세팅 완료
 

2. 개념 데이터 모델링

 
  - 복잡한 현실세계의 대상을 단순화, 추상화, 명확화 하는 작업
  - 요구사항을 단순하게 그림으로 표현하는 방법
  - 엔터티, 속성, 인스턴스, 관계, ERD

   * 관계: 엔터티 간의 의미 있는 정보가 있는지 확인해보고 의미를 관계로 설정해 데이터를 표현하는 방법

   * ERD(Entity, Relationship, Diagram)
    : 엔터티와 엔터티 간의 관계를 발견하고 이를 그림으로 표현한 것
         (1) 엔터티를 그린다. 
         (2) 엔터티를 적절히 배치한다. 
         (3) 관계를 설정한다. (서로 관계가 있는 엔터티끼리 선으로 이어준다.)
         (4) 관계명을 기술한다. (생략가능)
         (5) 관계의 참여도(Cardinality)를 기술한다. 
             - 참여도란 엔터티 안의 인스턴스들이 얼마나 관계에 참여하는지를 의미함
             - 1:1, 1:N, N:N 관계등이 있으며, N쪽에는 까치발(<,>)을 표시한다. 

         (6) 관계의 필수여부(Opionality)를 기술한다. 
            - 필수여부란 인스턴스들이 관계에 반드시 참여하는지를 의미
            - O: 0개 참여, ㅣ: 최소 1개 참여,  <: N개 참여
            - 2개 : l<

 

3. 논리 데이터 모델링

 
 - 작성한 ERD를 토대로 보다 상세한 설계도를 작성한다. 
 - 속성 입력, 식별자 선택, 정규화, 관계설정 등을 설정한다. 
 - 논리적 모델링은 3가지의 모델링 중에서 가정 중요한 과정이다. 
 
   1) 속성입력

   2) 식별자(PRIMARY KEY) 선택

      - 엔터티 내에서 유일한 인스턴스를 식별 할 수 있는 속성 집합
      - 각 엔터티는 무조건 식별자를 하나 가지고 있어야 한다. 
 
   3) 정규화 : 데이터가 중복 저장되는 것을 막기 위해 엔터티를 쪼개는 활동

   4) 관계설정(FOREIGN KEY) : 엔터티 간의 관계를 데이터로 표현하기 위해 식별자를 빌려온다
           

 
        ** N:N 관계에서는 주의!! >>> 관계의 이름을 이용해 추가로 엔터티를 새성
 


 

1. SQL 의미와 종류

 
  - Structured Query Language 
  - 데이터베이스가 이해 할 수 있도록 특정 문법에 맞춰서 질의 하는 것
 
  1) SQL 문법의 종류

  • SELECT : 테이블에서 원하는 데이터를 조회한다.
  • DML: 데이블에서 데이터를 입력/삭제/수정한다.
  • DDL: 테이블 같은 데이터 저장소 객체를 만들거나 수정한다.
  • TCL: 트랜잭션을 제어한다. 
  • DCL: 객체에 권한을 부여한다. 

   2) 테이블이란?
 - 엔터티를 물리적 모델링한 결과로 데이터를 저장하는 저장소 기능을 가짐
 - 테이블은 2차원 행, 열 형태를 유지한다. 
 - 행 = 튜플  / 열=컬럼
 

2. SQL 실행순서

 
  5) SELECT : 출력하고 싶은 컬럼만 작성하기
  1) FROM : 데이터를 가져올 테이블 입력
  2) WHERE : 원하는 튜블만 가져오도록 필터링
  3) GROUP BY : 특정 컬럼을 기중으로 그룹화
  4) HAVING : 그룹화 상태의 데이터를 필터링
  6) ODER BY: 특정 컬럼으로 정렬
 
[실습]
  1) 문제
       SELECT CUST_ID, CUST_NAME, BIRTH)DY
       FROM TB_CUST
       WHERE MONY-10000
  2) 결과

3. * 과 DISTINCT, AS

 
 1) * (에스터리스크)
   - SELECT 뒤에 사용되며 테이블 내의 모든 컬럼 정보를 출력
   - 단,실무에서 성능이 감소되고, 특정 컬럼 정보를 확인하는데 어려워 잘 사용하지 않음
   - 예) SELECT * FROM TB_[  ]  ;

  2) DISTINCT
     -  SELECT 뒤, 컬럼 앞에 사용되며 해당 컬럼 정보에 대해 중복을 제거
    - 예시)  SELECT DISTINCT PRD_TYPE
                     FROM TB_PRD ;

  3) AS
  - SELECT 부분에서 출력하려는 컬럼에 대해 새로운 별형 (ALIAS)를 부여할 수 있다.
  - 사용시 주의사항

  • 띄어쓰기 불가
  • 문자로 시작해야함
  • 예약서 불가
  • 특수문자는 $, _, #

   - 예시)  SELECT CUST_ID    AS C_ID
                      , BIRTH_DY   AS 생년월일
                      , MONEY       AS PAY_123
                  PROM TB_CUST  ;
 

4. NULL 

 
  - 아직 어떤 값이 들어오지 않았음을 표현
  - 테이블 특정상의 행X열 형태를 유지해야 하기 때문에 필요하다. 
 

5. 자료형과 리터럴

    - 자료형 : 데이터를 보관하는 형태 ( 예시: 문자형, 숫자형,  날짜형 )
    - 리터럴: 입력되는 데이터 ( 예시: 이름, 국가 / 1,200 / 2023-01-02 )
 
     1) 자료형 ( VARCHAR2(n), CHAR(n), NUMBER (n,m) ,  DATE )
 
        (1) VARCHAR2(n)
  - 문자형 값을 n 바이트까지 입력 받을 수 있는 가변형 문자열입니다
  예시)  VARCHAR2(10) 인 컬럼에 'abcd'를 입력할 경우

         (2) CHAR(n)
  - 문자형 값을 n 바이트까지 입력 받을 수 있는 고정형 문자열입니다
 예시) CHAR(10) 인 컬럼에 'abcd'를 입력할 경우

         (3) NUMBER (n,m)
 - 숫자형 값을 n자리만큼 입력 받고 m자리만큼 소수를 입력 받습니다.
 - NUMBER로 실수와 정수 모두 표현이 가능합니다.
 - NUMBER 뒤에 n,m 은 생략이 가능합니다.
예시)
  - NUMBER(3) 이면 999까지만 입력이 가능합니다.  * 보통은그냥  NUMBER 로만 사용
  - NUMBER (3.2) > 1.23 (3자리, 소수점 2자리
 
         (4) DATE
  - 날짜 값 입력
  - 이외 TIMESTAMP라는 자료형도 있음.
  - 둘다 비슷한 날짜형 자료형이며 TIMESTAMP가 좀 더 구체적인 시간을 저장합니다

728x90
반응형