[KB IT's Your Life] 데이터베이스 기본 개념과 SQL 쿼리 🚀💾

JUN·2024년 7월 27일
4

KB IT's your life

목록 보기
2/16
post-thumbnail

IT’s Your Life 3개월 차: DB 파트 시작

어느덧 IT’s Your Life 프로그램을 시작한 지 3개월이 되었고, 이제 데이터베이스(DB) 파트를 공부하기 시작했다.

참고로 커리큘럼은 KB 국민은행에서 신입 개발자가 갖춰야 할 기술 스택을 멀티캠퍼스와 직접 컨택하여 선정한다고 한다.

나는 5기 수강생으로서 이번 DB 파트에서 MySQLMongoDB를 배우게 된다.

교육은 전공자와 비전공자로 나뉘어 진행되며, 전공자인 나는 실습 위주의 설명과 개념 파트에서 면접 대비에 도움이 될 부분을 짚어준다.

사실 이런 교육과정의 가장 큰 장점은 공부 의지가 있는 사람들과 함께 동기부여를 받을 수 있다는 것이다.

가물가물해진 SQL 문법들이었기에 KB 교육 과정 내에서 두 가지 활동을 시작했다.

하나. 1일 1 SQL 문제 뿌셔뿌셔 챌린지 시작!

“SQL 문법은 익숙하세요?”

“그럼 우리 1일 1코테 풀기 챌린지나 할까요?”

본격적으로 DB 파트에 들어가니 쿼리문 작성이 가물가물하다는 생각이 들었다. 그래서 이런저런 대화를 하다가 자연스럽게 이런 챌린지를 만들어 버렸다.

둘이서 챌린지를 한다고 하니 금세 사람이 모였다. 단 하루 만에 6인 규모 챌린지가 되었다.


(해당 챌린지 notion 템플릿 필요하면 알려주시라...)

바로 오늘 푼 문제. 다른 사람들의 풀이를 보고 피드백 받을 수 있다는게 참 좋은 것 같다.

둘. 업무에 바로 쓰는 SQL 튜닝 서적 스터디 시작

마침 서적 스터디에서 클린코드 읽기도 끝났기에 다음책을 선정해야했다.

도메인 설계 관련 책인 Object 와 짧지만 실용적이라고 하는 SQL 튜닝 책을 고민했는데 스터디원의 강렬한 어필에 영업당해 SQL튜닝 책을 읽기로 결정했다.


핵심 주제 및 실습 내용

1. 데이터베이스의 검색 원리.

  • 기본적으로 선형 검색을 사용하지만, 병렬 처리로 속도 향상하는 곳이 많다.
  • 색인 순차 검색: 특정 필드를 기준으로 정렬 후 Balanced tree를 사용해 검색 속도 개선된다.

2. 데이터 타입

  • char, varchar, text, longtext, blob 등 다양한 데이터 타입 존재한다.
  • date, datetime: 날짜와 시간 저장가능.

3. Primary Key

  • 중복되지 않고 NULL 값을 허용하지 않는 특정 필드이다.
  • 테이블당 하나의 주키만 가능하며, 여러 필드를 묶어서 사용 가능하다.

4. SQL 쿼리 예제

기본 SELECT 문

select * from emp where ename = 'scott';

대소문자를 구분하지 않고 검색한다.

날짜 기준 검색

select * from emp where hiredate >= '2000-01-01';

특정 날짜 이후에 입사한 직원을 검색한다.

조건 검색 (WHERE 절 사용)

select * from emp where sal >= 3000;
select * from emp where gender = 'M';

급여가 3000 이상인 직원이나 남성 직원을 검색한다.

와일드카드 사용 (LIKE)

select * from emp where ename LIKE 's%';
select * from emp where ename like '%a';

's'로 시작하거나 'a'로 끝나는 이름을 검색한다.

범위 검색 (BETWEEN)

select * from emp where sal between 800 and 3000;

급여가 800에서 3000 사이인 직원을 검색한다.

여러 값 검색 (IN)

select * from emp where empno in (8000, 8001, 8005);

특정 사원 번호를 가진 직원들을 검색한다.

정렬 (ORDER BY)

select deptno, ename from emp order by deptno, ename;

부서 번호와 이름으로 정렬한다.

5. 집계 함수와 그룹화

select deptno, avg(sal) from emp group by deptno;

부서별 평균 급여를 계산한다.

HAVING 절을 이용한 그룹 조건 지정

select deptno, count(ename) from emp
where deptno is not null
group by deptno
having COUNT(ename) >= 5;

직원 수가 5명 이상인 부서를 검색한다.

CASE 문을 이용한 조건별 출력

select ename,
case deptno
  when 10 then '총무부'
  when 20 then '마케팅부'
  when 30 then '개발부'
  when 40 then '홍보부'
  else '부서모름'
end dname
from emp;

부서 번호에 따라 부서 이름을 출력한다.

이러한 개념들과 예시 코드를 통해 데이터베이스의 기본 구조와 SQL 쿼리 작성 방법에 대해 깊이 있게 이해할 수 있었다. 앞으로 실제 프로젝트에 적용하며 더 많은 경험을 쌓아갈 계획이다!

profile
순간은 기록하고 반복은 단순화하자 🚀

2개의 댓글

comment-user-thumbnail
2024년 7월 27일

응원합니다~! >,<

답글 달기
comment-user-thumbnail
2024년 8월 8일

화이팅 !!!

답글 달기