test.db 로 시작한다.
$ sqlite ./test.db
그러면 이런 프롬프트가 뜬다.
sqlite>
이상태에선 test.db 가 안생긴다. 뭔가 작업을 하면 생긴다.
sqlite> create table test (id integer primary key, value text);
test 라는 테이블을 만들었다.
두개의 column이 있다.
id 는 기본키
value 라는 텍스트필드
데이터 입력
sqlite> insert into test (value) values('hexa');
sqlite> insert into test (value) values('mini');
sqlite> insert into test (value) values('dot');
조회
예쁘게 보려면 이렇게
sqlite> .mode column
sqlite> .headers on
sqlite> select * from test;
autoincrement 인 id 에 마지막값을 알아보려면 이렇게
sqlite> select last_insert_rowid();
test_idx 라는 인덱스 추가
sqlite> create index test_idx on test (value);
schema 라는 뷰 추가
sqlite> create view schema as select * from sqlite_master;
나가는건
sqlite> .exit
스키마정보 보기
.tables [패턴식]
그냥 .tables 하면 모든 테이블과 뷰가 반환됨
sqlite> .table
schema test
schema라는 뷰와 test 라는 테이블 보여줌
테이블의 인덱스 보기
sqlite> .indices test
test_idx
test라는 테이블의 인덱스가 나왔다.
테이블이나 뷰에 대한 SQL정의-DDL문 내역은 .schema [테이블명] 으로 본다.
테이블명 지정 안하면 모든 객체(테이블, 인덱스, 뷰, 트리거)에 대한 DDL 문이 나온다.
sqlite> .schema test
CREATE TABLE test (id integer primary key, value text);
CREATE INDEX test_idx on test (value);
sqlite> .schema
CREATE TABLE test (id integer primary key, value text);
CREATE INDEX test_idx on test (value);
CREATE VIEW schema as select * from sqlite_master
/* schema(type,name,tbl_name,rootpage,sql) */;
더 자세한 스키마정보는 sqlite 의 시스템 뷰인 sqlite_master로 알수있다.
sqlite> .mode column
sqlite> .headers on
sqlite> select type, name, tbl_name, sql from sqlite_master order by type;
type name tbl_name sql
---------- ---------- ---------- -------------------------------------
index test_idx test CREATE INDEX test_idx on test (value)
table test test CREATE TABLE test (id integer primary
view schema schema CREATE VIEW schema as select * from s
.dump로 내보내기
기본이 stdout 이라 file.sql 로 파일을 지정하면 그곳에 써줌
sqlite> .output file.sql
sqlite> .dump
다시 기본 output 을 stdout으로 돌려놓음
sqlite> .output stdout
$ cat file.sql
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE test (id integer primary key, value text);
INSERT INTO test VALUES(1,'eenie');
INSERT INTO test VALUES(2,'meenie');
INSERT INTO test VALUES(3,'miny');
INSERT INTO test VALUES(4,'mo');
CREATE INDEX test_idx on test (value);
CREATE VIEW schema as select * from sqlite_master;
COMMIT;
sql 명령들로 구성된 sql스크립트는
.read 로 불러 올 수 있다.
파일데이터가 CSV(comma separated values)거나 다른 구분자로 된 경우는
.import [파일][테이블] 명령으로 가져올 수 있다.
.sepatator 명령으로 구분자를 다른것으로 지정 할 수 있다.
현재 구분자를 보려면
sqlite> .show
echo: off
eqp: off
explain: auto
headers: on
mode: column
nullvalue: ""
output: stdout
colseparator: "|"
rowseparator: "\n"
stats: off
width:
filename: ./test.db
'DB' 카테고리의 다른 글
raspbian 에 influxDB, grafana설치하기. (0) | 2021.05.31 |
---|---|
SQL 인젝션 (0) | 2008.07.02 |
고충까지는 아니고.. 조언을 부탁.. 오라클과 pro*c 참고할만한..서적좀 (0) | 2007.06.27 |