728x90

데이터베이스/sqlite3 15

[sqlite3] csv 파일을 sqlite로 가져오는 방법

안녕하세요. 비스카이비전입니다. 오늘은 csv 파일에 있는 데이터를 sqlite 테이블로 가져오는 방법에 대해 공유해드리고자 합니다. 일단 실습을 위해 간단한 csv 파일을 만들겠습니다. test.csv라는 이름으로 위와 같은 csv 파일을 만들었습니다. 이 csv을 sqlite3로 가져와보겠습니다. csv 파일 내 데이터를 sqlite 테이블로 가져오는 방법 1. 사전 준비 우선 하나의 폴더 안에 sqlite3.exe와 test.csv 파일이 같이 있을 수 있게 세팅해주세요. 만약 sqlite3.exe를 설치하지 않으신 분은 https://bskyvision.com/1174 글을 참고하여 설치하여 주시기 바랍니다. 2. csv 데이터 담을 테이블 만들기 1) sqlite3.exe를 실행합니다. 2) s..

[sqlite3] 윈도우 10에 sqlite3 설치 및 환경변수 path 설정하기

오늘은 윈도우10 컴퓨터에 sqlite3를 설치하고 환경변수 path 설정하는 법에 대해서 설명드리도록 하겠습니다. 우선 sqlite3를 다운로드 받아야겠죠. www.sqlite.org/download.html SQLite Download Page Templates (1) and (2) are used for source-code products. Template (1) is used for generic source-code products and templates (2) is used for source-code products that are generally only useful on unix-like platforms. Template (3) is used for precompiled bi ww..

[sqlite3] JOIN으로 서로 다른 테이블의 컬럼들 붙이기(내부 조인, 외부 조인)

