sqlite 연습

DB : 2020. 4. 8. 15:06
반응형

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

 

 

반응형
Posted by Real_G