ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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

    댓글

Designed by Tistory + Edited by Juepark