ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SQLD 기본(관계형 데이터베이스 개요, CREATE TABLE, ALTER TABLE)
    SQLD (자격증)/2-1. SQL 기본 2020. 3. 8. 20:58

    관계형 데이터베이스 개요

     

    데이터베이스

     

    - 넓은 의미에서의 데이터베이스는 일상적인 정보들을 모아 놓은 것 자체를 의미

     

       그러나, 일반적으로 DB라고 말할 때는 특정 기업이나 조직 또는 개인이 필요에 의해 데이터를 

     

       일정한 형태로 저장해 놓은 것

     

     

    - 관계형 데이터베이스는 정규화를 통한 합리적인 테이블 모델링을 통해 이상(ANOMALY) 현상 제거

     

      데이터 중복 피하고, 동시성 관리, 병행 제어를 통해 다수의 사용자들이 동시에 데이터를 공유 및 조작

     

      할 수 있는 기능 제공

     

     

     - 관계형 DB는 메타 데이터를 총괄 관리할 수 있기 때문에 데이터의 성격, 속성 또는 표현 방법 등을 체계화

     

     

     - 데이터 표준을 통한 데이터 품질을 확보할 수 있는 장점

     

     

     - DBMS는 인증된 사용자만이 참조할 수 있도록 보안 기능 제공

     

     

     - 데이터 무결성(Integrity) 보장

     

     

      - 시스템의 갑작스런 장애로부터 사용자가 입력, 수정, 삭제하던 데이터가 제대로 반영될 수 있도록 보장

     

     

      - 시스템 다운, 재해 등의 상황에서도 데이터를 회복 / 복구할 수 있는 기능 제공

     


    SQL(Structured Query Language)

     

     - 관계형 데이터베이스에서 데이터 정의, 조작, 제어를 하기 위해 사용하는 언어

     


    TABLE

     

     - 데이터 관계형 데이터베이스는 기본 단위인 테이블 형태로 저장

     

     

     - 테이블은 어느 특정한 주제와 목적으로 만들어지는 일종의 집합

     

     

     - 테이블은 반드시 하나 이상의 컬럼을 가져야 한다.

     

     

      - 테이블을 분할하여 데이터의 불필요한 중복을 줄이는 것을 정규화(Normalization)

     

         * 데이터의 정합성 확보, 데이터 입력 / 수정 / 삭제시 발생할 수 있는 이상현상(Anomaly)을 방지하기

     

           위해 정규화는 RDBMS 모델링에서 매우 중요한 프로세스

     

                  * 각 행을 한가지 의미로 특정할 수 있는 한 개 이상의 컬럼을 기본키(Primary Key)

     

                  * 선수 테이블의 구단코드와 같이 다른 테이블의 기본 키로 사용되면서 테이블과의 관계를 연결하는

     

                     역할을 하는 컬럼 외부키(Foreign Key)

     


    ERD(Entity Relationship Diagram)

     

    - ERD는 관계의 의미를 직관적으로 표현할 수 있는 좋은 수단

    - ERD의 구성요소는 엔터티(Entity), 관계(Relationship), 속성(Attribute) 3가지

     


    DDL

     

    데이터 유형

     

    - 테이블에 특정 자료를 입력할 때, 그 자료를 받아들일 공간을 자료의 유형별로 나누는 기준

    -

     


    CREATE TBALE

     

    Syntax

     

    CREATE TABLE 테이블이름(
    
    	칼럼명1, 데이터타입 [DEFAULT 형식],
        
        	칼럼명2, 데이터타입 [DEFAULT 형식]
    );

     

    - 해당 테이블에 입력될 데이터 정의, 어떤 데이터 유형으로 선언할지 결정

     

    테이블 생성시 규칙

     

     1. 테이블명은 객체를 의미할 수 있는 적절한 의미 (가능한 단수형)

     

     2. 테이블명은 다른 테이블의 이름과 중복되지 않아야 함

     

     3. 한 테이블 내에서는 칼럼명이 중복될 수 없음

     

         * 다른 테이블의 컬럼명과는 중복될 수 있음

     

     4. 테이블명과 칼럼명은 반드시 문자로 시작해야함 (벤더별로 길이에 대한 한계가 있음)

     

     5. 벤더에서 사전에 정의한 예약어(Reserved word)는 쓸 수 없다.

     

     6. 특수문자는 _ , $ , # 만 허용

     

     7. 테이블 생성시 대/소문자 구분은 하지 않음

        

         * 기본적으로 테이블이나 칼럼명은 대문자로 만들어진다.

     

     8 . 칼럼에 대한 제약조건이 있으면 CONSTRAINT를 이용하여 추가할 수 있다.

     

     9 . 제약조건 생성 방식은 컬럼의 데이터 유형 뒤에 정의하는 방식과 테이블 생성 마지막에

     

         모든 제약조건을 기술하는 테이블 LEVEL 정의 방식이 있다.

     

     


     

    제약조건의 종류

     

    생성된 테이블 구조 확인

     

    Systax 

    DESC 테이블명;

     

    SELECT 문장을 통한 테이블 생성(CTAS)

     

    Systax

    CREATE TABLE 테이블명 AS
    SELECT *
    FROM 테이블
    [WHERE 조건];

    CTAS(CREATE TABEL ~ AS SELECT ~)

     

    주의 사항

     

    1. 기존 테이블의 제약조건 중 NOT NULL만 새로운 복제 테이블에 적용

     

    2. 기본키, 고유키, 외래키, CHECK 등의 다른 제약조건은 복제되지 않음

     

    3. 제약 조건을 추가하기 위해서는 ALTER TABLE 기능을 이용해야 함

     


     

    ALTER TABLE

     

    1. ADD COLUMN

     

     Systax

    ALTER TABLE 테이블명 ADD (추가할 컬럼명  데이터 유형);

    * 새롭게 추가된 칼럼은 테이블의 마지막 칼럼이 되며 칼럼의 위치를 지정할 수는 없다.

     

     

    2. DROP COLUMN

     

     - 데이터가 있든 없든 삭제가능

     

     - 한번에 하나의 컬럼만 삭제가능

     

     - 복구 불가능

     

     - 삭제하고 하나 이상의 컬럼이 테이블에 존재해야 함

     

    Systax

    ALTER TABLE 테이블명 DROP COLUMN 삭제할 컬럼명;

     

     

    3. MODIFY COLUMN

     

     - 컬럼의 데이터 유형, 디폴트(DEFAULT) 값, NOT NULL 제약조건에 대한 변경 가능

     

    Systax

    ALTER TABLE 테이블명 MODIFY (
    
    		칼럼명1 데이터유형 [DEFAULT 식] [NOT NULL],
            
    		칼럼명2 데이터유형 [DEFAULT 식] [NOT NULL]
    );

     

    주의 사항

     

     1) 해당 컬럼의 크기를 늘릴 수는 있지만 줄이지는 못함

     

         * 해당 칼럼이 NULL값만 가지고 있거나 테이블에 아무 행도 없으면 칼럼의 폭을 줄일수 있다.

     

     2) 해당 카럶이 NULL값만을 가지고 있으면 데이터 유형을 변경할 수 있다.

     

     3) 해당 칼럼의 DEFAULT 값을 바꾸면 변경 작업 이후에 발생하는 행 삽입부터 영향을 미침

     

     4) 해당 칼럼에 NULL값이 없을 경우에만 NOT NULL 제약조건을 추가할 수 있다.

     

     

    4. RENAME COLUMN

     

     - 칼럼명을 변경하는 경우에 쓰임

     

    Systax

    ALTER TABLE 테이블명 RENAME COLUMN 기존 컬럼명 TO 바꿀 컬럼명;

     

    5. DROP TABLE

     

     - 테이블 삭제

     

    Systax

    DROP TABLE 테이블명 [CASCADE CONSTRAINT];

     

     

    6. TRUNCATE TABLE

     

     - 테이블 자체가 삭제되는 것이 아니고 해당 테이블에 들어있던 모든 행들이 제거되고

     

       저장 공간을 재사용가능하도록 해제

     

        * 테이블 구조를 완전히 삭제하기 위해서는 DROP TABLE을 실행하면 된다.

     

     

    'SQLD (자격증) > 2-1. SQL 기본' 카테고리의 다른 글

    SQL 기본 2(DML)  (0) 2020.03.15

    댓글

Designed by Tistory.