데이터 및 C언어/SQL 공부

[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 

 


 

 

 

SQL 대분류.

 

       √ 데이터 정의어[ 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]

 

 

 


 

 

 

728x90
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.