왜 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 |