한화시스템 SW BEYOND CAMP 22기 2주차 회고록

chanjin·2025년 11월 9일

이번주는 저번주와 다르게 온전하게 일주일 다 강의로 배우는 시간이었다.
체감상 한 2주는 넘게 지난거같은데 일주일 밖에 안됐다니 뭔가 시간이 느리게 가는것 같다😂

1. Database

1-1. Database 란?

💡 한 조직에 필요한 정보를 여러 응용 시스템에서 공용할 수 있도록 논리적으로 연관된 데이터를 모으고, 중복되는 데이터를 최소화 하여 구조적으로 통합/저장 해 놓은 것이다.
구조화된 데이터의 집합이므로 컴퓨터에서 쉽게 접근, 관리, 업데이트 할 수 있다.

  • Database의 특징
  1. 실시간 접근성(Real Time Accessibility) : 사용자가 데이터를 요청하면 실시간으로 결과를 서비스한다.
  2. 계속적인 변화(Continuous Change) : 데이터 값은 시간에 따라 항상 바뀐다.
  3. 동시 공유(Concurrent Sharing) : 데이터베이스는 서로 다른 업무 또는 여러 사용자에게 동시공유된다.
  4. 내용에 따른 참조(Reference By Content) : 데이터베이스에 저장 된 데이터는 데이터의 물리적 위치가 아니라 데이터 값에 따라 참조된다.

SQL 주요 키워드

  • SELECT : SELECT절은 MariaDB에서 가장 기본적인 명령어로 특정 테이블에서 원하는 데이터를 조회해서 가져올 때 사용된다.

  • WHERE : WHERE절은 특정 조건에 맞는 레코드(행,row)만을 선택하는데 사용되며 다양한 방법으로 조건을 설정할 수 있다.

    • AND : 두 조건 모두 참이여야 참을 반환.
    • OR : 두 조건 중 하나만 참이여도 참을 반환.
    • 연산 우선순위
      1. AND가 OR보다 우선순위가 높다.
      2. OR의 우선순위를 높이고 싶다면 소괄호()를 사용한다.
  • ORDER BY : ORDER BY절은 SELECT 절과 같이 사용하며 특정 열이나 열들의 값을 정렬하는데 사용한다.

  • LIKE
    EX) WHERE menu_name LIKE '%마늘%'
    - 이름에 마늘이 들어간 메뉴 검색
    EX) WHERE menu_name LIKE '마늘%'
    - 이름이 마늘로 시작하는 메뉴 검색
    EX) WHERE menu_name LIKE '%마늘'
    - 이름이 마늘로 끝나는 메뉴 검색

  • IN : 여러 값을 OR 관계로 묶고 나열하는 조건을 WHERE 절에 사용할때 사용

  • DISTINCT

    💡 DISTINCT는 중복된 값을 제거하는데 사용된다.
    컬럼에 있는 컬럼 값들의 종류를 쉽게 파악할 수 있다.
    기본적으로 SELECT 절에만 사용 가능하다.

  • LIMIT

    💡 LIMIT는 SELECT 문의 결과 집합에서 반환할 행의 수를 제한하는데 사용된다.
    OFFSET : 시작할 행의 번호(인덱스 체계)는 생략 가능하다.
    row_count : 이후 행부터 반환 받을 행의 개수

  • JOIN

    💡 JOIN은 두 개 이상의 테이블을 관련 있는 컬럼을 통해 결합하는데 사용된다.
    두 개 이상의 테이블은 반드시 연관있는 컬럼이 존재해야 하면 이를 통해 JOIN 된 테이블들의 컬럼은 모두 활용할 수 있다.

INNER JOIN

  • 공통된 컬럼 값을 지닌 행들끼리 결합하여 새로운 큰 테이블 생성
  • 두 테이블의 교집합이 반환하는 SQL JOIN 유형
  • INNER JOIN에서 INNER 키워드는 생략 가능

LEFT JOIN

  • 첫 번째(왼쪽) 테이블의 모든 레코드와 두 번째(오른쪽) 테이블에서 일치하는 레코드를 반환하는 SQL JOIN 유형

RIGHT JOIN

  • 두 번째(오른쪽) 테이블의 모든 레코드와 첫 번째(왼쪽) 테이블에서 일치하는 레코드를 반환하는 SQL JOIN 유형

GROUPING & HAVING

💡 GROUP BY 절은 결과 집합을 특정 열의 값에 따라 그룹화하는데 사용된다.
HAVING은 GROUP BY절과 함께 사용해야 되며 그룹에 대한 조건을 적용하는데 사용된다.

SUBQUERIES

SUBQUERY는 다른 쿼리(모든 SQL)내에서 실행되는 쿼리이다.
-> 기본적으로 QUERY는 SELECT를 의미(보조 개념으로 사용하는 SELECT)
SUBQUERY의 결과를 활용해서 복잡한 MAIN QUERY를 작성해 한번에 여러 작업을 수행할 수 있다.

SUBQUERY 유형

  1. 상관(상호연관) 서브쿼리란?
    -> 메인 쿼리가 서브쿼리의 결과에 영향을 주는 경우
    -> 상관 서브쿼리 내에는 반드시 메인 쿼리 테이블의 칼럼을 참조하는 조건이 포함되어야 함.
  2. 인라인 뷰란?
    -> FROM절에 위치하며 서브쿼리의 결과가 하나의 임시적인 테이블 처럼 사용됨.
    -> FROM절에 쓰인 서브쿼리는 반드시 별칭이 있어야 한다.
  3. 스칼라 서브쿼리란?
    -> 하나의 값(스칼라 값)을 반환하여, 마치 일반 컬럼이나 상수 값처럼 사용된다.
    -> 주로 SELECT절에서 사용.

