[SQL]-DDL

2024. 6. 26. 23:56· 수업자료/database
목차
  1. 1. DDL(Data Definition Language)
  2. 1-1. CREATE
  3. 1-2. AUTO_INCREMENT
  4. 1-3. ALTER
  5. 1-4. DROP
  6. 1-5. TRUNCATE
728x90

1. DDL(Data Definition Language)

💡 DDL(Data Definition Language)는 데이터베이스의 스키마를 정의하거나 수정하는 데 사용되는 SQL의 한 부분이다.

스키마(schema)
: 테이블의 구조(컬럼명, 자료형, 자료형 크기, 테이블명 등) 및 제약조건(unique, primary key, not null, check, foreign key 등)을 아우르는 말이다.

1-1. CREATE

  • 테이블 생성을 위한 구문
  • IF NOT EXISTS를 적용하면 기존에 존재하는 테이블이라도 에러가 발생하지 않는다.

  테이블의 컬럼 설정 방법

column_name data_type(length) [NOT NULL] [DEFAULT value] [AUTO_INCREMENT] column_constraint

 

1-1-1. 기본 문법

INSERT INTO tb1 VALUES (1, 10, 'Y');

SELECT * FROM tb1;

1-2. AUTO_INCREMENT

INSERT 시 PRIMARY키에 해당하는 컬럼에 자동으로 번호를 발생(중복되지 않게)시켜 저장할 수 있다.
CREATE TABLE IF NOT EXISTS tb2 (
    pk INT AUTO_INCREMENT PRIMARY KEY,
    fk INT,
    col1 VARCHAR(255),
    CHECK(col1 IN ('Y', 'N'))
) ENGINE=INNODB;

1-3. ALTER

테이블을 추가/변경/수정/삭제하는 모든 것은 ALTER 명령어를 사용한다.

1-3-1. 열 추가

ALTER TABLE tb2
ADD col2 INT NOT NULL;

DESCRIBE tb2;

 

1-3-2. 열 삭제

ALTER TABLE tb2
DROP COLUMN col2;

DESCRIBE tb2;

1-3-3. 열 이름 및 데이터 형식 변경

ALTER TABLE tb2
CHANGE COLUMN fk change_fk INT NOT NULL;

DESCRIBE tb2;

1-3-4. 열 제약 조건 추가 및 삭제

ALTER TABLE tb2
DROP PRIMARY KEY;    -- 에러 발생
에러 발새잉유: AUTO_INCREMENT가 걸려 있는 컬럼은 PRIMARY KEY 제거가 안되므로 AUTO_INCREMENT를 MODIFY 명령어로 제거한다.(MODIFY는 컬럼의 정의를 바꾸는 것이다.)

 

1-3-5. 컬럼 여러개 추가하기

ALTER TABLE tb2
ADD col3 DATE NOT NULL,			
ADD col4 TINYINT NOT NULL; 

DESC tb2;

1-4. 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;

 

1-5. 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 키워드 생략 가능

728x90

'수업자료 > database' 카테고리의 다른 글

[SQL]-VIEW  (0) 2024.06.27
[SQL]-CONSTRAINT(제약조건)  (0) 2024.06.27
[SQL]-TRANSACTION  (0) 2024.06.26
[SQL]-DML  (0) 2024.06.26
[SQL]-SELECT절  (0) 2024.06.25
  1. 1. DDL(Data Definition Language)
  2. 1-1. CREATE
  3. 1-2. AUTO_INCREMENT
  4. 1-3. ALTER
  5. 1-4. DROP
  6. 1-5. TRUNCATE
'수업자료/database' 카테고리의 다른 글
  • [SQL]-VIEW
  • [SQL]-CONSTRAINT(제약조건)
  • [SQL]-TRANSACTION
  • [SQL]-DML
조찬국
조찬국
개발자가 되기위해 매일매일 체득하며 배우는 학생입니다.
조찬국
changuk.log
조찬국
전체
오늘
어제
  • 분류 전체보기 (68)
    • Spring Boot (30)
      • Spring Boot 입문 강의 정리(김영한) (8)
      • Spring Boot JPA-기본편 강의 정리(.. (8)
      • Spring Boot JPA-활용편1 강의 정리 (7)
      • Spring Boot JPA-활용편2 강의 정리 (5)
      • Spring Boot 블로그(Blog) 만들기 프.. (2)
      • Spring Boot -Project 정리(Bac.. (0)
    • SQLD (2)
      • 데이터 모델링 (1)
      • 데이터 모델과 SQL (1)
    • 프로젝트 (1)
      • 플러터 (1)
      • 안드로이드 스튜디오 (0)
    • 캡스톤디자인 (2)
      • IoT 및 하드웨어 (1)
      • 모바일 프론트엔드 (1)
      • 백엔드 (0)
    • CS스터디 (5)
    • 수업자료 (13)
      • sw공학 (5)
      • database (8)
    • Chatbot 프로젝트 (13)
      • RAG (3)
      • LangChain (9)
      • FastAPI (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Spring
  • Chat bot
  • text splitter
  • 오블완
  • LCEL
  • retrievers
  • restapi
  • document loader
  • Blog
  • CS
  • 티스토리챌린지
  • uvicorn
  • computer sience
  • spring boot
  • LLM
  • prompt tempate
  • 김영한
  • 선형 자료 구조
  • ese32
  • langchain
  • Spirng Boot
  • embeddings
  • SQL
  • chatbot
  • 관계
  • vector store
  • 비선형 자료 구조
  • RAG
  • lanchain
  • SQLD

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
조찬국
[SQL]-DDL
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.