Mysql -DDL-

임수정·2023년 3월 21일
0

API를 만들다 보면 query문에서 헤매는 경우가 종종 있었습니다.
그래서 SQL에 statements 종류에 대해서 포스팅 하는 시간을 가지도록 하겠습니다!

먼저 첫번째로 DDL에 대해서 알아보겠습니다.

DDL

DDL(Data Definition Language)은 Schema 내의 객체를 정의하고 관리할 때 사용되는 쿼리문을 의미합니다. 데이터를 구성하는 논리적인 구조(데이터베이스 또는 테이블)을 추가,수정,삭제할 수 있습니다. DDL은 CREATE, ALTER 및 DELETE 문을 포함합니다.

CREATE

CREATE DATABASE westagram

CREATE DATEBASE를 이용해 스키마를 생성할 수 있습니다.

이번에는 테이블을 생성하는 방법을 살펴보겠습니다.

CREATE TABLE users(
  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, // id : 정수, NULL을 허락하지 않으며 값을 자동증가하게 설정합니다.
  name VARCHAR(50) NOT NULL, //name : 50 bytes의 크기를 가지는 문자열, NULL을 허락하지 않습니다.
  email VARCHAR(50) NOT NULL UNIQUE,
  password VARCHAR(200) NOT NULL, //hash가 필요하기 때문에 크게 넉넉한 크기를 설정합니다.
  point DECIMAL(8,2) NOT NULL, //point : 소수로 표현을 하고 (전체자릿수,소수점자리)안에 크기를 설정합니다.
  created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  updated_at TIMESTAMP NULL ON UPDATE CURRENT_TIMESTAMP
);

Column에는 컬럼명과 자료형 그리고 제약조건을 설정할 수 있습니다.
자료형으로는 INTEGER, VARCHAR, DATETIME 등이 있는데, 특히 자주 사용되는 VARCHAR나 CHAR와 같은 문자열형으로 지정할 때는 최대길이를 정해줘야 합니다.
제약 조건으로는 자료형 뒤에 오는 NULL, NOT NULL, PRIMARY KEY 등이 있습니다. 문자 그대로 테이블 혹은 컬럼에 제약을 설정함으로써 저장될 데이터를 제한할 수 있습니다.

테이블간 1:M 관계일때는 테이블 간에 부모 자식 관계를 지정(데이터의 정합성을 위함)하기 위해서 외부키(FOREIGN KEY) 제약 조건을 설정해줘야 합니다.

CREATE TABLE posts
...
...
PRIMARY KEY (id),
FOREIGN KEY (user_id) REFERENCES users (id) // 외래키를 걸어줄 칼럼과 참조할 테이블과 칼럼을 순서대로 적어줍니다.
);

ALERT

ALTER TABLE 테이블명 변경명령어  // 테이블 변경 Syntax

ALERT을 사용하게 되면 column과 제약조건을 변경할 수 있습니다. "ADD" 혹은 "DROP"을 사용하여 추가,삭제할 수 있고 "MODIFY"를 이용하여 column의 자료형을 변경할 수 있습니다.

ALTER TABLE users ADD age INT NOT NULL // column을 추가할 수 있습니다.
ALTER TABLE users DROP profile_image // column을 삭제할 수 있습니다.
ALTER TABLE posts MODIFY content TEXT NULL  // 자료형과 제약조건 수정할 수 있습니다.

DELETE

DROP TABLE posts // 테이블을 삭제할 때 사용됩니다.
DELETE FROM posts WHERE condition // 테이블 내의 데이터만 삭제할 수 있습니다. 
TRUNCATE TABLE posts // 테이블 객체 내의 모든 데이터(row)를 삭제하는 명령어입니다.
profile
부족함을 인정하고 채워나가는 개발자! (Node.js 개발자)

0개의 댓글