본문 바로가기
Data Analytics (데이터 분석)

SQL, Python 체크리스트 (SQL, Python 에 대해서 얼마나 알고 있나요?)

by 용스토리랜드 2024. 7. 11.

 데이터베이스와 SQL 이란 ? 

 

 데이터베이스 (Database)

체계적으로 정리된 데이터의 집합. 주로 대량의 데이터를 저장하고, 이를 효율적으로 관리, 검색, 갱신할 수 있게 도와준다. 데이터베이스는 여러 가지 형태가 있지만, 가장 일반적으로 사용되는 형태는 관계형 데이터베이스(RDBMS)

 

데이터베이스의 주요 개념

  • 테이블 (Table): 데이터가 행(row)과 열(column)로 구성된 형식으로 저장되는 구조.
  • 레코드 (Record): 테이블 내의 각 행, 하나의 데이터 항목.
  • 필드 (Field): 테이블 내의 각 열, 데이터의 속성을 나타냄.
  • 키 (Key): 데이터베이스 내에서 각 레코드를 고유하게 식별하는 필드. 주요 키는 기본 키(Primary Key)와 외래 키(Foreign Key)가 있음.

SQL (Structured Query Language)

SQL은 관계형 데이터베이스 관리 시스템에서 데이터를 관리하고 조작하기 위한 표준 언어입니다. SQL은 데이터베이스와 상호작용하는 데 필요한 다양한 기능을 제공

 

주요 기능:

  • 데이터 정의 (DDL): 데이터베이스 구조를 정의하는 명령어 (CREATE, ALTER, DROP 등)
  • 데이터 조작 (DML): 데이터베이스 내 데이터를 조작하는 명령어 (SELECT, INSERT, UPDATE, DELETE 등)
  • 데이터 제어 (DCL): 데이터베이스 접근 권한을 제어하는 명령어 (GRANT, REVOKE 등)
  • 데이터 트랜잭션 (TCL): 트랜잭션을 관리하는 명령어 (COMMIT, ROLLBACK 등)

 

쿼리의 실행 순서 ? (FROM > WHERE > GROUP BY > HAVING > SELECT > ORDER BY > LIMIT)

 

  • FROM: 데이터 소스(테이블 또는 뷰)를 지정합니다.
  • WHERE: 조건을 적용하여 데이터를 필터링합니다.
  • GROUP BY: 데이터를 그룹화합니다.
  • HAVING: 그룹화된 데이터에 조건을 적용합니다.
  • SELECT: 선택된 열을 반환합니다.
  • ORDER BY: 결과를 정렬합니다.
  • LIMIT: 반환할 행의 수를 제한합니다.

서브쿼리의 유용성

서브쿼리(Subquery)란, SQL 문장 안에 포함된 또 다른 SQL 문장을 의미합니다. 서브쿼리는 메인 쿼리의 일부로서, 메인 쿼리에서 참조할 수 있는 데이터를 제공하거나, 특정 조건을 만족하는 데이터를 필터링하는 데 사용됩니다.

 

데이터 필터링:

  • 특정 조건에 맞는 데이터를 찾기 위해 서브쿼리를 사용할 수 있습니다.
  • 예시: 특정 부서의 직원 중 가장 높은 급여를 받는 직원 찾기.
SELECT name, salary
FROM employees
WHERE salary = (SELECT MAX(salary) FROM employees WHERE department_id = 10);

 

 

집계 함수와 함께 사용:

  • 집계 함수를 사용할 때, 서브쿼리를 활용하여 더 세부적인 집계 결과를 얻을 수 있습니다.
  • 예시: 부서별 평균 급여보다 높은 급여를 받는 직원 찾기.
SELECT name, salary
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees WHERE department_id = employees.department_id);

 

복잡한 조건 처리:

  • 복잡한 조건을 처리하기 위해 서브쿼리를 사용하여 메인 쿼리를 단순화할 수 있습니다.
  • 예시: 특정 조건을 만족하는 고객 목록을 조회.
