반응형
앱 개발자는 sql에 약하다.
나만 약한건가?
그래서 언제나 제대로 배워보자라고 마음을 먹고 곧 잊곤 한다.
그래서 이번에는 제대로 학습해서 잘 사용해보자라는 마음으로 글을 써본다.
앞으로 10년 정도 더 개발을 할거 같은데...
죽기 전까지 개발을 해보겠다는 각오로. 오랫동안 써먹겠다는 각오로 다시 시작해본다.
용어 재정리를 하고, 코드로 보자..
인덱스란?
데이터를 찾기 쉽게 데이터에 색인을 입혀주는것과 같다.
인덱스의 장단점
데이터를 빠르게 찾을수 있도록 도와주지만, insert, delete, update 시에 색인에 대한 처리가 필요함으로 부하가 걸린다.
언제 쓰는게 좋은가?
빈번한 변경이 없을 때 사용하는게 좋다.
용량을 10%정도 더 잡아 먹는다고 한다.
인덱스 사용은?
규모가 큰 테이블
변경이 자주 일어나지 않는 컬럼
조건검색이 많이 일어나는 컬럼
뷰
뷰란 사실 존재하지 않지만, 사용자에게 보여주기 위하여 가상으로 존재하는 것처럼 보여주기 위해 사용된다.
불필요한 데이터 노출 없이 필요한 데이터만으로 구성이 가능하다.
뷰가 정의된 테이블이 삭제되거나 관련된 뷰가 삭제되면 자동으로 삭제된다.
CLP (command-line program)
명령행 프로그램
DDL (Data Definition Language)
컴퓨터의 데이터를 정의하는 컴퓨터 언어 또는 컴퓨터 언어 요소
코드로 확인해보자
테이블 생성
create table test (id integer primary key, value text);
데이터 삽입
insert into test (value) values('eenie');
insert into test (value) values('meenie');
insert into test (value) values('miny');
insert into test (value) values('mo');
데이터 조회
sqlite> select * from test;
1|eenie
2|meenie
3|miny
4|mo
보기좋게 변경
sqlite> .mode column
sqlite> .headers on
sqlite> select * from test;
id value
-- ------
1 eenie
2 meenie
3 miny
4 mo
마지막 입력된 rowid 확인
sqlite> select last_insert_rowid();
last_insert_rowid()
-------------------
4
인덱스와 뷰 생성
sqlite> create index test_idx on test (value);
sqlite> create view schema as select * from sqlite_master;
sqlite> .tables
schema test
테이블의 인덱스 확인
.indices test
test_idx
SQL 정의 확인
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_master로 알수 있다.
sqlite> select * from sqlite_master;
type name tbl_name rootpage sql
----- -------- -------- -------- ------------------------------------------------------
table test test 2 CREATE TABLE test (id integer primary key, value text)
index test_idx test 3 CREATE INDEX test_idx on test (value)
view schema schema 0 CREATE VIEW schema as select * from sqlite_master
반응형