데이터베이스와 테이블의 차이는 무엇인가요?

우리가 가장 관심있어하는 정보는 테이블 안에 있고, 이 테이블 안의 여러 데이터를 제어하는 것이 우리가 가장 하고 싶어하는 일이다. 이 테이블을 묶어서 그룹핑하고, 이름을 붙인 것이 스키마이고, 이 스키마를 관리하기 위한 것이 데이터베이스이다. 여러개의 데이터베이스를 묶은 것을 클러스터라고도 하고 DBMS라고도 하는데, 이 DBMS를 데이터베이스라고 부르기도 한다.

MySQL에서 데이터를 조회할 때 사용하는 기본 SQL 명령어를 설명해주세요

  • SELECT
    • SELECT절은 여러 조건들을 처리한 후 남은 데이터에서 어떤 ROW를 출력할 지 선택하는 역할을 한다.
  • WHERE
    • WHERE절은 FROM절에서 읽어온 테이블에서 조건에 맞는 결과만 갖도록 데이터를 필터링한다.
  • FROM
    • 조회하려는 전체 테이블의 정보를 가져온다.
  • HAVING
    • HAVING절은 그룹핑 후 각 그룹에 사용되는 조건절로, HAVING절은 각 그룹에 조건을 걸기 때문에 퍼포먼스가 떨어지는 단점이 있다. 그래서 WHERE에 조건을 쓸 수 있다면 WHERE에 조건을 쓰는게 좋다.
  • JOIN
    • JOIN절은 2개나 그 이상의 테이블을 연결하고, 연결한 테이블로부터 필요한 열을 조회할 수 있도록 한다.
  • ORDER BY
    • ORDER BY절은 출력할 ROW를 어떤 순서에 맞게 보여줄 지 결정한다.

SQL 명령문의 실행 순서는?

  1. 먼저 FROM절에서 조회하려는 전체 테이블의 정보를 가져온다. JOIN이 있다면 다른 테이블과 조인하여 필요한 정보를 가져온다.
  2. WHERE절로 FROM절에서 조회한 테이블에서 필요한 데이터를 필터링한다.
  3. GROUP BY로 선택한 칼럼으로 그룹핑한다.
  4. HAVING으로 그룹핑한 각 그룹에서 조건을 걸어 다시 필터링한다.
  5. SELECT절로 여러 조건들을 처리한 후의 데이터를 가져온다.
  6. ORDER BY를 이용하여 SELECT문에서 가져온 ROW를 어떤 순서에 맞게 보여줄 지 정한다.
  7. LIMIT로 보여줄 ROW의 개수를 정한다.

'Primary Key'와 'Foreign Key'의 차이와 각각의 역할에 대해 설명해주세요.

PK

  • Primary Key는 데이터베이스 테이블의 각 레코드를 고유하게 식별하는 역할을 합니다.
  • 한 테이블에는 하나의 PK만 존재할 수 있으며, 이 PK는 해당 테이블의 모든 레코드에 대해 고유해야 합니다.
  • PK는 NULL이 될 수 없습니다.
  • PK로 지정된 컬럼은 클러스터링의 기준으로 사용되어, 데이터가 저장되는 방식을 결정합니다.

FK

  • Foreign Key는 다른 테이블의 PK를 참조하여 두 테이블 간의 관계를 설정하는 역할을 합니다.
  • FK로 지정된 필드 혹은 필드 셋의 값은 참조하는 PK에 있는 값 중 하나여야 합니다. 이 규칙은 참조 무결성의 제약 조건을 만족시키기 위한 것입니다.
  • FK는 NULL일 수도 있으며, 참조하는 PK에 없는 값을 가질수도 있습니다.

차이점

  • PK는 한 테이블 내에서 각각의 ROW / RECORD를 고유하게 식별하기 위해 사용되며, FK는 한 테이블과 다른 테이블의 관계를 구축하기 위해 사용됩니다.
  • PK는 같은 컬럼 안의 모든 레코드가 UNIQUE해야하는 반면 FK는 같은 컬럼 안의 레코드가 중복될수도 있고, NULL이나 참조하는 PK의 ROW에 해당하지 않는 값을 가질수도 있습니다.

MySQL에서 'JOIN'이란 무엇이며, 'INNER JOIN'과 'LEFT JOIN'의 차이점은 무엇인가요?

JOIN은 두 개 이상의 TABLE에서 ROW를 결합하는 데 사용되는 연산이며, 주로 테이블 간에 관계를 맺고 있을 때 사용됩니다. JOIN의 형태는 여러개지만, 가장 기본적인 형태는 INNER JOIN과 LEFT JOIN입니다.

INNER JOIN

  • INNER JOIN은 두 테이블 간의 교집합을 반환합니다.
  • 즉, 조인 조건에 일치하는 레코드만 결과로 반환합니다.
  • 예를 들어 A라는 테이블과 B라는 테이블이 있어서 INNER JOIN을 하면, A와 B 모두에 들어있는 데이터만 반환합니다.

LEFT JOIN(LEFT OUTER JOIN)

  • LEFT JOIN은 첫 번째 테이블의 모든 레코드와 일치하는 두 번째 테이블의 레코드를 반환합니다.
  • 오른쪽(두 번째) 테이블에서 일치하는 값이 없을 경우 NULL을 반환합니다.

정규화(Normalization)란 무엇이며, 왜 중요한가요?

NORMALIZATION은 테이블의 각 레코드의 중복을 최소화하고, 데이터 구조를 효율적으로 만드는 과정입니다. NORMALIZATION을 통해 데이터의 무결성(INTEGRITY)와 일관성(CONSISTENCY)을 유지할 수 있습니다.

정규화의 단계는 1NF, 2NF, 3NF 등이 있지만 너무 많은 정규화를 사용할 경우 성능하락이 동반될 수도 있으므로 성능과 무결성 사이에서 적절한 균형을 찾아야 합니다.

'DB > SQL' 카테고리의 다른 글

SQLD - Alter시 Oracle, MySQL, MSSQL의 차이  (0) 2023.02.13

개괄

SQLD 공부를 하다가 ALTER TABLE시에 Oracle과 MsSQL(SQL Server)에 대한 차이를 공부하고 있었다.

 

다중 컬럼 변경시 오라클은

Alter Table Alter(

 컬럼1 변경점,

 컬럼2 변경점

);

 

MySql은

Alter Table Modify

 컬럼1 변경점

 컬럼2 변경점

;

 

MsSQL은 다중 컬럼이 변경되지 않아

Alter Table Alter 컬럼1 변경점;

Alter Table Alter 컬럼2 변경점;

단위로 해야한다.

'DB > SQL' 카테고리의 다른 글

오랜만에 작성하는 SQL 단골 면접 질문  (0) 2023.10.06

+ Recent posts