SELECT customer_id, name
FROM customers
WHERE customer_id IN (SELECT customer_id FROM orders WHERE order_date > '2023-01-01');

 

JOIN을 대체:

  • JOIN을 사용할 수 없는 경우 서브쿼리를 사용하여 데이터를 결합할 수 있습니다.
  • 예시: 특정 부서에 소속된 직원 수를 조회.
SELECT department_id, (SELECT COUNT(*) FROM employees WHERE employees.department_id = departments.department_id) AS num_employees
FROM departments;

 

 

 서브쿼리의 종류

스칼라 서브쿼리: 단일 값(스칼라)을 반환하는 서브쿼리. 주로 WHERE 절이나 SELECT 절에서 사용됩니다.

SELECT name, (SELECT MAX(salary) FROM employees) AS highest_salary
FROM employees;

 

인라인 뷰: FROM 절에서 사용되어 테이블처럼 작동하는 서브쿼리.

SELECT name, salary
FROM (SELECT name, salary FROM employees WHERE department_id = 10) AS dept_employees
WHERE salary > 5000;

 

상관 서브쿼리: 서브쿼리가 메인 쿼리의 데이터를 참조하여 실행됩니다.

SELECT name, salary
FROM employees e1
WHERE salary > (SELECT AVG(salary) FROM employees e2 WHERE e1.department_id = e2.department_id);

 


가상환경이란 무엇인가?

가상환경(Virtual Environment)은 파이썬 프로젝트별로 독립된 패키지와 라이브러리 공간을 제공하는 도구입니다. 이를 통해 프로젝트마다 서로 다른 버전의 패키지를 설치하고 관리할 수 있습니다.

왜 '가상'이라는 표현을 사용하는가?

'가상'이라는 표현은 실제 시스템 환경과는 독립된, 격리된 환경을 제공하기 때문에 사용됩니다. 즉, 가상환경 안에서 설치된 패키지나 라이브러리는 시스템 전체에 영향을 미치지 않으며, 프로젝트마다 다른 환경을 손쉽게 설정할 수 있습니다.

가상환경의 주요 기능

  1. 독립성 유지: 각 프로젝트는 자신의 가상환경 내에서만 패키지를 사용하므로, 프로젝트 간의 패키지 충돌을 방지할 수 있습니다.
  2. 재현성 보장: 특정 버전의 패키지를 사용하여 개발한 코드를 동일한 가상환경에서 실행함으로써 동일한 결과를 보장할 수 있습니다.
  3. 환경 관리 용이: 다양한 프로젝트에서 요구하는 패키지 버전을 각각의 가상환경에서 관리할 수 있습니다.

파이썬 개념 이해

**파이썬(Python)**은 고수준의 프로그래밍 언어로, 다음과 같은 특징을 가지고 있습니다:

  • 인터프리터 언어: 코드를 한 줄씩 읽고 실행합니다.
  • 다중 패러다임 지원: 객체 지향, 절차적, 함수형 프로그래밍을 모두 지원합니다.
  • 간결하고 명확한 문법: 가독성이 좋고 유지보수가 용이합니다.
  • 광범위한 라이브러리: 다양한 분야에서 사용할 수 있는 풍부한 라이브러리를 제공합니다.

왜 파이썬을 사용해야 하는가?

  1. 생산성: 간결한 문법으로 빠른 개발이 가능합니다.
  2. 다양한 용도: 웹 개발, 데이터 과학, 인공지능, 자동화 등 다양한 분야에서 활용할 수 있습니다.
  3. 커뮤니티 지원: 강력한 커뮤니티와 풍부한 리소스를 통해 문제 해결이 용이합니다.
  4. 유연성: 플랫폼에 구애받지 않고 다양한 환경에서 사용할 수 있습니다.
  5. 확장성: C, C++ 등의 언어와 쉽게 연동하여 성능을 향상시킬 수 있습니다.

파이썬 변수의 역할

파이썬에서 변수는 데이터를 저장하는 데 사용되는 이름 있는 메모리 위치입니다. 변수는 프로그램 실행 중에 데이터를 저장하고 조작할 수 있도록 합니다.