우리는 SELECT 문을 이용할 때 보통 하나의 테이블에서 어떤 데이터를 조회합니다. 그런데 어떤 경우에는 두 개의 테이블을 결합시켜서 읽는 것이 좀 더 정보성(informative)이 있습니다. 왜냐하면 하나의 테이블만으로는 충분한 정보를 얻기 힘들 때가 많기 때문입니다. 다음과 같은 두 개의 테이블이 있다고 가정하겠습니다. 첫번째 테이블에는 선수의 아이디와 이름, 그리고 소속된 팀의 아이디가 담겨 있습니다. 그리고 두번째 테이블에는 팀의 아이디와 이름이 담겨 있습니다. 참고로 첫번째 테이블과 두번째 테이블은 각각 다음과 같은 쿼리로 생성했습니다. sqlite> CREATE TABLE player (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, team_id I..

[sqlite3] 정수를 정수로 나눴을 때 소수점 이하도 출력되게 하려면

sqlite3에서 데이터 타입이 정수인 것을 정수로 나눠주면 결과도 정수로 나옵니다. 예를 들어 10/3이 소숫점 아래를 버리고 3으로 나옵니다. 그런데 소숫점 아래도 모두 제대로 나오게 하려면 어떻게 해야 할까요? 우선 다음과 같은 내용이 담겨 있는 test라는 이름의 테이블이 있다고 가정하겠습니다. 이 테이블의 구조를 살펴보면, money 열과 people 열 모두 INT 형의 데이터를 담을 수 있음을 알 수 있습니다. 참고로 sqlite에서 사용가능한 데이터타입에는 NULL, INT, REAL, TEXT, BLOB이 있는데, 이 중 INT와 REAL이 숫자 데이터를 위한 타입들입니다. INT는 정수, REAL은 실수. 이 상황에서 저는 첫번째 열의 값을 두번째 열의 값으로 나눠주고 싶습니다. 그러면..

[sqlite3] 컬럼에 디폴트 값 주기

이 글은 테이블내 특정 컬럼에 디폴트 값을 주고 싶은 분들을 위한 글입니다. 만약 회원가입시에 닉네임을 입력하지 않았을 때 무명이라는 이름을 주도록 테이블을 만들어보겠습니다. sqlite> CREATE TABLE user (id TEXT NOT NULL, pw TEXT NOT NULL, nickname TEXT DEFAULT "무명"); user라는 이름의 테이블을 만들었습니다. 그 안에는 id, pw, nickname 컬럼이 있는데, nickname 컬럼의 경우에는 무명이라는 디폴트 값을 줬습니다. 그럼, 한번 새로운 행들을 추가해보겠습니다. 한번은 nickname 컬럼에 값을 주지 않을 것이고, 한번은 nickname 컬럼에 값을 줄 것입니다. sqlite> INSERT INTO user (id, p..

[sqlite3] sqlite의 경우 컬럼 수정 불가

MySQL, MariaDB의 경우 테이블의 컬럼을 수정하는 것이 가능한데, sqlite의 경우에는 불가능합니다. 여기서 컬럼 수정이 가능하다는 것은 데이터 타입, 디폴트 값, 제약조건 등의 수정이 가능하다는 뜻입니다. sqlite의 경우 컬럼 수정이 불가하기 때문에 처음에 테이블을 만들때, 또는 컬럼을 추가할 때 잘 설정해줘야 합니다. 예를 들어보겠습니다. student라는 이름의 테이블에 cnt라는 이름의 컬럼이 존재하는 상황입니다. 현재 cnt 컬럼의 디폴트 값은 0입니다. 이 디폴트 값을 1로 바꾸는 것이 가능한지 한번 테스트해보겠습니다. sqlite> ALTER TABLE student MODIFY cnt INT default 1; 보시다시피 안 되고, 에러 메시지를 출력합니다. 하지만, MySQ..

[sqlite3] 행 갯수 카운트하기

오늘은 테이블 내 행이 몇 개가 존재하는지 그 갯수를 읽는 것에 대해 다루도록 하겠습니다. 예시를 위해 저는 먼저 다음과 같은 테이블을 준비했습니다. 지금 보시면, student라는 테이블 안에 행이 총 7개가 존재합니다. 몇 개의 행이 존재하는지 읽어내는 쿼리문은 다음과 같습니다. sqlite> SELECT COUNT(*) FROM student; 7개의 행이 존재한다는 것을 잘 알려주죠? 경우에 따라서는 전체 행의 갯수가 아니라 열별 행 갯수를 알고 싶을 때가 있습니다. 지금 테이블에서 score 열에서 값이 있는 행은 5개 입니다. 이 숫자를 카운트하기 위해서는 다음과 같이 쿼리문을 작성하면 됩니다. sqlite> SELECT COUNT(score) FROM student; score 열에서 값이 ..

[sqlite3] 테이블 내용 rowid 열과 함께 보기

sqlite에서는 테이블을 생성할 때 rowid라는 열(column)을 자동으로 생성해줍니다. rowid는 1부터 시작해서 행(row)이 추가되면 하나씩 그 값이 증가하게 되어 있습니다. 말 그대로 행의 아이디를 나타내줍니다. rowid는 sqlite에서 꽤 유용하게 쓸 수 있기 때문에, 오늘은 테이블의 내용을 rowid와 함께 보는 방법에 대해서 다루도록 하겠습니다. rowid 컬럼 활용하기 다음과 같은 테이블이 있습니다. 지금은 rowid가 보이지 않는 상태입니다. name, score, id 열들이 있는 것을 확인하실 수 있습니다. 이 열들은 제가 직접 만들어준 열들입니다. 이 테이블의 내용을 rowid와 함께 보려면 다음과 같이 명령해줘야합니다. sqlite> SELECT rowid, * FROM..

[sqlite3] 데이터 오름차순 및 내림차순으로 정렬하기

다음과 같은 행들을 담고 있는 테이블이 있다고 가정하고 시작하겠습니다. 테이블명은 student입니다. 저는 name 열의 값을 가나다 순으로 정렬하고 싶습니다. 이때 필요한 쿼리는 다음과 같습니다. sqlite> SELECT * FROM student ORDER BY name; 가나다순으로 잘 정렬된 것을 확인하실 수 있습니다. 그러면 이번에는 역순으로 정렬해보겠습니다. DESC만 추가해주면 됩니다. sqlite> SELECT * FROM student ORDER BY name DESC; 가나다 역순으로 잘 정렬되었습니다. 이번에는 score 열의 값을 기준으로 정렬을 해보겠습니다. 낮은 점수부터 시작해서 높은 점수로 정렬이 됩니다. sqlite> SELECT * FROM student ORDER BY..

[sqlite3] 기존 테이블에 컬럼(열) 추가하기

테이블을 이미 만들었는데, 나중에 새롭게 열(column)을 추가해야할 일이 생겼다면 어떻게 해야할까요? 우선 아래와 같은 데이터를 담고 있는 테이블이 있다고 가정하고 시작하겠습니다. name을 나타내는 열과, score를 나타내는 열이 있는 student라는 이름의 테이블입니다. 저는 이 테이블에 id라는 열을 추가하고 싶습니다. 그러기 전에 우선 .schema student로 이 테이블이 어떤 구조를 갖고 있는지 확인해볼까요? 확인해보니 name 열은 TEXT 타입으로 자료를 입력 받고 꼭 입력 받아야하는 상황이고, score 열은 INT, 즉 정수 자료를 입력 받는 상황입니다. 저는 이 테이블에 id 열을 추가하면서 데이터 타입은 TEXT로 하겠습니다. 이때 필요한 SQL 쿼리는 다음과 같습니다. ..