01. 데이터 그룹화
– GROUP BY 절의 기본 구문SELECT user_id, COUNT(*) --검색할 컬럼 FROM rental GROUP BY user_id; --그룹의 기준 컬럼
* 쿼리 끝에 나타나는 구문
– 한계
– 주문하다
– 그룹화– 그룹 기능을 활용하세요
SELECT user_id, SUM(컬럼명) FROM rental GROUP BY user_id; --user_id가 같은 열에서 컬럼의 내용을 다 더한 값 출력 SELECT user_id, AVG(컬럼명) FROM rental GROUP BY user_id; --user_id 가 같은 열의 컬럼의 평균을 출력 SELECT user_id, MAX(컬럼명) FROM rental GROUP BY user_id; --user_id가 같은 열중에서 해당 컬럼명이 가장 큰 값 출력 SELECT user_id, MIN(컬럼명) FROM rental GROUP BY user_id; --user_id가 같ㅇ느 열중에서 해당 컬럼명이 가장 작은 값을 출력
** 문제를 해결하려고
-- rental테이블의 구조를 조회합니다.
DESC rental; -- 누가 몇권의 책을 빌려갔는지 조회해 봅시다.
select * from rental; select user_id, count(*) from rental group by user_id;
02. 데이터 그룹에 조건 적용
– GROUP BY / HAVING 절의 기본 구문--rental 테이블에서 user_id가 같은 데이터가 2개 이상인 것만 검색 SELECT user_id, COUNT(*) FROM rental GROUP BY user_id --그룹기준 컬럼 HAVING COUNT(user_id) > 1; --조건
– 문제를 풀다
: 급여 테이블에서 HAVING을 사용하여 연봉을 10회 이상 받은 직원만 검색합니다.select emp_no, count(*) from salaries group by emp_no --직원번호 기준 그룹화 having count(salary)>=10; --연봉을 10번 이상 받은 직원 검색
03. 한 번에 두 개의 테이블 검색
– 테이블을 섹션으로 나누는 이유:
1> 테이블의 용량이 크면 관리가 어려우므로 기능별, 특징별로 나누어서 테이블의 크기를 줄인다.
2> 데이터관리법상 개인을 식별할 수 있는 모든 데이터를 하나의 테이블에 두어서는 안 된다.
(개인정보 해킹 이슈)
JOIN: 여러 테이블을 함께 조인합니다.
– 내부 조인
– 왼쪽 조인
– 올바르게 가입
– INNER JOIN 문의 기본 구문:--rental 테이블과 user테이블 연결 SELECT * FROM rental INNER JOIN user; --연결할 테이블
04. 두 테이블 모두에 조건부 조회 적용
– 조건을 적용하여 테이블 조인
– 참조 임대 테이블과 사용자 테이블의 정보에서 user_id는 동일하며 연결
– INNER JOIN / ON 문의 기본 구문:SELECT * FROM rental --테이블 INNER JOIN user --연결할 테이블 ON user.id = rental.user_id; --연결한 조건 컬럼 --user table의 id column과 rental table의 user_id column이 동일하다는 조건 --"테이블. 컬럼"
– 조건을 작성하는 이유: 열 이름을 명확히 하여 열 정의가 명확하지 않은 오류를 방지합니다.
05. 왼쪽 조인
– 조인은 테이블의 모든 값을 포함합니다(NULL 값 포함).
– 왼쪽 조인 구문:--모든 user테이블의 id와 rental 테이블의 user_id가 겹치도록 합치기 SELECT * FROM user --중심이 되는 쪽 table LEFT JOIN rental ON user.id = rental.user_id;
– 오류: 왼쪽 조인에 조건문이 첨부되지 않은 경우 오류 코드가 나타납니다.
select * from rental left join user --error 1064
– 왼쪽 테이블에는 있지만 오른쪽 테이블에는 없는 값은 NULL 값으로 표시됩니다.
06. 제대로 해봐
– 오른쪽에 있는 모든 값을 포함한 모든 값을 포함하여 연결(오른쪽 표에 따라 병합됨)
– 회원정보 없이 대여내역 등의 데이터를 출력합니다.
(LEFT JOIN에 NULL 값이 나오는 등)
– LEFT JOIN 기본 구문:--rental 테이블을 모두 출력하되, 모든 rental 테이블의 user_id와 user테이블의 id가 겹치도록 함. SELECT * FROM user RIGHT JOIN rental ON user.id = rental.user_id;
– 문제 해결(매우 지저분한 부분)
지침:
1. 오른쪽 부분 사용자모든 테이블을 쿼리하려면 올바르게 가입를 사용하여 연결하자
2. 대여서식 모든 열찾다 사용자 테이블에 가입하고 찾아보십시오.
3. 접속 시 사용자 테이블 신분증으로 렌탈 테이블 user_id를 기반으로 연결을 시도합니다.
4. 이때 사용자 테이블 모든 아이디 찾기 RIGHT JOIN 연결을 사용하십시오.**저를 혼란스럽게 하는 것들:
생각해보면 from 옆에 가장 중요한 테이블, 가장 중심에 있는 테이블을 놓으라고 하는데,
user 테이블이 배치되고, 갑자기 from이 아닌 next right join이 중심이 된다고 합니다.
오른쪽 오른쪽 결합
실무자들은 혼란스러워서 주로 Left Join을 사용하지만 실제로는 혼란스럽습니다.SELECT * FROM rental RIGHT JOIN user on rental.user_id = user.id;
간단한 요약
1. 그룹 데이터: 그룹 기준
2. + 조건 추가: 보유
3. 두 개의 테이블 쿼리: 내부 조인, 왼쪽 조인, 오른쪽 조인
4. + 조건 추가: 켜짐
테이블에. 열 = Btable.column