2024/10/2214 JOIN 심화 2 - FROM 절 JOIN 형태 1 : INNOR JOIN/ ON FROM절 JOIN에 대해서 학습해 볼 것이다. 이론 2 - FROM 절 JOIN 형태 : INNOR JOIN/ ON JOIN인데 INNOR가 생략되었다. a의 USER 테이블과 b의 CLASS 테이블을 결합한다는 뜻이다. 실습 1 - FROM 절 JOIN 형태 : INNOR JOIN/ ON 1 1. 두 테이블의 모든 정보 조회하기 이제 두 테이블을 조인해서 직급이 함께 출력되도록 할 것이다. 2. 사원번호, 이름, 직급명칭 조회하기 생각보다 문제가 어려워서 여러 번 코드를 수정했다. INNOR가 아니라 INNER임을 기억하자. 조인을 할 때는 ON을 명시해서 어느 것과 조인을 할지 조건을 정해야 한다. 실습 2 - FROM 절 JOIN 형태 : INNO.. 2024. 10. 22. JOIN 심화 1 - JOIN에 대하여 드디어 2주 차 JOIN에 대해서 공부하게 되었다. 학습할 내용이 32개나 있지만 오늘 새벽과 아침까지 해서 모두 마쳐보려고 한다. 그리고 오늘은 공부할 게 많아서 어제 미리 몇 개를 발행해 두었다.오늘의 목표는 3주 차 서브쿼리 심화까지 학습을 마치는 것이다. 그럼 본격적인 공부를 시작해 보자. 이론 1 - JOIN 이렇게 하는 것이 일반적이다. 대부분 등가 연산자를 이용한 조인을 많이 사용하는 편이다. 퀴즈 1 - JOIN : EQUI JOIN 처음에는 띄어쓰기를 해서 틀렸다. 이건 맞은 문제가 분명하다. 퀴즈 2 - JOIN : Non EQUI JOIN 학습을 마치고이렇게 해서 첫 번째 학습을 모두 마쳤다. 다음 단원부터 조인에 대해서 본격적으로 알아보.. 2024. 10. 22. 집합 연산자와 계층형 질의 8 - 미션 문제 풀기 및 단원 마무리하기 이제 미션 문제를 풀며 이 단원을 정리해 볼 것이다. 미션 1 - 살 수 있는 물건들 1. 두 테이블의 데이터 조회하기 구매할 수 있는 상품을 product_stock이 0을 초과해야 한다. 이제 여기서 구매할 수 있는 물건을 찾아볼 것이다. 2. 구매할 수 있는 모든 상품이름의 목록 조회하기 3. 공통으로 구매할 수 있는 모든 상품이름 목록 조회하기 문제를 잘 맞혔다. 미션 2 - 개근상 받을 사람 1. 학생 정보와 지각 이력 테이블 조회하기 여기서 지각 이력이 없는 학생은 10001, 10002, 10004, 10007이 될 것이다. 2. 지각 이력이 없는 학생의 학생번호 조회하기 이 문제 역시 잘 풀었다. 미션 3 - 멘토와 .. 2024. 10. 22. 집합 연산자와 계층형 질의 7 - 계층형 질의 2 : SQL Server/ MariaDB 이번에는 SQL Server와 MariaDB의 계층형 질의에 대해서 학습해보려고 한다. 이론 6 - 계층형 질의 2 : SQL Server/ MariaDB 왼쪽이 member 테이블인데 어떤 결과값에 의해 계층형 질의가 생기고, 계층형 질의를 통해 레벨값을 추출한다. 가운데 쿼리가 마리아 DB에서 사용하는 계층형 질의이다. AS 안에 있는 쿼리는 CTE를 통해 재귀호출을 하겠다는 뜻이다.이 안에 재귀호출되는 쿼리가 어떻게 동작하는지 이해하면 좋다. manager_id가 NULL인 즉 최상위 데이터를 찾겠다는 뜻이다. 최상위 데이터의 레벨값을 0으로 설정했다. 비어있는 것과 UNION ALL을 조인해서 CTE 테이블에 넣는다. 첫번째 순환을 해서 나오는 값이 이.. 2024. 10. 22. 집합 연산자와 계층형 질의 6 - 계층형 질의 1 : Oracle 집합 연산자가 끝나고 계층형 질의에 대해 학습해 볼 것이다. 이론 5 - 계층형 질의 : Oracle 사원들의 관계가 계층 형태로 되어 있다. START WITH는 최상위 data를 기준으로 삼는다. CONNECT BY는 부모와 자식으로 상위 데이터와 하위 데이터를 연결한다. 1000은 최상위 데이터이고, 1001과1002는 상위 데이터이다. 공백이 0에서 하위 데이터에 4씩 증가해서 추가되고 있다. 이런 식으로 계층형 데이터를 응용할 수 있다. CONNECT_BY_ROOT는 현재 전개할 루트에서 최상위 데이터 값을 표시할 수 있다. CONNECT_BY_ISLEAF는 최하위 데이터가 아니라면 0이, 맞으면 1이 표시된다. SYS_CONNECT_BY_PATH는 루트.. 2024. 10. 22. 집합 연산자와 계층형 질의 5 - 집합 연산자 개념 4 : EXCEPT 저녁 먹기 전에 이 단원 학습을 진행하려고 한다. 오늘은 몸이 많이 안 좋아서 사실 공부하기에는 힘든 날이기도 하다. 그래도 할 수 있는 만큼만 조금씩 해볼 것이다. 이론 4 - 집합 연산자 개념 : EXCEPT 오라클에서는 EXCEPT가 아니라 MINUS를 사용해야 한다. 실습 8 - 집합 연산자 개념 : EXCEPT 1 1. 두 테이블 데이터 조회하기 2. 두 테이블에서 학생번호와 학생이름 조회하기 3. lecture_special에는 존재하고 lecture_basic에는 존재하지 않는 데이터 조회하기 EXCEPT를 사용할 때는 어디에 포함이 되는지 알아야 한다. lecture_special에서 공통된 부분을 빼주어야 하므로 이 테이블.. 2024. 10. 22. 집합 연산자와 계층형 질의 4 - 집합 연산자의 개념 3 : INTERSECT 이이서 교집합인 INTERSECT에 대해서 공부해 보겠다. 이론 3 - 집합 연산자의 개념 : INTERSECT 공통된 부분은 A1, B1이다. 이 실습은 MariaDB로 진행하고 있는데 여기서는 제공을 하지만, 내가 사용하는 MySQL에서는 INTERSECT를 제공하지 않는다고 한다. 실습 6 - 집합 연산자 개념 : INTERSECT 1 1. 두 테이블의 학생번호와 학생이름 조회하기 2. 두 테이블에서 공통적으로 존재하는 데이터 조회하기 실습 7 - 집합 연산자 개념 : INTERSECT 2 1. 두 테이블의 전체 정보 조회하기 두 테이블의 정보를 보면 홍길동이라는 사람의 정보가 중복되는 것을 볼 수 있다. 2. 각 테이블의 .. 2024. 10. 22. 집합 연산자와 계층형 질의 3 - 집합연산자 개념 2 : UNION/ UNION ALL 2 <실습 문제 및 퀴즈 문제 풀기> 이어서 실습 문제를 풀어보겠다. 실습 4 - 집합 연산자 개념 : UNION ALL 1. 두 테이블에서 강의 이름 조회하기 2. 중복을 제거하지 않고 두 데이터 연결하기 실습 5 - 집합 연산자 개념 : UNION/ UNION ALL 1. 두 개의 테이블 조회하기 이제 여기서 이름과 번호를 조회하는 쿼리를 작성해 보겠다. 2. 이름과 번호를 조회하고, 중복을 제거하지 않고 데이터 연결하기 중복된 이름과 번호가 출력되었다. 3. 이름과 번호를 조회하고, 중복을 제거하고 데이터 연결하기 정답을 잘 맞혔다. 퀴즈 2 - 집합 연산자 개념 1 학습을 마치고드디어 두 번째 단원 학습을 마쳤다. 실습 문제와 관련 영상이 길어서 예상했던 .. 2024. 10. 22. 집합 연산자와 계층형 질의 2 - 집합연산자 개념 1 : UNION/ UNION ALL 1 <이론 및 실습 문제 풀기> 점심을 먹고 오후 공부를 시작해 본다. 오늘은 오후 다른 일정이 있어서 2시간밖에 하지 못할 것 같지만 그래도 할 수 있는 데까지 해볼 것이다. 이론 2 - 집합연산자 개념 : UNION/ UNION ALL 중복 제거를 하기 위해 정렬을 한다. 이 중복 제거를 하는 것이 UNION 연산의 특징이다. 중복 제거를 하지 않고 단순히 데이터를 연결한다. 실습 2 - 집합 연산자 개념 : UNION 1 1. 두 테이블 전체 조회하기 두 테이블에 어떤 항목이 들어있는지 알기 위해 전체 조회를 했다. 2. 두 개의 테이블 조회하기 3. 두 테이블 중복제거하여 연결하기중복을 제거하는 연산자는 UNION이다. 문제를 잘 맞혔다. .. 2024. 10. 22. 집합 연산자과 계층형 질의 1 - STANDARD SQL 드디어 SQL 심화 학습을 공부할 때가 되었다. 이제 난 SQL 기초 단계는 뛰어넘은 것 같다. 이론 1 - STANDARD SQL 두 개의 테이블에서 살펴볼 때 어떤 경우에 해당되는지 파악해 본다. 카디션 프로덕트는 두 개의 테이블에서 가능한 모든 경우 수를 추출하는 것을 말한다. 차집합은 A와 B 중에서 공통된 데이터만을 제거하는 것이다. 셀렉션은 특정 행을, 프로덕션은 특정 열을, 조인은 두 테이블의 공통된 부분을 합해서 출력하는 것이다. 디비전은 연관된 데이터만 출력하는 것이다. 여기서 A에만 연관되어 있으므로 A만 출력되는 것이다. 셀렉션은 시그마 기호를 사용한다. A라는 릴레이션에 대하여 C가 3보다 작은 조건을 걸었다. 프로젝션은 파이 .. 2024. 10. 22. 인덱스 3 - 인덱스의 실제 사용 드디어 인덱스의 마지막 장이다. 이번 장에서는 단순 보조 인덱스 및 고유 보조 인덱스를 생성하고 제거하는 방법을 익힌다. MySQL의 실행 계획에서 인덱스를 효율적으로 사용하는 방밥을 알아볼 것이다. 시작하기 전에인덱스에 대한 개념을 파악한 후에는 실제로 인덱스를 생성하는 SQL을 익혀야 한다. 인덱스를 생성하기 위해서는 CREATE INDEX 문을 사용하고, 제거하기 위해서는 DROP INDEX 문을 사용한다. 기본 형식은 다음과 같다.보조 인덱스는 데이터의 중복 여부에 따라 단순 보조 인덱스와 고유 보조 인덱스로 나뉜다. 인덱스 생성과 제거 문법인덱스 생성과 제거에 대한 정확한 문법을 이해하고 활용하는 방법을 익혀보겠다. 인덱스 생성 문법테이블을 생성할 때 특정 열을 기본 키, 고유 키로 설정하.. 2024. 10. 22. 인덱스 2 - 인덱스의 내부 작동 운동을 마치고 간단한 아침도 먹고 이제 아침 공부를 시작해 본다. 아침에는 4시간 동안 인덱스 단원을 모두 마치고 오늘 오후부터는 엘리스로 SQL 심화 공부를 할 예정이다. 1주 차까지는 마칠 수 있을 것 같다. 저녁에는 2주 차를 2\3 이상 마치고, 내일은 4주 차까지 모두 학습을 마쳐야겠다. 그리고 다시 SQL 책으로 돌아와서 스토어드 프로시저에 대해서 공부하면 거의 모든 과정이 끝난다.파이썬으로 연결하는 건 나중에 해도 될 것 같아 7장까지만 공부할 것이다. 그럼 이제 오늘의 아침 공부를 본격적으로 시작해볼 것이다. 인덱스를 만들고 사용하는 방법은 어렵지 않다. 하지만 인덱스의 작동 과정을 제대로 이해하지 못한 상태에서 사용하면 오히려 문제가 생길 수 있다. 시작하기 전에틀러스터형 인덱스와 보조 .. 2024. 10. 22. 이전 1 2 다음