일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- sort
- bfs문제
- tflite
- 삼성코테
- 초소형머신러닝
- 자료구조
- tinyml
- 코딩테스트
- 삼성역테
- BFS
- DP
- TensorFlow Lite
- DP문제
- dfs
- 컴퓨팅사고
- 포스코 ai 교육
- 임베디드 딥러닝
- MCU 딥러닝
- 코테 문제
- 영상처리
- 삼성역량테스트
- 그리디
- 다이나믹프로그래밍
- 딥러닝
- 삼성코딩테스트
- 포스코 AI교육
- dfs문제
- 코테
- 포스코 교육
- 알고리즘
- Today
- Total
코딩뚠뚠
SQLite 와 사용방법 본문
SQLite 란
모든 비즈니스 애플리케이션 내부에는 데이터를 저장 및 사용하는 방법이 구현되어 있다.
즉 클라이언트 측, 프론트, 백엔드, 에지 디바이스 모두 내장 데이터베이스가 필요하다.
SQLite는 서버가 아니라 응용프로그램에 넣어 사용하는 비교적 가벼운 데이터베이스로
내장 가능한 오픈소스 데이터베이스이며 C로 작성되어있고, 일반적인 SQL로 쿼리가 가능하다.
(사용은 swift, C/C++, python 등에서 가능)
DB의 구성
테이블 :
엑셀에서의 시트와 같다. 한 테이블은 특정 주제에 관련된 데이터들을 담고 있고 한 DB내에는 여러 테이블이 존재할 수 있다.
레코드(행) :
하나의 항목과 관련된 필드 값의 집합이다. 예를들면 한 사람의 데이터 (이름, 전화번호, 이메일) 가 있다.
필드(열) :
각 항목의 분류이다. 예를들면 사람의 데이터를 '이름' 항목, '전화번호' 항목, '이메일' 항목 으로 분류할 수 있다.
설치 - 실행 - 사용 방법
몇 가지 방법의 설치-실행 방법을 간략히 서술할 예정이다.
명령프롬프트에서
설치1. 아래의 사이트에서 sqlite-tools-win32-x86- 로 시작하는 파일을 다운받는다.https://www.sqlite.org/download.html 2. 압축을 풀어 폴더 내 sqlite3.exe를 복사해 사용하고 싶은 위치에 붙여넣기 한다. (ex : C;/PhcharmProjects/...) 실행1. windows+R -> cmd 로 명령프롬프트 진입2. sqlite3.exe 가 있는 폴더로 진입 3. sqlite3 test.db를 생성하며 진입 -> .help 로 명령어 참조 |
GUI 환경에서
설치1. 아래의 사이트에서 DB Browser for SQLite - Standard ... 를 다운받는다https://sqlitebrowser.org/dl 2. 경로, 바로가기 아이콘 등 시시한것들을 넘기며 설치완료한다 실행1. 바탕화면의 아이콘을 클릭해서 실행한다2. 파일 - 새 데이터베이스 만들기로 .db 파일을 생성한다 3. 테이블을 만들었다면 테이블 수정 등을 통해 GUI 환경에서 데이터를 다룰 수 있다. |
C언어 연계
sqlite3 test.db 명령어로 데이터베이스를 생성한 이후 적용에의 방법이다.
주로 C언어를 쓰는 경우가 많아 C언어의 경우만 설명하지만 Python Swift 등의 언어로도 사용가능하다.
아래 코드의 sqlite3_libversion()은 라이브러리의 버전을 반환한다.
#include <sqlite3.h>
#include <stdio.h>
int main(){
printf("%s\n",sqlite3_libversion());
return 0;
}
아래와 같이 GNU C컴파일러로 컴파일 한 뒤 실행가능하다.
gcc -o main main.c -lsqlite3 -std=c99
SQL 쿼리를 이용해서 간단히 SQLite 라이브러리 버전을 출력하는 코드이다.
설명은 코드의 주석을 참조하자.
#include <sqlite3.h>
#include <stdio.h>
int main(void){
sqlite3* db; //데이터베이스의 핸들이다.
sqlite3_stmt* res; //SQL쿼리를 표현하는 핸들이다.
int rc = sqlite3_open(":memory:", &db); //memory라는 db를 열어 연결한다. 특히 파일이름대신 :memory:는 인메모리 데이터베이스로 동작한다.
if (rc != SQLITE_OK){ // 오류이면 오류 표시 후 종료
fprintf(stderr, "Cannot open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
return 1;
}
//SQL쿼리는 sqlite3_prepare*함수를 통해 바이트코드로 컴파일 해줘야한다.
//v2함수는 다섯개의 인자를 받아 이를 실행한다.
rc = sqlite3_prepare_v2(db, "SELECT SQLITE_VERSION()", -1, &res, 0);
if (rc != SQLITE_OK){ // 위 함수의 결과가 오류이면 이를 처리하는 조건문이다.
fprintf(stderr, "Failed to fetch data: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
return 1;
}
rc = sqlite3_step(res); //sqlite3_prepare로 컴파일된 쿼리를 실행한다.
if (rc == SQLITE_ROW)
{
printf("%s\n", sqlite3_column_text(res, 0));
}
sqlite3_finalize(res); //컴파일된 SQL쿼리 핸들을 정리한다.
sqlite3_close(db); // 데이터베이스를 닫고 끝낸다.
return 0;
}
데이터베이스를 삽입해보자
#include <sqlite3.h>
#include <stdio.h>
int main(void)
{
sqlite3 *db;
char *err_msg = 0;
int rc = sqlite3_open("test.db", &db); // db를 연다.
if (rc != SQLITE_OK) //오류처리구문
{
fprintf(stderr, "Cannot open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
return 1;
}
// 아래의 쿼리들은 Cars 테이블을 만든 후 데이터를 넣는다.
char *sql = "DROP TABLE IF EXISTS Cars;"
"CREATE TABLE Cars(Id INT, Name TEXT, Price INT);"
"INSERT INTO Cars VALUES(1, 'Audi', 52642);"
"INSERT INTO Cars VALUES(2, 'Mercedes', 57127);"
"INSERT INTO Cars VALUES(3, 'Skoda', 9000);"
"INSERT INTO Cars VALUES(4, 'Volvo', 29000);"
"INSERT INTO Cars VALUES(5, 'Bentley', 350000);"
"INSERT INTO Cars VALUES(6, 'Citroen', 21000);"
"INSERT INTO Cars VALUES(7, 'Hummer', 41400);"
"INSERT INTO Cars VALUES(8, 'Volkswagen', 21600);";
// 이 함수는 위에서 봤던 sqlite3_prepare_v2()와 sqlite3_step(), sqlite3_finalize()를 묶은 함수이다.
// 적은 코드로 쿼리를 실행할 수 있게 도와준다.
rc = sqlite3_exec(db, sql, 0, 0, &err_msg);
if (rc != SQLITE_OK )
{
fprintf(stderr, "SQL error: %s\n", err_msg);
sqlite3_free(err_msg);
sqlite3_close(db);
return 1;
}
sqlite3_close(db);
return 0;
}
이와 같은 사용 방법들이 있으며 심화적인 내용은 아래 사이트를 참고하도록 하자
https://zetcode.com/db/sqlitec/?
SQLite 외에도 이전에 코딩테스트를 준비하기 위한 SQL을 포스팅 한 적이 있다.
기본적인 쿼리문 등을 설명해 놓았으니 필요하면 참고하자.
https://dbstndi6316.tistory.com/268
참고 사이트 모음 :
https://somjang.tistory.com/entry/SQLite3-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0
https://mangsby.com/blog/programming/c/c-c-sqlite-데이터베이스-사용하기-1-기본-번역
'공부 > 기타' 카테고리의 다른 글
생체인증/미래 (0) | 2021.11.18 |
---|---|
생체인증/개요 (0) | 2021.11.18 |
C++ 가상함수 (Virtual Function) (0) | 2021.07.23 |
코딩테스트 SQL (MySQL) (2) | 2021.04.13 |
딥러닝, 데이터분석 pandas 기본사용 (0) | 2021.04.06 |