Develop/Database

DDL - 데이터베이스 구축 (테이블 생성, 데이터 입력 및 활용)

YOOZI. 2024. 12. 31. 17:43
728x90

 

이번 정차 역은 'DDL'입니다.

 

 

오늘은 데이터베이스 구축의 핵심 개념인 DDL(Data Definition Language)과 테이블 생성, 데이터 입력 및 활용에 대해 알아보자.

오늘의 배움
  • DDL이란 무엇인지
  • 테이블 생성 방법
  • 데이터 입력 및 활용 방법

DDL(Data Definition Language)

DDL은 데이터베이스의 구조를 정의하는 명령어들이다. 주로 테이블, 인덱스, 뷰 등의 객체를 생성, 수정, 삭제하는 역할.

 

따라서,

  • 데이터베이스의 기본 구조를 설계하는 데 필수적인 부분
  • SQL을 사용하여 테이블을 생성하거나 삭제할 때 사용됨

 

마치 디자인의 기본 구조를 잡는 것과 비슷한 것 같다.

  • 초기 디자인에서 레이아웃을 정하는 과정처럼
  • DDL은 데이터베이스의 뼈대를 만드는 단

 


CREATE (테이블)

새로운 테이블이나 뷰를 생성할 때 사용

IF NOT EXISTS를 적용하면 기존에 존재하는 테이블이라도 에러가 발생하지 않는다.

 

테이블의 컬럼 설정 방법

column_name data_type(length) [NOT NULL] [DEFAULT value] [AUTO_INCREMENT] column_constraint;
  • AUTO_INCREMENT: 프라이머리 키에게 붙여줌
  • 제약조건들을 뛰어씀 (아래와 같이)

 

tb1 테이블 생성

  • 테이블 생성하는 명령어
  • 이 코드는 상품이라는 테이블을 생성하며, 각 속성의 데이터 타입을 정의한다. 마치 디자인에서 각 요소의 크기와 위치를 정하는 것과 비슷.
CREATE TABLE 상품 (
    상품ID INT PRIMARY KEY,
    상품명 VARCHAR(100),
    가격 DECIMAL(10, 2),
    재고수량 INT
);
CREATE TABLE IF NOT EXISTS tb1 (
    pk INT PRIMARY KEY,
    fk INT,
    col1 VARCHAR(255),
    CHECK(col1 IN ('Y', 'N'))
) ENGINE=INNODB;

# check 제약조건(컬럼에 제약조건을 걸어줌)
# 엔진뒤에 이노비가 오는 구나 하고 그냥 외우기

 

  • 생성한 데이터베이스 사용하는 명령어
use 데이터베이스명;

 

위의 코드 결과 확인

 

 

 

테이블 구조 확인

DESCRIBE tb1;

 

실행결과

 

INSERT 명령어

  • 테이블에 데이터 입력하는 명령어
INSERT INTO 상품 (상품ID, 상품명, 가격, 재고수량) VALUES (1, '티셔츠', 19.99, 100);
INSERT INTO tb1 VALUES (1, 10, 'Y');

SELECT * FROM tb1; # 데이터 활용 명령어 SELECT FROM

 

 

 


 

AUTO_INCREMENT

AUTO_INCREMENT는 데이터베이스에서 새로운 행이 추가될 때, 특정 속성(주로 기본 키)의 값을 자동으로 증가시키는 기능이다. 이 속성은 주로 숫자형 데이터 타입에 사용되며, 주로 ID 필드에 설정된다.

INSERT 시 PRIMARY키에 해당하는 컬럼에 자동으로 번호를 발생(중복되지 않게)시켜 저장할 수 있다.

CREATE TABLE 상품 (
    상품ID INT AUTO_INCREMENT PRIMARY KEY,
    상품명 VARCHAR(100),
    가격 DECIMAL(10, 2)
);

-> 상품 ID가 자동으로 증가하도록 설정한 예시


 

ALTER

ALTER 명령어는 기존 테이블의 구조를 변경한다. 이를 통해 테이블에 새로운 컬럼을 추가하거나, 기존 컬럼의 속성을 변경할 수 있다.

(종류가 너무 많고 복잡하여 자주 사용하지 않고, 잘못되었다면 모두 drop 한 다음에 새로 한다고 한다)

 

 


DROP

테이블을 삭제하기 위한 구문

 

tb3 테이블 생성 후 삭제

-- tb3 테이블 생성
CREATE TABLE IF NOT EXISTS tb3 (
  pk INT AUTO_INCREMENT PRIMARY KEY,
  fk INT,
  col1 VARCHAR(255),
  CHECK(col1 IN ('Y', 'N'))
) ENGINE=INNODB;

-- tb3 테이블 삭제
DROP TABLE IF EXISTS tb3;

# if, exists 를 사용하여

 


 

TRUNCATE

논리적으로는 WHERE절이 없는 DELETE 구문과 큰 차이가 없어 보인다. 하지만 어차피 데이터를 다 삭제할 경우 행마다 하나씩 지워지는 DELETE보다 DROP이후 바로 테이블을 재 생성 해주는 TRUNCATE가 훨씬 효율적으로 한 번에 테이블을 초기화시켜준다. 또한 AUTO_INCREMENT 컬럼이 있는 경우 시작 값도 0으로 초기화가 된다.

 

싹 다 없어지기에,,,, 조심.....

 

-- tb6 테이블 생성
CREATE TABLE IF NOT EXISTS tb6 (
  pk INT AUTO_INCREMENT PRIMARY KEY,
  fk INT,
  col1 VARCHAR(255),
  CHECK(col1 IN ('Y', 'N'))
) ENGINE=INNODB;

-- 4개 행 데이터 INSERT
INSERT INTO tb6 VALUES (null, 10, 'Y');
INSERT INTO tb6 VALUES (null, 20, 'Y');
INSERT INTO tb6 VALUES (null, 30, 'Y');
INSERT INTO tb6 VALUES (null, 40, 'Y');

-- 제대로 INSERT 되었는지 확인
SELECT * FROM tb6;

-- 테이블 초기화 하기
-- TRUNCATE TABLE tb6;
TRUNCATE tb6;    -- TABLE 키워드 생략 가능

 


 

데이터베이스의 관리와 구조 변경에 대해 배웠다.

디자인에서도 요소를 추가하거나 삭제하는 과정이 중요하듯이, 데이터베이스에서도 마찬가지였다.

 

다음에는 테이블 생성 제약 조건인, 'CONSTRAINTS'를 배워보자.

728x90