일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- update
- KDT
- sql
- PYTHON
- join
- State Hook
- linux
- Git
- 엘리스AI트랙
- flask연동
- 리액트
- 리눅스
- 트럼프 대통령 트윗 분석하기
- delete
- 자료구조
- merge request
- 백준 알고리즘
- 엘리스
- git remove
- 영어 단어 모음 분석하기
- 엘리스 AI 트랙
- pandas
- mongodb
- 알고리즘
- GitLab
- Effect Hook
- K-Digital training
- insert
- 파이썬
- openapi
- Today
- Total
GO WILD, SPEAK LOUD, THINK HARD
엘리스 AI 트랙 03주차 - SQL로 데이터 다루기 II (1/8) 🔥 본문
✔ 03주차. 데이터베이스 기초 개요
<수강 목표>
-
데이터 모델링에 대해 이해하고 DB 정규화, 반정규화를 통해 성능을 향상합니다.
-
표준 SQL의 DML문법을 익히고 실제 관계형 DB에서 생성, 조회, 수정, 삭제를 할 수 있습니다.
-
표준 SQL의 DCL, DDL 문법을 익히고 실제 운영가능한 DB를 생성 및 관리할 수 있습니다.
[4장 다수의 테이블 제어하기]
1. 데이터 그룹 짓기
- GROUP BY : 테이블에서 같은 값을 가진 데이터를 그룹으로 만듦. 그룹함수 사용 가능 (SUM, AVG 등등)
- GROUP BY 기본문법
-- rental 테이블에서 user_id를 그룹으로 묶어줌
SELECT user_id, COUNT(*)
FROM rental
GROUP BY user_id;
2. 데이터 그룹에 조건 적용하기
- HAVING : GROUP BY 절에 조건을 적용할 때 사용
- HAVING 기본문법
-- rental 테이블에서 user_id 가 같은 1개 초과의 데이터가 몇개 있는지 검색
SELECT user_id, COUNT(*)
FROM rental
GROUP BY user_id
HAVING COUNT(user_id) > 1;
3. 두개의 테이블에서 조회하기
- INNER JOIN : 여러 테이블의 정보를 한번에 조회
- INNER JOIN 기본문법
-- rental 테이블과 user 테이블의 정보를 한번에 검색
-- (rental 테이블의 user_id 에 해당하는 정보를 user 테이블에서 가져온다)
SELECT *
FROM rental
INNER JOIN user;
4. 조건을 적용해 두개의 테이블을 조회하기
- ON : 조건을 적용해 여러 테이블의 정보를 한번에 조회
- ON 기본문법
-- 2개의 테이블을 연결하는데 rental 테이블의 id 와 user 테이블의 user_id 가 동일한 것이 조건
SELECT *
FROM rental
INNER JOIN user
ON user.id = rental.user_id;
5. LEFT JOIN
- LEFT JOIN : 왼쪽 테이블의 모든 값을 포함해 연결하기 (두 테이블 중 더 중심이 되는 테이블을 FROM 에 적어준다)
- LEFT JOIN 기본문법
-- user 테이블을 모두 출력하되 모든 user 테이블의 user_id 와 rental 테이블의 id가 겹치도록 출력
SELECT *
FROM user
LEFT JOIN rental
ON user.id = rental.user_id;
6. RIGHT JOIN
- RIGHT JOIN : 오른쪽 테이블의 모든 값을 포함해 연결하기
- RIGHT JOIN 기본문법
-- user 테이블을 모두 출력하되 모든 user 테이블의 user_id 와 rental 테이블의 id가 겹치도록 출력
SELECT *
FROM user
RIGHT JOIN rental
ON user.id = rental.user_id;
[5장 서브쿼리]
1. 서브쿼리
- 서브쿼리 : Sub query. 하나의 쿼리 안에 포함된 또 하나의 쿼리. 메인 쿼리가 서브쿼리를 포함하는 종속적 관계
- 서브쿼리의 특징
① 알려지지 않은 기준(ex. 상위 5% = 몇명인지, 누군지 모를 때)을 이용한 검색에 유용
② 메인 쿼리가 실행되기 이전에 한번만 실행
③ 한 문장에서 여러 번 사용 가능
- 서브쿼리의 예
-- employees 테이블에서 tiger 사원의 salary 값을 알지 못해도 tiger 사원보다 더 높은 salary 값의 검색
SELECT *
FROM employees
WHERE salary >
(SELECT salary FROM employees WHERE 이름 = 'tiger');
- 서브쿼리의 사용시 주의사항
① 반드시 괄호와 함께 사용
② 서브쿼리 안에서 ORDER BY 사용 불가
③ 연산자의 오른쪽에서 사용
④ 오로지 SELECT 문만 작성 가능
2. 반환에 따른 분류
- 단일 행 서브쿼리 : 결과가 한 행만 나오는 서브쿼리. 서브쿼리가 1개의 값을 반환하고 이 결과를 메인쿼리로 전달하는 쿼리
- 단일 행 서브쿼리 기본문법
-- 사원번호는 기본적으로 1개만 있으므로 한개의 행만 반환함
SELECT *
FROM employees
WHERE salary >
(SELECT salary FROM employees WHERE emp_no = 10);
- 단일 행 서브쿼리 연산자
기호 |
뜻 |
= |
같다 |
<> |
같지 않다 |
> |
크다 |
>= |
크거나 같다 |
< |
작다 |
<= |
작거나 같다 |
- 다중 행 서브쿼리 : 단일 행 서브쿼리와 다르게 서브쿼리가 결과를 2개 이상 반환하고 이 결과를 메인쿼리로 전달하는 쿼리
- 다중 행 서브쿼리 기본문법
SELECT *
FROM employees
WHERE salary IN (
SELECT MAX(salary) FROM employees GROUP BY emp_no);
- 다중 행 서브쿼리 연산자
기호 |
뜻 |
IN |
하나라도 만족하면 반환 |
ANY |
하나라도 만족하면 반환, 비교연산 가능 |
ALL |
모두 만족하면 반환, 비교 연산 가능 |
3. 위치에 따른 분류
- 스칼라 서브쿼리 : SELECT 절에서 사용하는 서브쿼리. 오직 한 행만 반환 (JOIN 사용과 같은 결과)
- 스칼라 서브쿼리 사용방ㅂ법
SELECT student.name (
SELECT math
FROM middle_test as m
WHERE m.student_id = student.student_id )
AS middle_avg
FROM student;
※ 수업 자료의 출처는 K-Digital Training x 엘리스 인공지능 서비스 개발 기획 1기 (elice.io/)입니다.
'개발 > 엘리스 AI 트랙' 카테고리의 다른 글
엘리스 AI 트랙 04주차 - 파이썬 객체지향 프로그래밍 (1/13) 🔥 (0) | 2021.01.15 |
---|---|
엘리스 AI 트랙 04주차 - 파이썬 프로그래밍 (1/12) (0) | 2021.01.12 |
엘리스 AI 트랙 03주차 - 데이터베이스 기초 개요 (1/7) (0) | 2021.01.08 |
엘리스 AI 트랙 03주차 - SQL로 데이터 다루기 I (1/6) 🔥 (0) | 2021.01.06 |
엘리스 AI 트랙 03주차 - 데이터베이스 기초 개요 (1/5) 🔥 (0) | 2021.01.05 |