[Day 12 | DB] 제약조건

y♡ding·2024년 10월 29일
0

데브코스 TIL

목록 보기
74/163

제약 조건 (Constraints)

제약 조건은 데이터베이스에서 데이터의 무결성을 보장하기 위해 설정하는 규칙입니다. 제약 조건을 통해 테이블에 삽입되는 데이터의 형식과 일관성을 유지할 수 있으며, 잘못된 데이터 입력을 방지합니다.


제약 조건설명키워드
필수 입력특정 열에 반드시 값이 있어야 함NOT NULL
중복 방지중복된 값을 허용하지 않음UNIQUE
필수 + 중복 방지고유하고 NULL 값이 없는 기본 키PRIMARY KEY
참조다른 테이블의 값을 참조하여 일관성 유지FOREIGN KEY
값 검사특정 조건을 만족하는 값만 허용CHECK
기본값 설정값을 입력하지 않으면 기본값이 자동 입력됨DEFAULT

제약조건의 기본 문법

   컬럼 단위 - 컬럼을 생성할 때 정의
   CREATE TABLE 테이블명 (
       컬럼명 자료형(크기) 제약조건,
       컬럼명 자료형(크기) 제약조건,
       컬럼명 자료형(크기)
   )

   테이블 단위 - 컬럼생성 완료 후 정의
   CREATE TABLE 테이블명 (
       컬럼명 자료형(크기),
       컬럼명 자료형(크기),
       컬럼명 자료형(크기),
       제약조건
   )

테이블에 설정된 제약조건을 확인하는 방법은 information_schema 스키마의 테이블을 활용합니다.

내부 정보 스키마로 제약조건 확인하기

MySQL/MariaDB에서 기본으로 제공되는 스키마는 information_schema, mysql, performance_schema, sys 등이 있으며, 각각 데이터베이스의 내부 정보를 관리하고 접근하는 데 사용됩니다.

스키마명설명학습 키포인트
information_schema데이터베이스 메타데이터 조회. 테이블, 열, 제약조건, 권한 등의 구조를 파악할 때 사용테이블과 열의 구조, 인덱스 조회, 제약조건 확인
mysql사용자 계정, 권한 및 서버 설정 정보를 담고 있는 운영 스키마사용자 관리, 권한 설정 방법
performance_schema서버의 성능 데이터 수집. 쿼리 성능 분석, 리소스 사용량 모니터링 등에 유용성능 분석, 대기 시간 분석, 쿼리 최적화
sys성능 스키마를 쉽게 사용할 수 있도록 제공되는 뷰 모음. 직관적인 시스템 모니터링성능 데이터 조회, 시스템 자원 사용량 모니터링

information_schema.table_constraints 테이블

information_schema라는 특별한 스키마에 있는 table_constraints 테이블에서 데이터를 조회합니다. 이 테이블은 모든 데이터베이스의 테이블에 설정된 제약조건에 대한 정보를 저장하고 있습니다.

MariaDB [sample]> desc information_schema.table_constraints;
+--------------------+--------------+------+-----+---------+-------+
| Field              | Type         | Null | Key | Default | Extra |
+--------------------+--------------+------+-----+---------+-------+
| CONSTRAINT_CATALOG | varchar(512) | NO   |     | NULL    |       |
| CONSTRAINT_SCHEMA  | varchar(64)  | NO   |     | NULL    |       |
| CONSTRAINT_NAME    | varchar(64)  | NO   |     | NULL    |       |
| TABLE_SCHEMA       | varchar(64)  | NO   |     | NULL    |       |
| TABLE_NAME         | varchar(64)  | NO   |     | NULL    |       |
| CONSTRAINT_TYPE    | varchar(64)  | NO   |     | NULL    |       |
+--------------------+--------------+------+-----+---------+-------+
  • constraint_name: 제약조건의 이름을 반환합니다. 각 제약조건마다 고유한 이름이 있습니다.
  • table_schema: 제약조건이 설정된 스키마(데이터베이스) 이름을 반환합니다. 이 경우, 'sample'이라는 데이터베이스 안에 있는 제약조건들이 조회됩니다.
  • table_name: 제약조건이 설정된 테이블 이름을 반환합니다.
  • constraint_type: 제약조건의 유형을 반환합니다. 주로 PRIMARY KEY, FOREIGN KEY, UNIQUE, CHECK 등이 포함될 수 있습니다.

sample 스키마에 존재하는 모든 테이블의 제약조건 목록을 조회하는 SQL 쿼리

MariaDB [sample]> select constraint_name, table_schema, table_name, constraint_type
    -> from information_schema.table_constraints
    -> where constraint_schema = 'sample';
+-----------------+--------------+------------+-----------------+
| constraint_name | table_schema | table_name | constraint_type |
+-----------------+--------------+------------+-----------------+
| PRIMARY         | sample       | dept       | PRIMARY KEY     |
| PRIMARY         | sample       | emp        | PRIMARY KEY     |
| fk_emp_dept     | sample       | emp        | FOREIGN KEY     |
+-----------------+--------------+------------+-----------------+

0개의 댓글

관련 채용 정보