2021. 10. 30. 20:46ㆍ작업/SQL
1. 다수의 테이블 제어하기
서로 다른 테이블의 연결되는 속성으로 그룹 짓기 : GROUP BY
-> SUM, AVG, MAX 등과 함꼐 사용하면 좋다
-> SELECT 검색할 컬럼 FROM 테이블 GROUP BY 그룹의 기준컬럼
# 실습 1
SELECT user_id,COUNT(*) FROM rental GROUP BY user_id;
(-> user_id에 따른 전체 한줄(*)이 몇 개씩 있는지 센다.
# 실습 2
SELECT user_id, COUNT(*) FROM rental GROUP BY user_id HAVING COUNT(user_id)>1;
-> GROUP BY와 조건을 함께 걸고 싶을 떄
# 실습 3 HAVING
# 실습 5 INNER JOIN
SELECT 검색할 컬럼 FROM 테이블 INNER JOIN 연결할 테이블 ON 연결한 조건 컬럼
( SELECT * FROM rental INNER JOIN user ON user.id= rental.user_id; ) 테이블.컬럼
# 실습 8 LEFT JOIN
# 실습 10 RIGHT JOIN
2. 서브쿼리
# 서브쿼리
하나의 쿼리 안에 포함된 또 하나의 쿼리.
- 알려지지 않은 기준을 이용한 검색에 유용
- 메인 쿼리가 실행되기 전에 한 번만 실행
- 한 문장에서 여러 번 사용 가능
SELECT * FROM employees WHERE 급여>2500; 에 서브쿼리를 적용하면
SELECT * FROM employees WHERE 급여> (SELECT 급여 FROM employees WHERE 이름='elice');
* 단 괄호 내에는 ORDER BY를 쓸 수 없고, 메인쿼리 < 서브쿼리 순으로 써야 함.
그리고 SELECT문만을 쓸 수 있다.
# 실습 1 단일행 서브쿼리
# 실습 2
# 실습 3
SELECT * FROM employee WHERE 급여 > (SELECT 급여 FROM employee WHERE 사원번호=1);
다중행 : 서브쿼리 결과가 2개 이상이 나오는 쿼리 (IN, ANY, ALL)
SELECT * FROM employee WHERE 급여 IN (SELECT max(급여) FROM employee GROUP BY 부서번호);
# 실습 4 다중행 서브쿼리
# 실습 5 각 부서별 급여를 제일 많이 받는 사원의 월급을 받는 사원들
# 실습 7 하나라도 혹은 전부 ANY ALL
스칼라 서브쿼리 : SELECT 절에서 사용하는 서브쿼리
WHERE(꼬리)에 주로 연결하나 SELECT(머리)에 연결하기도 함
JOIN을 사용한 것과 같은 결과를 나타냄. 데이터가 많을 떄는 JOIN보다 스칼라 서브쿼리가 더 빠르다..
SELECT students.name, ( SELECT math FROM middle_test as m WHERE m.student_id = students.student_id ) AS middle_avg FROM students;
# 실습 8 스칼라 서브쿼리
3. 데이터베이스
# 데이터베이스 : 공유하여 사용할 목적으로 체계화하여 관리하는 데이터의 집합(보관소)
# 실습 1 유일키(PK)
primary key
# 실습 2 복합키
primary key같은 속성이 여러 개 있을 때 여러 개 지정 가능
# 실습 3 외래키
4. 정규화
# 정규화
테이블 간 데이터 조작(삽입,삭제,수정) 시 발생할 수 있는 이상 현상을 줄이기 위한 작업
#1차 정규화
각 속성마다 값이 1개씩 존재하도록 하는 과정(원자화)
한 줄에 하나의 데이터씩만 들어있도록
# 2차 정규화
복합키로 구성되어있을 때 고려해야하며, 모든 속성이 완전함수종속이 되도록 하는 작업
# 3차 정규화
테이블 내에서 이행적 요소를 제거하는 작업
5. 뷰
# 뷰(View)
하나 이상의 테이블에서 여러 정보를 토대로 만들어지는 실제 존재하지 않는 가상의 테이블
보안 상 등 여러 목적으로 필요한 정보만 선택해서 가상 테이블만 보여주기 좋다.
# 실습 1
# 실습 2 여러 테이블 뷰
# 실습 3 뷰 삭제
'작업 > SQL' 카테고리의 다른 글
22.02.04 SQL 심화 공부 (JOIN) (0) | 2022.02.04 |
---|---|
22.02.03 SQL 심화 공부 (집합연산자 & 계층형질의) (0) | 2022.02.03 |
21.10.31 5주차 모의테스트 (0) | 2021.10.31 |
21.10.31 (6주차 복습 1) SQL 시작하기, DML, 함수 (0) | 2021.10.31 |