본문 바로가기
개발노트/SQL

SQL 기초

by 시계속세상은아직돌아가는중 2024. 2. 1.

왜 SQL을 배우는가?

 

안드로이드 개발을 하면서 room db를 이용하여 간단하게 내부 db를 구축하였다.

해당 db를 사용하면서 스스로 독학하며 습득한 query문들이 존재했다.
query문은 영어의 기본 문법과 흡사하기에 날림으로 독학하기에는 문제가 없었다.

 

    //Room DB에서 썼던 대표적인 Query문들

    @Query("SELECT * FROM tag_table WHERE tag_key = :key ORDER BY tag_order asc")
    fun getLiveTagByKey(key: String): LiveData<List<TagEntity>> //템플릿 선택 시 반환되는 데이터
    
    @Insert(onConflict = OnConflictStrategy.IGNORE)
    suspend fun insertTag(item: TagEntity)
    
    @Query("DELETE FROM tag_table WHERE tag_id = :id")
    suspend fun deleteTagById(id: Long)
    
    @Update(onConflict = REPLACE)
    suspend fun updateTag(item:TagEntity)

 

그러나

SQLite는 이름처럼 경량화 되어있으며 내장형 db이다.

RoomDb는 SQLite를 좀 더 편하게 사용하기 위한 안드로이드 db이다.
따라서 해당 qeury문은 Room DB를 위한 Query문이기 때문에 이를 범용성 있게 사용할 수는 없다.

 

따라서 Query문에 대해서 좀 더 폭 넓게 배워보고자 한다.

새롭게 배우는 환경

 

이전에 안드로이드 스튜디오에서 사용했던 친구는 'SQLite'를 간소화시킨 Room이다.

하지만 앞으로 query문을 배우게 되는 환경은 'MySQL'로 배우도록 할 것이다.

 

MySQL은 SQLite보다 좀 다 무거운 db를 다룰 때 사용되며, 좀 더 폭 넓은 query문을 익히는데 더 적합하다.


다시 배우는 SELECT와 WHERE

MySQL에서는 해당 query문으로 테이블들의 조회가 가능하다.

 

SHOW TABLES

 

또한 아래 SELECT문으로 table의 조회가 가능하다.

 

SELECT * FROM table_name WHERE Coloum_name = 'kakaopay'

SELECT * FROM point_users pu 
WHERE `point` > 5000

SELECT * FROM orders o 
WHERE course_title = '앱개발 종합반' and payment_method = 'CARD'

 

SELECT 테이블 조회
* 모든 열(칼럼)
FROM table_name table_name에서
Where Colum_name = 'field_name' Colum_name의 ' field_name '의 필드를 포함한 친구들을
Where 'field' > 5000 'feild'가 5000을 초과하는 데이터만
WHERE Colum_name = 'felid_name' and ~ Colum_name = 'felid_name'과 and 뒤에 후술한 것을 같이 만족하는 데이터를 출력함
WHERE Colum_name = 'felid_name' or Colum_name = 'felid_name' 혹은 or뒤에 후술된 내용을 출력함


그렇다면 WHERE과 같이 합치면 좋은 친구들을 정리해보자

!= 포함하지 않은
between WHERE create at BETWWEN '2020-07-13' and '2020-0715'
2020-07-13~2020-07-15 사이의 데이터들을 출력
in 포함
SELECT * FROM checkins c
WHERE week IN (1,2,3)
()안에 포함한 데이터를 출력
like WHERE email LIKE '%daum.net'
% -> 앞의 문장은 상관 없이.
즉 문자들~daum.net의 문자열들을 출력한다.

 

'개발노트 > SQL' 카테고리의 다른 글

SQL 기초 3 group by /oder by  (0) 2024.02.27
SQL기초 2  (2) 2024.02.05