-
[SQLITE : 기초 문법 for Mac Users]DB 2020. 9. 7. 13:24
서론
Mac에는 기본적으로 sqlite3나 sqlite가 깔려있다.
윈도우는 sqlite.com에 가서 다운로드 받으면 된다.
(Mac은 거기서 다운을 받더라도 검증이 안된 개발자에게서 다운로드 되었다며 사용이 안된다..
기본적으로 깔려있어서 상관없기는 함)
만약에 설치를 다시 받아야하는 일이 생긴다면 brew를 이용해야 할 것 같다.
본격적으로 시작
Iterm에 입력하면 아래와 같이 실행된다.
> sqlite3 SQLite version 3.28.0 2019-04-15 14:49:49 Enter ".help" for usage hints. Connected to a transient in-memory database. Use ".open FILENAME" to reopen on a persistent database. sqlite>
sqlite를 종료하려면 ^D(Control + D) 입력
*기본 용어
더보기데이터를 모아 놓은 것 (전체) : 테이블(table)
행 : row / record
열 : column / field
name, menu, score 등은 속성이라고 부름
기초 문법
--DATA의 틀을 정의 : DDL-- CREATE 만들기 DROP 삭제 ALTER 변경 --DATA의 조작 : DML-- INSERT 끼워넣기 DELETE 삭제 UPDATE 갱신 SELECT 선택 --DATA CONTROL LANGUAGE : DCL-- grant 권한부여 revoke 권한수거 --트랜잭션 다루기 : TCL-- commit 실행 rollback 취소 *트랜잭션 : 일을 처리하는 단위 *DBA : 트랜잭션 분야를 전문적으로 다루는 사람
명령어는 대문자로 작성하는 것이 보통이며,
.(dot)을 붙인 명령어는 sqlite에서만 쓸 수 있는 명령어라고 보면 된다.
[테이블 만들기, 데이터 가져오기, 데이터 담을 폴더 만들기]
사용 명령어 : CREATE & .import & .open--데이터를 담을 폴더생성 & 테이블 만들기-- sqlite> .table //테이블 검색 : 아직 테이블이 없으므로 결과물이 없음 sqlite> .open kdb //경로를 지정하지 않고 open을 사용하면 "kdb"라는 파일이 현재 디렉토리에 생성됨 sqlite> create table People( //테이블 생성(괄호 안에 요소들을 자료형과 함께 적어 넣어준다.) ...> name char(20), ...> age int); sqlite> .table //테이블 검색 : 방금 생성된 테이블이 보인다. People //현존하는 모든 테이블 --데이터를 가져오기 & 테이블 만들기-- sqlite> .table //테이블 검색, 아무것도 없음 sqlite> create table score( //테이블 만들기 ...> name char(5), ...> menu char(20), ...> cost int, ...> per int, ...> score int); sqlite> .import "20200906" score //파일 가져와서 테이블에 넣기 sqlite> .table //테이블 만들어졌다. score
[테이블 이름 수정]
사용 명령어 : ALTER테이블 이름도 score이고, field 이름도 score인 상황 헷갈리니까 이름을 바꾸자 --테이블 이름 바꾸기-- sqlite> ALTER TABLE score RENAME TO pay; sqlite> .table //테이블 이름이 바뀌었음. pay
[출력 설정]
사용명령어 : .header on & .mode column
--출력형식 지정-- *형식 지정 전 sqlite> select * from pay; //score table 출력 j|옥동식|19000|2|5 j|합정리과일집|22400|2|5 j|맥도날드|7500|1|3 t|운남덮밥|26500|2|5 t|소크라테스떡볶이|26100|2|4 *형식 지정 sqlite> .header on //header 적용 sqlite> .mode column //column mode 적용 *형식 지정 후 sqlite> select * from pay; name menu cost per score ---------- ---------- ---------- ---------- ---------- j 옥동식 19000 2 5 j 합정리과일집 22400 2 5 j 맥도날드 7500 1 3 t 운남덮밥 26500 2 5 t 소크라테스떡볶이 26100 2 4
[조건줘서 검색하기]사용 명령어 : SELECT [ field ] from [table]
"*" : '모든 것'을 의미, [ field ]에 *을 적으면 '모든 field'를 의미한다.
--select 조건 주기-- *pay table에서 menu와 score field만 출력 sqlite> select menu, score from pay; menu score ---------- ---------- 옥동식 5 합정리과일집 5 맥도날드 3 운남덮밥 5 소크라테스떡볶이 4 *score가 5점인 행 출력 sqlite> select *from pay where score in(5); name menu cost per score ---------- ---------- ---------- ---------- ---------- j 옥동식 19000 2 5 j 합정리과일집 22400 2 5 t 운남덮밥 26500 2 5 *score 순서대로 모든 행 출력 sqlite> select * from pay order by score asc; name menu cost per score ---------- ---------- ---------- ---------- ---------- j 맥도날드 7500 1 3 t 소크라테스떡볶이 26100 2 4 j 옥동식 19000 2 5 j 합정리과일집 22400 2 5 t 운남덮밥 26500 2 5 *score 역순으로 모든 행 출력 sqlite> select * from pay order by score desc; name menu cost per score ---------- ---------- ---------- ---------- ---------- j 옥동식 19000 2 5 j 합정리과일집 22400 2 5 t 운남덮밥 26500 2 5 t 소크라테스떡볶이 26100 2 4 j 맥도날드 7500 1 3
주의사항!
더보기.(dot)을 써줘야 하는 명령어는 .(dot)을 빼먹지 않도록 주의
sqlite> select * from pay ...> (cursor 위치)
세미콜론을 빼먹으면 이렇게 되는 경우가 종종 있다.
에러가 난게 아니라 세미콜론을 아랫줄에 이어서 적어주면 되므로 당황하지 말자
sqlite> select * from pay ...> ;
sqlite> select * from pay;
위 두가지 경우는 모두 같은 역할을 수행한다.
뭐든 처음 배우는 것은 많이 써보는 게 좋은 것 같다.
*이 게시글은 (이노베이션 스퀘어 기본과정) 양주종 선생님의 강의를 토대로 작성된 글입니다.
'DB' 카테고리의 다른 글
[SQLITE : 기초 문법(2) for Mac Users] (0) 2020.09.14 Mongodb brew로 설치하기 (0) 2019.12.03