✅ 데이터베이스와 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)은 파이썬 프로젝트별로 독립된 패키지와 라이브러리 공간을 제공하는 도구입니다. 이를 통해 프로젝트마다 서로 다른 버전의 패키지를 설치하고 관리할 수 있습니다.
왜 '가상'이라는 표현을 사용하는가?
'가상'이라는 표현은 실제 시스템 환경과는 독립된, 격리된 환경을 제공하기 때문에 사용됩니다. 즉, 가상환경 안에서 설치된 패키지나 라이브러리는 시스템 전체에 영향을 미치지 않으며, 프로젝트마다 다른 환경을 손쉽게 설정할 수 있습니다.
가상환경의 주요 기능
- 독립성 유지: 각 프로젝트는 자신의 가상환경 내에서만 패키지를 사용하므로, 프로젝트 간의 패키지 충돌을 방지할 수 있습니다.
- 재현성 보장: 특정 버전의 패키지를 사용하여 개발한 코드를 동일한 가상환경에서 실행함으로써 동일한 결과를 보장할 수 있습니다.
- 환경 관리 용이: 다양한 프로젝트에서 요구하는 패키지 버전을 각각의 가상환경에서 관리할 수 있습니다.
✅파이썬 개념 이해
**파이썬(Python)**은 고수준의 프로그래밍 언어로, 다음과 같은 특징을 가지고 있습니다:
- 인터프리터 언어: 코드를 한 줄씩 읽고 실행합니다.
- 다중 패러다임 지원: 객체 지향, 절차적, 함수형 프로그래밍을 모두 지원합니다.
- 간결하고 명확한 문법: 가독성이 좋고 유지보수가 용이합니다.
- 광범위한 라이브러리: 다양한 분야에서 사용할 수 있는 풍부한 라이브러리를 제공합니다.
✅왜 파이썬을 사용해야 하는가?
- 생산성: 간결한 문법으로 빠른 개발이 가능합니다.
- 다양한 용도: 웹 개발, 데이터 과학, 인공지능, 자동화 등 다양한 분야에서 활용할 수 있습니다.
- 커뮤니티 지원: 강력한 커뮤니티와 풍부한 리소스를 통해 문제 해결이 용이합니다.
- 유연성: 플랫폼에 구애받지 않고 다양한 환경에서 사용할 수 있습니다.
- 확장성: C, C++ 등의 언어와 쉽게 연동하여 성능을 향상시킬 수 있습니다.
✅파이썬 변수의 역할
파이썬에서 변수는 데이터를 저장하는 데 사용되는 이름 있는 메모리 위치입니다. 변수는 프로그램 실행 중에 데이터를 저장하고 조작할 수 있도록 합니다.
주요 역할:
- 데이터 저장: 다양한 유형의 데이터를 저장할 수 있습니다.
- 가독성 향상: 의미 있는 변수 이름을 사용하면 코드의 가독성이 높아집니다.
- 유지보수 용이: 변수 사용으로 인해 코드를 쉽게 수정하고 확장할 수 있습니다.
✅파이썬의 자료형에는 무엇이 있나 ?
파이썬에서는 다양한 자료형이 있으며, 각 자료형은 특정 유형의 데이터를 저장하고 조작하는 데 사용됩니다.
주요 자료형:
- 숫자형 (Numeric)
- 정수 (int): 10, -3
- 실수 (float): 3.14, -0.5
- 복소수 (complex): 1+2j
- 문자열 (String)
- 예시: "Hello, World!", 'Python'
- 리스트 (List)
- 예시: [1, 2, 3], ['apple', 'banana', 'cherry']
- 튜플 (Tuple)
- 예시: (1, 2, 3), ('apple', 'banana', 'cherry')
- 사전 (Dictionary)
- 예시: {'name': 'John', 'age': 30}, {'apple': 1, 'banana': 2}
- 집합 (Set)
- 예시: {1, 2, 3}, {'apple', 'banana', 'cherry'}
✅파이썬 리스트, 튜플, 딕셔너리
리스트 (List):
- 정의: 순서가 있는 변경 가능한 컬렉션.
- 특징: 중복 허용, 인덱스로 접근 가능, 요소 추가/삭제 가능.
- 사용 예: [1, 2, 3, 'a', 'b']
튜플 (Tuple):
- 정의: 순서가 있는 변경 불가능한 컬렉션.
- 특징: 중복 허용, 인덱스로 접근 가능, 요소 추가/삭제 불가.
- 사용 예: (1, 2, 3, 'a', 'b')
딕셔너리 (Dictionary):
- 정의: 키-값 쌍으로 이루어진 변경 가능한 컬렉션.
- 특징: 키는 중복 불가, 값은 중복 허용, 키를 통한 접근 가능.
- 사용 예: {'name': 'Alice', 'age': 25}
차이점 요약
- 변경 가능성: 리스트와 딕셔너리는 변경 가능하지만, 튜플은 변경 불가능합니다.
- 순서: 리스트와 튜플은 순서가 있으나, 딕셔너리는 순서가 없습니다.
- 사용 방법: 리스트와 튜플은 인덱스를 사용하여 요소에 접근하며, 딕셔너리는 키를 사용하여 값에 접근합니다.
✅딕셔너리를 꼭 사용해야 하는 경우와 그 이유는?
- 키-값 쌍 데이터 저장:
- 이유: 딕셔너리는 데이터를 키-값 쌍으로 저장하기에 적합합니다. 예를 들어, 학생의 이름과 성적을 저장할 때 유용합니다.
- 빠른 검색이 필요한 경우:
- 이유: 딕셔너리는 해시 테이블을 사용하여 평균적으로 O(1)의 시간 복잡도로 키를 검색할 수 있습니다. 예를 들어, 제품 ID로 가격을 빠르게 찾을 때 유용합니다.
- 구조화된 데이터 관리:
- 이유: 딕셔너리는 복잡한 구조의 데이터를 관리하기에 유용합니다. 예를 들어, 여러 속성을 가진 객체를 저장할 때 사용합니다.
- 데이터 변형 및 매핑:
- 이유: 특정 키에 해당하는 값을 변형하거나 매핑하는 작업에 적합합니다. 예를 들어, 상태 코드에 따라 상태 메시지를 매핑할 때 사용합니다.
딕셔너리는 데이터의 구조적 저장과 빠른 검색을 가능하게 하여 효율적이고 직관적인 데이터 관리를 돕습니다.
'Data Analytics (데이터 분석)' 카테고리의 다른 글
[데이터 리터러시] 지표 설정 (0) | 2024.07.11 |
---|---|
[세미나] [데이터 분석가, 어떤 회사로 가야할까?] 데이터 분석가로서의 경로: 인하우스와 컨설팅의 매력과 차이점 (0) | 2024.07.10 |
[데이터 리터러시] 데이터의 유형 (0) | 2024.07.10 |
[데이터 분석] 비즈니스 관점에서 데이터 분석가가 갖춰야할 역량과 프로세스 (0) | 2024.07.09 |
데이터 분석의 시작은 Business (0) | 2024.07.09 |