SQL은 Structured Query Language의 약자이다. 관계형 데이터 베이스를 관리하기 위해 사용하는 프로그래밍 언어로, 문법이 직관적이고 대부분의 DB에서 지원한다. 하지만, DB마다 문법이 다른 경우도 있고 자주 사용하지 않는 구문은 잘 기억이 나지 않는다. 필자도 필요에 따라 테이블을 만드고, 조인을 하는 등의 간단한 작업에만 사용한다. 그래서 평소에 사용하지 않는 작업을 할 때는 곤욕스럽기도 하다.
오늘은 SQLite 기본 문법-CREATE, SELCT, INSERT, DELETE에 대해서 알아보도록 하겠다.
SQLite를 사용하는 이유는 파이썬에서 DB를 이용하고 싶기 때문이다. 파이썬 위주로 주로 사용하게 되는 작업들에 대해서 정리해 보았다. SQLite3가 무엇인지 어떻게 설치하는지에 대해서도 다음에 기회가 된다면 다뤄보도록 하겠다.
1. CREATE TABLE
파이썬을 사용하면서는 잘 사용하게 되지 않는 문법이다. pandas dataframe의 경우 to_sql함수를 통해 바로 테이블을 생성할 수 있기 때문이다. CREATE TABLE tbl_name AS SELECT ~로 기존에 있는 DB에 접근해서 새로 테이블을 만드는 경우가 많은 듯 하다.
아래와 같이 입력하면, 파이썬 데이터프레임을 손쉽게 SQLite DB에 테이블로 저장할 수 있다.
import sqlite3
con = sqlite3.connect("test.db")
df.to_sql("table_name", con, if_exists="replace", index=False)
con.close()
2. SELECT - Order By, Distinct, BETWEEN, IN, LIKE
파이썬에서 SQLite DB에 접근하기 위해서는 SELECT를 이용한다. 별다른 조건 없이 전체 데이터를 다 불러온 다음에 파이썬에서 작업할 수도 있지만 비효율적이고 시간도 오래 걸린다. 그래서 WHERE절이나 다른 문법을 이용하면 필요한 데이터만 선별해서 가져온다든가 정렬된 데이터터를 가져오기에 유용하다.
# ORDER BY, 오름차순 정렬
SELECT * FROM tbl_name ORDER BY column1
# ORDER BY, 내림차순 정렬
SELECT * FROM tbl_name ORDER BY -column1
# 중복제거, distinct
SELECT distinct column1 FROM tbl_name
# 사이의 값, BETWWEN (>=, <=)
SELECT * FROM tbl_name WHERE column1 between 2005 and 2010
# 여러개의 조건으로 데이터를 가져올 때, in
SELECT * FROM tbl_name IN column1 in (2005,2010)
# 특정문구가 포함된 데이터를 가져올 때, Like
SELECT * FROM tbl_name WHERE column1 LIKE '%1110'
3. INSERT INTO
이미 적재된 테이블에 row를 추가하고 싶을 때는 INSERT INTO를 사용해야 한다. 하지만, 파이썬에서는 데이터프레임의 경우에는 to_sql함수에 append를 이용해서 쉽게 추가할 수 있다. 데이터 프레임이 아닌 값으로 추가하는 경우가 생길 때 사용하면 좋다.
python에서 사용할 때는 아래와 같이 DB에 연결하고, commit을 해야 적용이 된다.
con = sqlite3.connect("test.db")
cur = con.cursor()
cur.execute("INSERT INTO tbl_name (column1, column2) VALUES (?, ?)", (var1, var2) )
con.commit()
con.close()
4. DELETE
DB로 적재한 데이터를 일부 지울 때 사용한다. 필자의 경우에는 데이터를 업데이트 할 때 주로 사용한다. 이전에 2월 데이터가 일부 들어가 있는 경우, 2월 데이터를 다 지우고 새로 적재할 때 사용한다. 문법은 아래와 같다.
con = sqlite3.connect("test.db")
cur = con.cursor()
query = cur.execute("DELETE FROM tbl_name WHERE column1 = 2005")
con.commit()
con.close()
SQLite의 Query문법에 대해서 더 궁금하다면 SQLite Tutorial을 참조하는 것도 좋다.
오늘은 이렇게 SQLite 기본 문법인 CREATE, SELECT, INSERT, DELETE에 대해서 알아보았다. 문법은 어렵지 않으나 자주 사용하지 않으면 기억이 나지 않을 때가 있다. 또한, 파이썬에서 사용할 때는 commit()을 해야 SQL의 결과가 반영되는 점을 주의하도록 하자.
'데이터 > 데이터베이스' 카테고리의 다른 글
hive에서 원하는 순서대로 array 만드는 방법은?! (0) | 2022.03.10 |
---|---|
하이브 SQL NULL값 바꾸기 - NVL, COALESCE! (0) | 2022.02.01 |
SQL 칼럼 기준 텍스트 편집 - COLLECT_SET, COLLECT_LIST, CONCAT_WS?! (0) | 2022.02.01 |
하이브(hive) sql - 행(row)을 기준으로 최대값, 최소값 추출하는 방법! (0) | 2022.02.01 |
학습을 위한 가장 쉬운 하둡 설치 방법은? (0) | 2022.01.31 |
맥(mac)에서 하둡(hadoop) 설치하기 (0) | 2022.01.31 |
SQL에서 문자열 다루기 4종 - 합치기,자르기,찾기,바꾸기 (0) | 2022.01.30 |
MySQL 설치 및 사용법 알아보기 (0) | 2022.01.27 |