주요 역할:

  • 데이터 저장: 다양한 유형의 데이터를 저장할 수 있습니다.
  • 가독성 향상: 의미 있는 변수 이름을 사용하면 코드의 가독성이 높아집니다.
  • 유지보수 용이: 변수 사용으로 인해 코드를 쉽게 수정하고 확장할 수 있습니다.

✅파이썬의 자료형에는 무엇이 있나 ?

파이썬에서는 다양한 자료형이 있으며, 각 자료형은 특정 유형의 데이터를 저장하고 조작하는 데 사용됩니다.

주요 자료형:

  1. 숫자형 (Numeric)
    • 정수 (int): 10, -3
    • 실수 (float): 3.14, -0.5
    • 복소수 (complex): 1+2j
  2. 문자열 (String)
    • 예시: "Hello, World!", 'Python'
  3. 리스트 (List)
    • 예시: [1, 2, 3], ['apple', 'banana', 'cherry']
  4. 튜플 (Tuple)
    • 예시: (1, 2, 3), ('apple', 'banana', 'cherry')
  5. 사전 (Dictionary)
    • 예시: {'name': 'John', 'age': 30}, {'apple': 1, 'banana': 2}
  6. 집합 (Set)
    • 예시: {1, 2, 3}, {'apple', 'banana', 'cherry'}

 

파이썬 리스트, 튜플, 딕셔너리

리스트 (List):

  • 정의: 순서가 있는 변경 가능한 컬렉션.
  • 특징: 중복 허용, 인덱스로 접근 가능, 요소 추가/삭제 가능.
  • 사용 예: [1, 2, 3, 'a', 'b']

튜플 (Tuple):

  • 정의: 순서가 있는 변경 불가능한 컬렉션.
  • 특징: 중복 허용, 인덱스로 접근 가능, 요소 추가/삭제 불가.
  • 사용 예: (1, 2, 3, 'a', 'b')

딕셔너리 (Dictionary):

  • 정의: 키-값 쌍으로 이루어진 변경 가능한 컬렉션.
  • 특징: 키는 중복 불가, 값은 중복 허용, 키를 통한 접근 가능.
  • 사용 예: {'name': 'Alice', 'age': 25}

차이점 요약

  • 변경 가능성: 리스트와 딕셔너리는 변경 가능하지만, 튜플은 변경 불가능합니다.
  • 순서: 리스트와 튜플은 순서가 있으나, 딕셔너리는 순서가 없습니다.
  • 사용 방법: 리스트와 튜플은 인덱스를 사용하여 요소에 접근하며, 딕셔너리는 키를 사용하여 값에 접근합니다.

딕셔너리를 꼭 사용해야 하는 경우와 그 이유는?

 

  1. 키-값 쌍 데이터 저장:
    • 이유: 딕셔너리는 데이터를 키-값 쌍으로 저장하기에 적합합니다. 예를 들어, 학생의 이름과 성적을 저장할 때 유용합니다.
  2. 빠른 검색이 필요한 경우:
    • 이유: 딕셔너리는 해시 테이블을 사용하여 평균적으로 O(1)의 시간 복잡도로 키를 검색할 수 있습니다. 예를 들어, 제품 ID로 가격을 빠르게 찾을 때 유용합니다.
     
  3. 구조화된 데이터 관리:
    • 이유: 딕셔너리는 복잡한 구조의 데이터를 관리하기에 유용합니다. 예를 들어, 여러 속성을 가진 객체를 저장할 때 사용합니다.
     
  4. 데이터 변형 및 매핑:
    • 이유: 특정 키에 해당하는 값을 변형하거나 매핑하는 작업에 적합합니다. 예를 들어, 상태 코드에 따라 상태 메시지를 매핑할 때 사용합니다.
    딕셔너리는 데이터의 구조적 저장과 빠른 검색을 가능하게 하여 효율적이고 직관적인 데이터 관리를 돕습니다.
반응형