✅ 핵심내용

SQL 은 데이터 연산 작업이 가능한 쿼리(query) 를 위한 언어이다. 파이썬 기반의 프레임워크인 Pandas 를 이용하면 SQL과 유사한 기능을 수행 할 수 있다.
Pandas 에서는 공통으로 연관이 되는 칼럼이 있는 경우에 대해 그 칼럼을 키(key)로 지정해 주어 합치기 연산을 할 수 있다.
left : 왼쪽 데이터프레임
right : 오른쪽 데이터프레임
on : 두 데이터프레임의 기준열 이름이 같을 때 기준열
left_on : 기준열 이름이 다를 때, 왼쪽 기준열
right_on : 기준열 이름이 다를 때, 오른쪽 기준
how : 조인 방식 {left, right, inner, outer} 기본값은 inner

pd.merge()는 2개의 데이터를 콤마를 이용해서 넣어줬지만, pd.concat()는 리스트형식으로 연결SQLite는 서버의 필요 없이 DB의 파일에 기초하여 DB 처리를 구현한 임베디드 SQL DB 엔진이다. SQLite는 별도의 설치 없이, 쉽고 편리하게 사용할 수 있다는 점에서 많이 사용되고 있다.
Cursor는 SQL 질의(Query)를 수행하고 결과를 얻는데 사용하는 객체
.cursor() 를 사용하는 것을 권함commit
.commit()를 호출해야 DB가 실제로 업데이트됨select 처럼 데이터를 가져오기만 하는 질의문의 경우에는 commit()가 필요 없음commit() 을 통해 데이터베이스에 데이터 변경이 실제적으로 반영되는 것을 데이터베이스에서는 트랜잭션(transaction) 관리라고 함close
commit() 을 완료했다면 close()를 이용해 DB와의 연결을 끊는 것으로 마무리DDL문으로 테이블을 직접 생성하고 데이터의 생성/삭제/갱신 등을 처리할 때 필요한 DML문의 호출 방법에 대해 바로 위에서 다루었던 코드를 중심으로 설명하였다. 자세한 내용는 아래의 GitHub 를 참조
GitHub Link : SQL
SQL 은 Structured Query Language 의 약자이다. 즉, DB라는 공간에 ‘정형화된’(일정한 형식으로 수집되는) 데이터가 차곡차곡 저장되어 있다. 이러한 DB를 특정 언어로 조회해서 가져오는데, 그때 사용하는 언어가 바로 SQL 이다.
| 형식 | 설명 |
|---|---|
SELECT ~ | 조회할 컬럼명을 선택 |
FROM ~ | 조회할 테이블명을 지정 (위치와 테이블명을 입력) |
WHERE ~ | 질의할 때 필요한 조건을 설정 |
GROUP BY ~ | 특정 컬럼을 기준으로 그룹을 지어 출력 |
ORDER BY ~ | SELECT 다음에 오는 컬럼 중 정렬이 필요한 부분을 정렬 (기본 설정 : 오름차순) |
LIMIT 숫자 | Display하고자 하는 행의 수를 설정 |
| SELECT * FROM 테이블명 | 테이블에 있는 모든 컬럼명을 추출하고 싶을 때 사용. 별표(*)는 ALL을 의미 |
| SELECT 컬럼1, 컬럼2, ... FROM 테이블명 | 추출하고 싶은 컬럼명을 쉼표로 연결하여 나열 |
| SELECT DISTINCT 컬럼1 FROM 테이블명 | 선택한 컬럼의 전체 값이 아닌, 중복을 제거한 값만 불러옴 |
| SELECT DISTINCT 컬럼1,컬럼2,컬럼3 FROM 테이블명 | 컬럼1,2,3 조합 중에서 unique한 값만 불러옴 |
| SELECT COUNT(*), COUNT(컬럼) FROM 테이블명 | COUNT(*) : 테이블 전체의 row의 수를 출력 COUNT(컬럼) : 해당 컬럼의 전체 row수를 출력 |
| SELECT COUNT(DISTINCT 컬럼) FROM 테이블명 | 래당 컬럼의 전체 row수가 아닌, 중복값을 제거한 row수를 출력 |
| SELECT 컬럼1, COUNT(*) FROM 테이블명 GROUP BY 컬럼1; | - 컬럼의 나열과 COUNT 가 같이 쓰이면 꼭 GROUP BY 구문을 사용해야함 - COUNT 앞에 나열된 컬럼의 개수만큼 그룹화 시켜줌 |
| SELECT 컬럼1, 컬럼2, COUNT(DISTINCT 컬럼3) FROM 테이블명 GROUP BY 컬럼1, 컬럼2; | 컬럼1 * 컬럼2의 조합에 대한 컬럼 3의 row수를 출력 |
Oracle, SQL Server, PostgreSQL, MySQL, SQLite 등등 SQL의 종류가 다양한 만큼 데이터 타입도 다양하고 조회 및 조작어도 세밀하게 다르다.
| 데이터 형식 | 종류 | 설명 |
|---|---|---|
| 숫자형 | TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT, FLOAT, DOUBLE,.. | 각 종류마다 사용되는 바이트 수와 최소값, 최대값의 범위가 다름 |
| 문자형 | CHAR, VARCHAR,BLOB,TEXT,STRING,... | 저장되는 문자의 개수에 따라 종류가 나눠짐 |
| 날짜형 | DATE,DATETIME,TIMESTAMP,... | 저장공간과 형태에 따라 종류가 나눠짐 |
SELECT * FROM 테이블명
WHERE ~
위와 같은 기본 적인 형태로 조건을 통해 원하는 형태로 테이블을 가져올 수 있다. WHERE 조건절을 몇 개씩 더 할 수도 있다.
SELECT * FROM 테이블명
WHERE
조건1
AND 조건2
AND 조건3
AND (조건 4 OR 조건5);

SQL에 대한 실습을 아래의 GitHub 에 기록하였다.
GitHub Link : SQL