04 [Ubuntu] SQLite CRUD 1
순서
- SQLite3 Tool 실행, 종료, 명령 프롬프트(입력, 도움말)
- SQLite3 DB File 생성, 삭제
- SQLite3 DB Table 생성, 삭제
- SQLite3 DB Table Values 생성, 조회, 갱신, 삭제
SQLite3 Tool
1. SQLite3 Tool
SQLite3 는 커맨드 라인 도구를 제공합니다.
DBMS 가 아닙니다.
기본적으로 리눅스의 Shell, 윈도우의 Command Prompt(명령 프롬프트)와 같은 CLI(Command Line Interface) 에서 작업하는 도구입니다.
콘솔
텍스트 기반의 입력 및 출력 환경을 가진 하드웨어
터미널
콘솔을 서버로 접속할 수 있도록 구현한 소프트웨어
터미널(CLI) ≒ 웹 브라우저(GUI)
쉘
실제 사용자로부터 명령을 받아 해석하고 커널 명령을 처리하는 프로그램
쉘 ≒ 프로그램 로직
2. SQLite3 Tool 실행과 종료
2.1 SQLite3 Tool 실행
터미널에서 sqlite3 를 명령어를 입력하여 sqlite 쉘을 실행시킵니다.
아래와 같이 화면이 뜬다면, 성공적으로 QLite3 Tool 이 실행된 상태입니다.
2.2 SQLite3 Tool 종료하기
.quit .exit 를 입력하면 SQLite3 를 종료할 수 있습니다.
Note: 만약 .(콤마) 없이 quit를 입력했다면, ; (세미콜론)을 입력하거나, ctrl+ d 를 입력하여 빠져나갑니다.
3. SQLite3 명령 프롬프트
SQLite 명령어 등을 실행하거나,
임의의 SQL 문을 실행할 수 있다.
3.1 SQLite3 Tool 모든 명령어 보기
SQLite3 에서 사용 가능한 모든 명령어를 확인하려면 .help 를 입력합니다.
Note: 모든 SQLite3 tool 명령어는 대, 소문자를 구분합니다.
sqlite> .help
.archive ... Manage SQL archives
.auth ON|OFF Show authorizer callbacks
.backup ?DB? FILE Backup DB (default "main") to FILE
.bail on|off Stop after hitting an error. Default OFF
.cd DIRECTORY Change the working directory to DIRECTORY
.changes on|off Show number of rows changed by SQL
.check GLOB Fail if output since .testcase does not match
.clone NEWDB Clone data into NEWDB from the existing database
.connection [close] [#] Open or close an auxiliary database connection
.databases List names and files of attached databases
.dbconfig ?op? ?val? List or change sqlite3_db_config() options
.dbinfo ?DB? Show status information about the database
.dump ?OBJECTS? Render database content as SQL
.echo on|off Turn command echo on or off
.eqp on|off|full|... Enable or disable automatic EXPLAIN QUERY PLAN
.excel Display the output of next command in spreadsheet
.exit ?CODE? Exit this program with return-code CODE
.expert EXPERIMENTAL. Suggest indexes for queries
.explain ?on|off|auto? Change the EXPLAIN formatting mode. Default: auto
.filectrl CMD ... Run various sqlite3_file_control() operations
.fullschema ?--톱니 모양? sqlite_stat 테이블의 스키마 및 내용 표시
.headers on|off Turn display of headers on or off
.help ?-all? ?PATTERN? Show help text for PATTERN
.import FILE TABLE Import data from FILE into TABLE
.imposter INDEX TABLE Create imposter table TABLE on index INDEX
.indexes ?TABLE? Show names of indexes
.limit ?LIMIT? ?VAL? Display or change the value of an SQLITE_LIMIT
.lint OPTIONS Report potential schema issues.
.load FILE ?ENTRY? Load an extension library
.log FILE|off Turn logging on or off. FILE can be stderr/stdout
.mode MODE ?TABLE? Set output mode
.nonce STRING Disable safe mode for one command if the nonce matches
.nullvalue STRING Use STRING in place of NULL values
.once ?OPTIONS? ?FILE? Output for the next SQL command only to FILE
.open ?OPTIONS? ?FILE? Close existing database and reopen FILE
.output ?FILE? Send output to FILE or stdout if FILE is omitted
.parameter CMD ... Manage SQL parameter bindings
.print STRING... Print literal STRING
.progress N Invoke progress handler after every N opcodes
.prompt MAIN CONTINUE Replace the standard prompts
.quit Stop interpreting input stream, exit if primary.
.read FILE Read input from FILE
.recover Recover as much data as possible from corrupt db.
.restore ?DB? FILE Restore content of DB (default "main") from FILE
.save FILE Write in-memory database into FILE
.scanstats on|off Turn sqlite3_stmt_scanstatus() metrics on or off
.schema ?PATTERN? Show the CREATE statements matching PATTERN
.selftest ?OPTIONS? Run tests defined in the SELFTEST table
.separator COL ?ROW? Change the column and row separators
.session ?NAME? CMD ... Create or control sessions
.sha3sum ... Compute a SHA3 hash of database content
.shell CMD ARGS... Run CMD ARGS... in a system shell
.show Show the current values for various settings
.stats ?ARG? Show stats or turn stats on or off
.system CMD ARGS... Run CMD ARGS... in a system shell
.tables ?TABLE? List names of tables matching LIKE pattern TABLE
.testcase NAME Begin redirecting output to 'testcase-out.txt'
.testctrl CMD ... Run various sqlite3_test_control() operations
.timeout MS Try opening locked tables for MS milliseconds
.timer on|off Turn SQL timer on or off
.trace ?OPTIONS? Output each SQL statement as it is run
.vfsinfo ?AUX? Information about the top-level VFS
.vfslist List all available VFSes
.vfsname ?AUX? Print the name of the VFS stack
.width NUM1 NUM2 ... Set minimum column widths for columnar output
3.2 분할 입력하기
SQL 문은 마지막으로 [;]가 나타날 때까지가 하나의 문장으로 판단된다.
[;]가 입력되지 않은 시점에서 [Enter] 키를 눌렀을 경우 아직 입력 도중이라고 판단되어 계속 입력 할 수 있다.
select id as user_id, name as user_name from user where id = 1 and name = 'devkuma' order by name desc;
[;]가 포함 된 문장을 입력하고 [Enter] 키를 눌렀을 때 문장의 입력이 완료되었다고 판단되어 SQL 문이 실행된다.
sqlite> select id as user_id, name as user_name
...> from user
...> where id = 1 and name = 'devkuma'
...> order by name desc
...> ;
4. SQLite 키워드
ABORT | ACTION | ADD | AFTER | ALL |
ALTER | ANALYZE | AND | AS | ASC |
ATTACH | AUTOINCREMENT | BEFORE | BEGIN | BETWEEN |
BY | CASCADE | CASE | CAST | CHECK |
COLLATE | COLUMN | COMMIT | CONFLICT | CONSTRAINT |
CREATE | CROSS | CURRENT | CURRENT_DATE | CURRENT_TIME |
CURRENT_TIMESTAMP | DATABASE | DEFAULT | DEFERRABLE | DEFERRED |
DELETE | DESC | DETACH | DISTINCT | DO |
DROP | EACH | ELSE | END | ESCAPE |
EXCEPT | EXCLUSIVE | EXISTS | EXPLAIN | FAIL |
FILTER | FOLLOWING | FOR | FOREIGN | FROM |
FULL | GLOB | GROUP | HAVING | IF |
IGNORE | IMMEDIATE | IN | INDEX | INDEXED |
INITIALLY | INNER | INSERT | INSTEAD | INTERSECT |
INTO | IS | ISNULL | JOIN | KEY |
LEFT | LIKE | LIMIT | MATCH | NATURAL |
NO | NOT | NOTHING | NOTNULL | NULL |
OF | OFFSET | ON | OR | ORDER |
OUTER | OVER | PARTITION | PLAN | PRAGMA |
PRECEDING | PRIMARY | QUERY | RAISE | RANGE RECURSIVE |
REFERENCES | REGEXP | REINDEX | RELEASE | RENAME |
REPLACE | RESTRICT | RIGHT | ROLLBACK | ROW |
ROWS | SAVEPOINT | SELECT | SET | TABLE |
TEMP | TEMPORARY | THEN | TO | TRANSACTION |
TRIGGER | UNBOUNDED | UNION | UNIQUE | UPDATE |
USING | VACUUM | VALUES | VIEW | VIRTUAL |
WHEN | WHERE | WINDOW | WITH | WITHOUT |
5. 주석
-- 주석
/* 주석 */
select * from user; -- 목록
select * from /* 주석 */ user;