본문 바로가기
Programming/DB

데이터베이스 기초

by lucid_07 2023. 9. 29.
반응형
[원티드 프리온보딩 백엔드 챌린지 10월: SQL 기초]의 학습 내용입니다.

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

  • 데이터베이스
    • 어떤 규칙이나 목적을 기초로 하여 관리되는 데이터의 모음. 데이터의 정리와 관리를 쉽게 하기 위해 만든 데이터를 모은 것이다.
    • 여러 개의 데이터베이스를 만드는 이유는 각 데이터베이스마다 데이터베이스에 접근할 수 있는 계정을 설정할 수 있기 때문이다.
    • DBMS를 포함하는 프로그램도 데이터베이스라고 부르지만, 데이터를 저장하는 공간도 데이터베이스라고 혼용한다.
  • 테이블
    • 데이터베이스 안에 실제 데이터가 저장되는 형태이다. 파일에 데이터를 저장할 때 어떤 구조로 저장할 지 결정하는 것이다.
    • 여러 개의 테이블이 데이터베이스 안에 존재할 수 있다.

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

  • SELECT
    데이터를 데이터베이스에서 가져오는 요청에 사용된다.
    SELECT column1, column2, ...
    FROM table_name
    
     
    SELECT 다음에 오는 이름들은 선택한 테이블 중 어떤 을 선택할지 명시하는 것이다. 모든 열을 가져오고 싶다면 *을 사용할수 있다.
  • WHERE
    SELECT 문에 조건을 추가하는 구문이다. SELECT 뒤에 어떤 열을 가져올지 설정했다면 WHERE에서는 어떤 을 선택할 지 결정한다.
    SELECT column1, column2
    FROM table_name
    WHERE conditions
    
     
  • FROM
    SELECT를 데이터를 가져오기 위한 테이블을 지정하는데 사용한다.
  • HAVING
    그룹/집계에 대한 검색 조건을 지정하는데 사용한다.
    SELECT column1
    FROM table_name
    WHERE conditions
    GROUP BY column1
    HAVING conditions
    
     
    HAVING은 WHERE과 비슷하지만 GROUP BY에 의해 분류된 결과에서 필터링하기 위해 쓰이는 조건이다.
  • JOIN
    하나의 테이블에서 정보를 가져와서 다른 테이블에 붙이는 기능이다.
    SELECT comumn1
    FROM table1
    JOIN table2
    ON table1.column1 = table2.column1;
    
     
    예를 들어,
    SELECT *
    FROM orders
    JOIN users
    ON orders.user_id = users.user_id
    
     
    와 같이 orders 에서 찾은 데이터에 해당하는 user의 데이터를 가져오기 위해 사용한다.
  • ORDER BY
    SELECT 문을 사용할 때에 출력되는 결과물은 기본적으로 테이블에 입력된 순서대로 출력되지만, 특정 column 속성의 오름차순/내림차순으로 정렬하여 출력을 얻을 수 있다.
    SELECT * FROM table_name
    ORDER BY column_nmae(ASC or DESC)
    
     
    활용
    • ALIAS(별칭) 사용: ORDER BY 가 쿼리문 중에서 가장 나중에 실행되기 때문에 ALIAS를 사용해도 무방하다.
      SELECT sal + comm AS TOTAL FROM emp ORDER BY TOTAL;
    • column 이름 대신 열 숫자를 사용
      SELECT * FROM table_name ORDER BY 3;
    • 여러 열을 동시에 적용: 아래 예시는 3번째 열의 오름차순으로 정렬한 후 첫번째 열의 내림차순으로 정렬한다는 의미이다.
      SELECT * FROM table_name ORDER BY 3, 1 DESC;

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

  • Primary Key
    DBMS는 데이터를 일관성 있게 관리할 수 있도록 다양한 제약 조건을 설정할 수 있도록 한다. 열의 데이터 타입을 설정해서 원하지 않는 타입의 데이터가 추가되는 것을 막는 것이나 is_nullable 설정을 추가하는 것이 그 예이다.
    기본키 제약 조건은 테이블 내에서 유일하게 존재하는 값을 설정하여 중복된 데이터가 테이블에 삽입되는 것을 방지하는 제약 조건이다. 하나의 테이블 내에서 고유한 행을 선택할 수 있도록 해 준다.
    Primary key는 데이터의 중복을 방지하며, 매우 빠르게 찾을 수 있도록 도와준다.
    여러 개의 열의 조합으로 설정할 수도 있다.
    MySQL의 경우 text타입은 primary key가 될 수 없는 대신 varchar가 가능하다.
  • Foreign Key
    두 테이블 데이터 간의 연결을 설정하고 강제 적용하여 외래키가 적용된 테이블의 데이터를 조작할 수 있도록 해 준다.
    외래 키 참조에서는 한 테이블의 기본 키값을 다른 테이블의 열이 참조할 때 두 테이블 간에 연결이 생성된다. 이 때 두 번째 테이블에 추가되는 열이 외래 키가 된다.
    두 테이블을 연동하여 데이터가 추가/삭제될 경우 데이터의 충돌을 중복을 막기 위해 사용된다.

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

Join은 data나 row를 둘 혹은 그 이상의 테이블에서 공통된 필드를 통해 동시에 조작하기 위해 사용된다.
JOIN에는 몇 가지 종류가 있다:

  • INNER JOIN
    INNER JOIN은 조건을 만족하는 모든 row를 두 테이블에서 선택한다. 조건을 만족하는 row들을 두 테이블에서 모아 result-set을 생성한다.
    INNER JOIN대신 JOIN을 사용해도 무관하다. JOIN은 기본적으로 INNER JOIN이다.
  • LEFT JOIN
    JOIN의 오른쪽에 있는 테이블에서 해당하는 row들을 골라 왼쪽에 있는 테이블의 row들을 리턴한다. 오른쪽에 조건에 맞는 row가 없다면 result-set은 null이다.
    LEFT JOIN은 LEFT OUTER JOIN으로 불리기도 한다.
    SELECT table1.column1,table1.column2,table2.column1,....
    FROM table1 
    LEFT JOIN table2
    ON table1.matching_column = table2.matching_column;
    
     
  • RIGHT JOIN
  • FULL JOIN
  • NATURAL JOIN

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

이상 현상이 발생하는 릴레이션을 분해하여 이상현상을 없애는 과정
정규화의 목표는 테이블 간의 중복된 데이터를 허용하지 않는다는 것이다.
중복된 데이터를 허용하지 않음으로써, 무결성(Integrity)을 유지할 수 있으며, DB의 저장 용량 역시 줄일 수 있다.

출처

Primary Key및 Foreign Key 제약 조건-MS Learn
SQL | Join - GeeksforGeeks
Mangkyu님 블로그
김유환님 브런치
ssseok님 블로그
Gom Guard님 블로그

반응형

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

01 | 데이터베이스와 테이블 만들기  (0) 2023.09.25