DATA_TYPES

  • MariaDB는 여러 가지 데이터 유형(문자열, 숫자, 날짜, 시간)을 지원한다.
  • 적절한 데이터 유형을 정의하면 데이터 저장 공간을 효율적으로 사용한다.
  • 데이터 입력의 유효성 검사에 도움이 된다.

1. 데이터 형식의 종류

1-1. 숫자형 데이터 형식

  • 정수 또는 실수 등의 숫자를 표현
  • FLOAT 이나 DOUBLE 형은 큰 범위의 숫자를 저장할 수 있지만 정확하지 않은 근사치를 지정함.
  • 따라서 실수형을 저장하고 싶어도 DECIMAL을 사용하는 것이 바람직함.

1-2. 문자형 데이터 형식

1-3. 날짜와 시간 데이터 형식

DDL(Data Definition Language)

💡 DDL은 데이터베이스의 스키마를 정의하거나 수정하는 데 사용되는 SQL의 한 부분이다.

1-1. CREATE

  • 테이블 생성을 위한 구문
  • IS NOT EXISTS를 적용하면 기존에 존재하는 테이블이라도 에러가 발생하지 않는다.

1-1-1. AUTO_INCREMENT

  • INSERT 시 PRIMARY키에 해당하는 컬럼에 자동으로 중복되지 않게 번호를 발생시켜 저장함.

1-2. ALTER

  • 테이블에 추가/변경/수정/삭제하는 모든 것은 ALTER 명령어를 사용해 적용한다.

1-3. DROP

  • 테이블 삭제를 위한 구문

실행 순서‼‼‼
- SELECT
- FROM
- WHERE
- GROUP BY
- HAVING
- ORDER BY
- LIMIT !!

2주차 느낀점

2주차는 정말 배운게 많다!
위에 적어놓은 것 부터 너무 길어질까봐 못적은 VIEW, INDEX, UNIQUE, PRIMARY_KEY, FOREINGN KEY 등등 ...
그래도 동기들이 강사님이 주신 실습예제 외에 추가로 만들어서 풀어보라고 해주고 이해 안된 개념들도 여러번 짚어줘서 덕분에 2주차는 잘 마무리 된 것 같다!
실습 예제들도 점점 어려워져서 마지막 day 5의 4, 5번 문제는 정말 못풀겠어서 더 공부해서 다시 풀어봐야겠다.
저번주에 6개월간 정말 열심히 해야겠다 앞서진 못해도 뒤쳐지진 않아야겠다 했는데 이번주는 다행히 잘 마무리한 것 같다! 아직까진 매일매일 남아서 복습하고 수요일 목요일쯤 되니까 솔직히 피곤하긴 했지만 수업내용을 놓치지 않으려고 노력했다!
강사님께서 내주신 예제를 풀면서 느낀건데 나는 이론 이해가 완벽하게 끝나지 않았더라도 문제를 풀어보면서 완벽하게 이해하는 스타일인 것 같다. 그래서 앞으로 6개월간 매일 남아서 복습하는 시간도 갖고 최대한 많은 문제를 풀어봐야겠다.
그리고 JAVA와 SPRING 넘어가기 전에 데이터 베이스에 대해 최대한 많이 공부해야겠다.

2주차 회고

풀어본 문제를 모두 적어놓진 않았지만 이번에 강사님께서 프로그래머스 문제 풀어보라고 주신 5문제를 풀어보다 조금 막히는 게 있으면 왜 막혔는지 적어봤다.
1번 문제는 아직 제대로 배우지 않은 개념같아서 월요일에 질문 하려고 한다.
2번 문제는 10월에 작성된 게시글을 기준으로 조회하는 문제였는데 내가 10월에 작성된 댓글을 기준으로 조회를 했어서 자꾸 틀렸다. (문제를 좀 더 잘 읽어봐야겠다 ㅠㅠ)
4번 문제는 반납일과 대여일의 차를 구해서 30일 이상이면 장기대여, 미만이면 단기대여 를 출력하는 문제였는데 나는 단순히 DATADIFF 함수만 사용해서 풀었어서 틀렸다.
30일 대여를 정확하게 계산하려면 DATEDIFF 결과에 +1을 해줘야 해야한다.
그리고 이번 문제를 풀면서 case문을 공부했고 그걸 이용해 4번 문제를 마무리했다.
3,5번은 다행히 큰 어려움 없이 풀었다!

좋았던 점

함수와 서브쿼리가 처음에는 감도 안잡힐 정도로 많이 어려웠는데 그래도 많이 이해한거 같다!
그리고 프로그래머스 문제랑 강사님께서 내주신 예제가 생각보다 쉽게 풀렸던 점이 좋았다

아쉬웠던 점

아직도 스칼라 서브쿼리나 상관 서브쿼리에 대한 이해가 부족한거 같다.
함수를 여러개 사용할때 조금 어려워해서 문제를 더 풀어보면서 익숙해져야 할 것같다

개선할 점

일단 컨디션 관리가 제일 중요할 것 같다
피곤해서 수업에 집중 못하는 일이 점차 줄어들도록 !

다음주 목표

✅ 정규 수업시간 후 복습시간 갖기
✅ 프로그래머스 SQL고득점 키트 문제 하루에 한문제 이상 풀기
✅ 이번주처럼 너무 무리하지 않고 컨디션 관리 하기
✅ 함수와 서브쿼리랑 조금 더 친해지기 (아직은 어려운게 많다😥)

profile
찬지니에오

4개의 댓글

comment-user-thumbnail
2025년 11월 11일

개추 박았습니다

1개의 답글
comment-user-thumbnail
2025년 11월 11일

개추입니다

1개의 답글