본문 바로가기

TIL

TIL 3/13 - DDL

DML

Data Manipulation Language

INSERT

새 행 추가 구문

테이블의 행 수가 증가됨

INSERT INTO table_name VALUES(v1, v2, ...)
    : 테이블에 컬럼 순번대로 값 전달 필요

INSERT INTO table_name(c1, c2, .. ) VALUES(v1, v2, ... )
 : 지정 컬럼 순번대로 값 전달 필요
     미지정 컬럼에 Default 값 설정시 Default 값 삽입
     아닐 경우 NULL

UPDATE

테이블에 기록된 기존 컬럼값을 수정하는 구문

테이블 행 수는 변화 x

UPDATE table_name
SET c1 = v1,
        c2 = v2,
        ...
[WHERE condition];

DELETE

테이블에 기록된 기존 컬럼값을 삭제하는 구문

DELETE
FROM table_name
WHERE condition;

DDL

Data Definition Language

데이터 정의어, 데이터베이스 내의 객체(테이블, 뷰 등)을 생성, 수정, 삭제하는데에 필요한 객체

information_schema: MySQL의 메타정보(테이블, 컬럼, 인덱스, 제약조건 등) 을 제공하는 시스템

SELECT
    table_schema
, table_name
, create_time
, update_time
, table_comment
FROM 
    information_schema.TABLES -- 테이블 구조 조회
    information_schema.COLUMNS -- 테이블 컬럼 정보 조회
WHERE
    table_schema = 'menudb'; 

CREATE

객체 생성을 위한 구문

CREATE TABLE [IF NOT EXISTS] table_name( 
-- IF NOT EXISTS 설정시 기존 존재 테이블이어도 에러 미발생
    c1 data_type,
    ...
)

명명규칙

  1. 소문자 이용 권장
  2. 숫자 사용 지양
  3. 각 단어를 밑줄로 연결, snake_case 방식 사용
  4. 테이블명은 테이블임을 알리는 prefix나 suffix값 사용 권장(ex. tbl_, _tbl)
  5. PK 컬럼명은 id 또는 테이블명_id 형식으로 작성 권장
  6. 지나친 줄임말 지양

주요 데이터 타입

  1. 문자형

    CHAR(SIZE) : 고정형 문자타입 지정 사이즈보다 짧을 경우 나머지 공란, 최대 255byte

    VARCHAR(SIZE) : 가변형 문자타입 지정 사이즈보다 짧을 경우 실제 입력 데이터 길이만큼 저장공간 사용, 최대 65536byte

  2. 숫자형

  1. 날짜형

    DATE 날짜 형식만 사용, 1001-01-01 ~ 9999-12-31

    YYYY-MM-DD 형식

    TIME 시간 형식만 사용, -898:59:59.000000 ~ 838:59:59.000000

    HH-MM-SS.SSSSSS 형식

    DATETIME 날짜+시간

    저장 범위 : 1001-01-01 00:00:00 ~ 9999-12-31 23:59:00

정의문 마지막 ENGINE = INNODB 구문을 통해 엔진 지정

COMMENT

테이블 코멘트 변경 : ALTER 테이블명 COMMENT = ‘설명’;

컬럼 정보 조회

SHOW FULL COLUMNS FROM table_name

NOT NULL 제약조건

특정 컬럼에 반드시 값이 존재해야 되는 경우 해당 컬럼에 부여하는 제약조건, NULL을 미허용하는것

COLUMN-LEVEL 방식으로만 적용 가능.

제약조건 위배를 통한 오류 발생시 ⇒ ‘제약조건명’ 출력

제약조건명을 직접 지어주지 않을 경우 MySQL에서 임의로 부여

⇒ 오류 내용으로 어떤 컬럼에 문제가 발생했는지 파악이 어려움

제약조건명

제약조건 부여시 지어주는 이름

제약조건명은 중복 불가

CONSTRAINT 제약조건명 제약조건