기본 키와 외래 키, 데이터베이스와 테이블 생성하기

이선우·2024년 9월 17일
0

CS 공부

목록 보기
9/10
post-thumbnail

키(key)

  • 조건에 맞는 데이터를 찾기 위한 식별자
  • 기본 키, 외래 키, 고유 키 ...

관계형 데이터베이스란 테이블처럼 표의 형태로 데이터를 관리한다

위의 테이블에서 각각의 행을 지칭할 수 있는 가장 중요한 것 -> ID -> 기본키(Primary Key, PK)

기본 키(Primary Key)

  • 중복되어서는 안되고, 고유해야 하며, NULL 이어서는 안된다.
  • 때로는 여러 열을 묶어 하나의 기본 키로 삼기도 한다.

고유 키(Unique Key)

  • 기본 키와 유사하나 널(NULL)로 지정 가능하다

외래 키(Foreign Key, FK)

  • 두 개의 테이블 간의 관계를 표현하기 위한 키
  • 다른 테이블을 연결(참조)하기 위한 키

외래키를 사용할 떄에는 주의해야 할 점이 있다.
예를 들어서
참조한 테이블이 삭제된다면??(on delete)
참조한 테이블이 변경된다면??(on update)
-> 해결 방법

  • SET NULL: 전부 NULL 값으로 채워라
  • CASCADE: 함께 변경해라 (함게 삭제, 함께 업데이트)
  • RESTRICT: 삭제, 업데이트 자체를 제한

MySQL이 관리하는 것

  • 데이터베이스
  • 테이블
  • 데이터를 의미하는 행과 열
  • 데이터

MySQL에서는 데이터베이스를 스키마로 표현한다.

데이터베이스(스키마) 생성
CREATE DATABASE DBNAME;

데이터베이스(스키마) 조회
SHOW DATABASES;

데이터베이스(스키마) 사용
USE DBNAME;

데이터베이스(스키마) 삭제
DROP DATABSE DBNAME;

테이블 생성
CREATE TABLE 테이블이름 ( 열이름1 자료형, [DEFAULT 기본값] [NULL | NOT NULL] .... )
괄호로 자료형의 최대 길이 명시 가능, 다양한 제약 조건을 추가할 수 있다.

자료형

  • 숫자형(INT, BIGINT, FLOAT, DOUBLE, DECIMAL, ....)

  • 문자형(CHAR, VARCHAR, ...)

  • 날짜/시간형(DATE, DATETIME, TIMESTAMP, ..)

  • ENUM, SET, JSON, XML, ...

    테이블 조회
    SHOW TABLES;
    SHOW TABLES FROM DBNAME;

    테이블 변경
    ALTER TABLE tbl_name alter_option

    테이블 삭제1
    DROP TABLE TABLENAME;

    테이블 삭제2 - 테이블 구조는 유지, 행만 삭제한다
    TRUNCATE TABLE TABLENAME


관련 면접 질문

기본 키(Primary Key)란 무엇인가요?

답변: 기본 키는 테이블의 각 행을 고유하게 식별할 수 있는 열입니다. 중복될 수 없으며, NULL 값을 가질 수 없습니다. 하나의 테이블에는 하나의 기본 키만 존재합니다.

고유 키(Unique Key)와 기본 키의 차이점은 무엇인가요?

답변: 고유 키는 중복되지 않는 값을 가지지만, NULL 값을 허용할 수 있다는 점에서 기본 키와 다릅니다. 기본 키는 반드시 값이 존재해야 하며 NULL을 허용하지 않습니다. 또한 기본 키는 테이블당 하나만 설정할 수 있지만, 고유 키는 여러 개 존재할 수 있습니다

외래 키(Foreign Key)란 무엇인가요?

답변: 외래 키는 다른 테이블의 기본 키를 참조하는 키입니다. 두 테이블 간의 관계를 설정할 때 사용됩니다. 외래 키를 통해 참조 무결성을 유지할 수 있습니다.

테이블에서 기본 키로 여러 열(Column)을 사용할 수 있나요?

답변: 네, 가능합니다. 여러 열을 묶어 복합 기본 키(Composite Primary Key)를 설정할 수 있습니다. 이 경우 각 열의 조합이 고유하면 됩니다.

TRUNCATE와 DROP의 차이점은 무엇인가요?

답변: TRUNCATE는 테이블의 모든 데이터를 삭제하지만 테이블 구조는 유지합니다. DROP은 테이블 자체를 삭제하여 데이터뿐만 아니라 테이블 구조도 사라집니다.

profile
백엔드 개발자 준비생

0개의 댓글