반응형
[원티드 프리온보딩 백엔드 챌린지 10월: SQL 기초]의 학습 내용입니다.
1. 데이터베이스와 테이블의 차이는 무엇인가요?
- 데이터베이스
- 어떤 규칙이나 목적을 기초로 하여 관리되는 데이터의 모음. 데이터의 정리와 관리를 쉽게 하기 위해 만든 데이터를 모은 것이다.
- 여러 개의 데이터베이스를 만드는 이유는 각 데이터베이스마다 데이터베이스에 접근할 수 있는 계정을 설정할 수 있기 때문이다.
- DBMS를 포함하는 프로그램도 데이터베이스라고 부르지만, 데이터를 저장하는 공간도 데이터베이스라고 혼용한다.
- 테이블
- 데이터베이스 안에 실제 데이터가 저장되는 형태이다. 파일에 데이터를 저장할 때 어떤 구조로 저장할 지 결정하는 것이다.
- 여러 개의 테이블이 데이터베이스 안에 존재할 수 있다.
2. MySQL에서 데이터를 조회할 때 사용하는 기본 SQL 명령어를 설명해주세요
- SELECT
데이터를 데이터베이스에서 가져오는 요청에 사용된다.SELECT column1, column2, ... FROM table_name
- 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
- JOIN
하나의 테이블에서 정보를 가져와서 다른 테이블에 붙이는 기능이다.SELECT comumn1 FROM table1 JOIN table2 ON table1.column1 = table2.column1;
SELECT * FROM orders JOIN users ON orders.user_id = users.user_id
- 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;
- ALIAS(별칭) 사용: ORDER BY 가 쿼리문 중에서 가장 나중에 실행되기 때문에 ALIAS를 사용해도 무방하다.
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 |
---|