[SQL] SQL 공부 : SQL문 정리하기 - 기본 난이도.
- -
[SQL] SQL 공부 : SQL문 정리하기 - 기본 난이도(1)
∇ 공부 겸 정리 목표
- SELECT , FROM, LIMIT
- WHERE
- ORDER BY
- 소수점 처리 [ ROUND / TRUNCATE / CAST, CONVERT ]
- 중복 제거[DISTINCT / GROUP BY/ 서브쿼리]
- SQL 숫자 연산
- 집계 함수 [ SUM, COUNT, AVG 등 ]
- GROUP BY [ 데이터 그룹화 ]
- HAVING
- 조건문[ CASE, IF() ]
- UNION, UNION ALL
- INNER JOIN
- LEFT JOIN, RIGHT JOIN
-셀프 조인
++ AARRR/ RFM
√ 데이터 정의어[ DDL : Data Definition Language ] : 테이블 생성, 변경, 삭제
√ 데이터 조작어[ Data Manipulation Language ] : 데이터 삽입, 조회, 수정, 삭제
√ 데이터 제어어 [ Data Control Language ] : 데이터 접근 권한 부여, 제거
√ 트랜젝션 제어어 [ Transaction Control Language ] : 데이터 조작어(DML) 명령어 실행, 취소, 임시저장
++∇ DBA, Data Analyst 역할.
- DBA(DataBase Administrator) 역할 : 데이터베이스 관리자이며, 기업 내에서 데이터베이스를 관리합니다.
- 데이터베이스 관리
- 테이블 생성
- 데이터 접근 권한 관리
- 데이터 정의어 & 데이터 제어어 를 많이 사용합니다.
- Data Analyst 역할 : 데이터 분석을 통해, 새로운 인사이트를 도출합니다.
- 데이터베이스 접근
- 데이터 분석
- 데이터 접근 권한 요청.
- 데이터 조작어 & 트랜젝션 제어어를 주로 사용합니다.
원활한 데이터 활용을 위해 DBA와 자주 업무협업을 해야하는게 데이터분석가 롤입니다.
그렇기에, SQL에 대해서 깊게 알고 있어야 합니다.
∇ Select 문의 기본 문법 구조 .[데이터 검색 목적]
SELECT [ALL 혹은 DISTINCT 혹은 ROUND] 컬럼명(들)
[FROM 테이블이름(들)]
[WHERE 검색조건(들)]
[GROUP BY 속성이름]
[HAVING 검색조건(들)]
[ORDER BY 속성이름 [ASC┃DESC]]
1. SELECT, FROM
- SELECT에는 검색하고 싶은 컬럼명을 작성합니다.
- 모든 열을 조회하고 싶으면 ' * ' 을 사용하면 됩니다.
- FROM에는 검색하고 싶은 속성이 있는 테이블의 명을 적어주면 됩니다.
검색 결과는 테이블로 반환됩니다.
SELECT Phone_number
FROM USERTALE
USERTALE에서 Phone_number라는 컬럼을 불러옵니다.
-- SELECT '컬럼명' FROM '테이블명'
SELECT member_id, name FROM member;
-- SELECT 와 FROM 사이에 *를 적으면 테이블의 모든 컬럼을 조회한다.
SELECT * FROM member;
-- 두 SQL은 동일한 기능을 한다.
SELECT * FROM market_db.member;
SELECT * FROM member;
√ LIMIT - 출력 개수 제한!
- 큰 데이터에서 일부만 조회하거나 페이징(Paging) 기능을 구현할 때 유용.
-페이징: 전체 데이터를 조회하면 부하를 줄 수 있기 때문에, 페이지 렌더링에 필요한 데이터만,!
[ 추후에 더 공부하는걸로 : ROWNUM, 인라인뷰, 별칭(ALIAS),바인딩 변수 등 ]
SELECT * FROM member
LIMIT 3; -- 상위 3건만 조회
SELECT * FROM member
LIMIT 3, 2; -- 3번째 데이터부터 2건만 조회
LIMIT 2 OFFSET 3; -- 위와 동일
- LIMIT 시작위치, 제한할 개수(여기까지 제한하는 것)
- LIMIT 뒤에 하나의 숫자만 입력시 처음부터, 입력한 숫자까지의 데이터만 가져옵니다.
+ LIMIT과 OFFSET 조합으로도 출력 개수를 제한할 수 있음.
[ OFFSET: 어디서부터 가져올지 ]
2. WHERE - 특정 조건만 조회하기.
-- member 테이블에서 mem_number 컬럼 값이 5이상인 데이터 조회
SELECT * FROM member
WHERE mem_number >= 5;
#관계 연산자를 사용해서 범위를 정해준 케이스.
- WHERE절을 사용해 특정 조건에 해당하는 데이터만 조회 가능합니다.
- 관계(비교) 연산자 [ = , <> , < , > , <=, >= ] 사용 가능
- 같을 때 "="
- 같지 않을 때 "!=", "<>"
- 클 때 "<"
- 크거나 같을 때 "<="
- 논리 연산자[ AND, OR ,NOT ] 사용 가능.
+ 여러 검색 조건이 필요한 경우 논리 연산자를 사용해줍니다.
- AND가 OR보다 우선 순위를 가집니다.
- DB 프로그램 중에 My SQL에서는 &&라든지 ||도 사용 가능합니다.
SELECT col1, col2, ...
FROM table
WHERE condition1 and condition2;
SELECT col1, col2, ....
FROM table
WHERE condition1 or condition2;
SELECT col1, col2, ...
FROM table
WHERE NOT condition;
3. GROUP BY - 데이터를 하나 이상의 열(컬럼)을 기준으로 그룹화.
++ 주로 집계 함수[ SUM, COUNT, AVG ] 등과 함께 사용됩니다.
SELECT col1
FROM table
WHERE condition
GROUP BY col_name;
SELECT genre, AVG(price) AS "평균"
FROM library
GROUP BY genre;
-장르랑 평균가격을 librart테이블에서 불러오는데 genre를 기준을 묶는 것.
- GROUP BY로 지정한 컬럼이 같은 데이터끼리 그룹화시킴.
- 여러 개의 컬럼 지정 가능.
# 집계 함수란 [ Aggregate Funtion ]
- SUM() : 컬럼의 합계를 반환 - 합계 구하기.
+ 만약 컬럼안에 NULL 값이 있다면?
: NULL 값인 것들은 무시하고, 나머지 값들로만 합계를 구합니다.
- AVG() : 컬럼의 평균을 반환 - 평균 구하기
+ 컬럼안에 NULL 값이 있다면
: SUM과 마찬가지로 NULL 값들은 무시하고 평균을 구합니다.
- MIN() : 컬럼의 최소값을 반환
- MAX() : 컬럼의 최대값을 반환
- COUNT() : 행의 개수를 셈 - 개수를 새는 함수.
+ 마찬가지로 NULL 값들은 무시를 합니다.
- NULL을 제외한 나머지 정상적인 값이 존재하는 데이터에 대한 개수 카운팅!
- COUNT(DISTINCT) : 행의 개수를 셈[중복된 값은 제거]
++ 집계 함수 내에서 사칙 연산도 가능!
-- 집계 함수 안에서 연산도 가능
SELECT mem_id, SUM(amount*price) AS "총 금액"
FROM buy
GROUP BY mem_id
ORDER BY mem_id;
3. ORDER BY - 조회된 데이터를 기준에 따라서 정렬.
- 조회된 데이터(들)을 특정 열을 기준으로 정렬.
- 기본적으로 오름차순(ASC)으로 정렬되며, 내림차순(DESC)으로 정렬하고 싶으면 지정해줘야 합니다.
ORDER BY column1 ASC, column2 DESC, ...;
- 순서는 WHERE 절, GROUP BY 절 다음.
-- height 컬럼 값이 164 이상인 데이터를 조회하여
-- height 값 기준 내림차순 정렬하고 동일한 값이라면 debut_date 값 기준 오름차순 정렬
SELECT * FROM member
WHERE height >= 164
ORDER BY height DESC, debut_date;
+ 콤마(,)로 여러 조건을 한번에 지정 가능합니다.
4. 중복 데이터 제거하기 [ DISTINCT, 서브 쿼리 활용 ]
4-1. DISTINCT.
: 특정 열 또는 열 조합에서 중복된 값을 제거.
SELECT DISTINCT column1, column2, ...
FROM table_name;
EX)
Employees 테이블에서, department 컬럼을 중복없이 뽑기.
+ DISTINCT를 열 이름 앞에 붙이면 중복된 값은 1개만 출력!.
4.2 서브쿼리. [ 좀 더 공부가 필요할 듯 ]
: 서브 쿼리는 하나의 쿼리문 내에 또 다른 쿼리문을 적용해서 데이터를 조정하는 것을 의미!
내부 쿼리(자식 쿼리)의 결과를 기반으로 데이터를 필터링, 검색 또는 조작하는데 자주 사용!
SELECT, FROM, WHERE 및 HAVING 절과 같은 다양한 쿼리 내부에서 사용 가능합니다.
[ 참고 : https://easyitwanner.tistory.com/274]
'데이터 및 C언어 > SQL 공부' 카테고리의 다른 글
[SQL] SQL 공부 : SQL문 정리하기 - 기본 난이도(3) (0) | 2024.06.24 |
---|---|
[SQL] SQL 공부 : SQL문 정리하기 - 기본 난이도(2) (0) | 2024.06.24 |
[SQL] 데이터리안 : SQL 코딩 테스트 노하우 (0) | 2024.06.21 |
[SQL] 데이터 분석을 위한 SQL 기초 공부(6)_feat:데이터리안 (0) | 2024.06.18 |
[SQL] 데이터 분석을 위한 SQL 기초 공부(5)_feat:데이터리안 (0) | 2024.06.17 |
소중한 공감 감사합니다