브렌쏭의 Veritas_Garage

[우리FISA] SQL Backgrounds 본문

[Project_하다]/[Project_공부]

[우리FISA] SQL Backgrounds

브렌쏭 2024. 7. 24. 20:52

💡 charset (문자 집합)

유니코드

💡 Collation (콜레이션)

Collation 은 텍스트 데이터를 정렬(ORDER BY)할 때 사용한다. 즉 text 계열 자료형에서만 사용할 수 있는 속성입니다.


  • utf8_bin (or utf8mb4_bin) : 바이너리 저장 값 그대로 정렬합니다.(아스키 문자가 높은 순서대로 정렬)
     
  • utf8_general_ci (or utf8mb4_general_ci): 텍스트 정렬할 때 a 다음에 b 가 나타나야 한다는 생각으로 나온 정렬방식. 문자열 자체의 오름차순을 사용합니다.
  • utf8_unicode_ci (or utf8mb4_unicode_ci) : general_ci 보다 조금 더 사람의 기준에 맞게 특수문자를 정렬합니다.

📌 MySQL에서 콜레이션 확인하기

SHOW COLLATION;

📌 MySQL에서 콜레이션 설정하기

CREATE DATABASE 테이블명 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

Column 생성 시 제약조건

  • NOT NULL : NULL 값을 허용하지 않음
  • UNIQUE : 중복 값을 허용하지 않음
  • PRIMARY KEY : 기본 키로 설정
  • FOREIGN KEY : 외래 키로 설정
  • CHECK : 조건을 설정
  • DEFAULT : 기본값 설정
  • AUTO_INCREMENT : 자동 증가
  • COMMENT : 컬럼에 대한 설명

등등 다양한 제약조건을 설정할 수 있다.

  • 칼럼 개수:
    • 한 테이블에서 최대 4,096개까지 칼럼을 만들 수 있다.
  • 칼럼명 중복 불가:
    • 한 테이블에서 같은 칼럼명을 사용할 수 없다.
  • 칼럼명 길이:
    • 최대 64자까지 사용할 수 있다.

Primary Key

한 테이블에서 유일한 값이 들어가야 하는 칼럼에 지정하는 제약조건이다.
기본 키로 설정된 칼럼에는 같은 테이블에서 동일한 값이 들어갈 수 없으며,
중복 값이 입력되면 오류가 나고 데이터 입력 작업이 모두 취소된다. (Transaction Rollback)
NULL도 허용하지 않습니다.

Foreign Key

다른 테이블의 기본 키를 참조하는 칼럼에 지정하는 제약조건이다.
외래키를 사용하면 두 테이블 간의 관계를 설정할 수 있으며,
데이터 무결성을 보장할 수 있다.

FOREIGN KEY (열 이름) REFERENCES 참조하는 테이블(참조하는 열 이름)

Referential Integrity

  • 참조 무결성 제약조건을 설정하면, 참조하는 테이블에 있는 데이터를 삭제하거나 수정할 때
    참조되는 테이블에 있는 데이터도 삭제하거나 수정할 수 있다.
CREATE TABLE orders (order_id INT, customer_id INT, PRIMARY KEY(order_id), FOREIGN KEY(customer_id) REFERENCES customers(customer_id) ON DELETE RESTRICT ON UPDATE CASCADE);

위 예시에서 ON DELETE RESTRICTorders 테이블에서 참조된 customers 테이블의 기본 키 값을 삭제할 수 없도록 하는 제약 조건이며,
ON UPDATE CASCADEcustomers 테이블에서 기본 키 값이 업데이트되면 이에 해당하는 외래키 값을 orders 테이블에서 자동으로 업데이트하도록 하는 제약 조건이다.

예시

CREATE TABLE students (
  id TINYINT NOT NULL AUTO_INCREMENT, -- 숫자 자동 생성
  name VARCHAR(10) NOT NULL, 
  gender ENUM('man','woman') NOT NULL,
  birth DATE NOT NULL,
  english TINYINT NOT NULL,
  math TINYINT NOT NULL,
  korean TINYINT NOT NULL,
  PRIMARY KEY (id) -- 기본키
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

키워드 설명

  • id : 학생의 고유번호.
    • 숫자로 자동 생성, NULL값 허용하지 않음, 기본키로 설정
  • name : 학생의 이름.
    • 문자열, NULL값 허용하지 않음
  • gender : 학생의 성별.
    • ENUM 타입으로 선언, NULL값 허용하지 않음
  • birth : 학생의 생년월일.
    • DATE 타입으로 선언, NULL값 허용하지 않음
  • english, math, korean : 학생의 영어, 수학, 국어 성적.
    • 숫자로 선언, NULL값 허용하지 않음
  • PRIMARY KEY (id) : id 칼럼을 기본키로 설정
  • ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 : 테이블의 엔진을 InnoDB로 설정하고, 문자 집합을 utf8mb4로 설정
  • AUTO_INCREMENT : 자동 증가
Comments