본문 바로가기

TIL

[ 23/2/1 TIL - SQL 기본 : SELECT 문 - WHERE / BETWEEN / IN / AND / OR | 크롬 개발자 도구 console 창 글자 크기 키우기 | Java class & interface : extends vs implements ]

이번에 듣게 된 '엑셀보다 쉬운 SQL' 강의에서 SQL 기본 문법에 대해 학습했다.

 

데이터베이스와 테이블을 설계하고 관리하는 DBA를 위한 강의가 아니라,

( 관계형 데이터베이스.. ERD ... Schema ... Entity ... )

 

 

단순히 데이터베이스 상에 있는 데이터를 검색해오는 기본적인 기능만 이용하게 해주는 입문자용 강의이다.

 

괜히 데이터베이스 상의 데이터를 Insert / Update / Delete 등의 작업으로, 데이터의 변경을 주지 않으면서

 

데이터베이스에서 데이터를 선택해서 가져온다는 의미인

 

SELECT문을 제대로 사용하여 내가 원하는 데이터를 뽑아올 수 있게 하는 것이 강의의 목표이다.

 

 

 

[1] SELECT Query

 

- DB의 CRUD 중, 'Read' 기능의 역할을 한다.

 

- 쿼리(Query)란, 직역하면 데이터베이스에게 '질문' 한다는 뜻이다.

즉, 데이터베이스에게 대답을 해달라는 것 = 명령을 내리는 것과 동일한 의미이다.

 

- Select 쿼리문은 1) 어떤 테이블에서 2) 어떤 필드의 데이터를 가져올지 로 구성된다.

 

ex)

select comment from checkins
where week in (1,3)

여기서 테이블은 : checkins

필드는 : comment

* where 은 select문을 통해 DB에서 데이터를 찾아올 때, 조건을 달아준다.

* where ~ in은 튜플() 안에 있는 값에 해당하는 데이터를 들고 오라는 의미이다.

 

 

[2] WHERE 절

 

- SELECT 쿼ㄹ문으로 가져올 데이터에 조건을 걸어주는 것.

 

- SELECT ~ WHERE로 사용.

 

ex1)

select * from point_users
where point > 20000;

 

ex2)

select * from users
where name = "황**";

 

ex3)

select * from orders
where course_title = "웹개발 종합반" and payment_method = "CARD"

 

[3] 각종 SQL 문들

 

1) 데이터베이스 상에 존재하는 릴레이션 = 테이블의 이름들을 보여주는 명령어

show tables;

 

2) 'orders' 라는 이름을 가진 테이블의 데이터를 전부 가져오기.

select * from orders;

 

3) 'orders' 테이블의 특정 필드만 가져와보기

select created_at, course_title, payment_method, email from orders;

 

 

[4] WHERE 절과 자주 같이 쓰는 문법

 

1) 같지 않음 ( != )

select * from orders
where course_title != '웹개발 종합반'

 

2) 범위 ( between )

select * from orders
where created_at between '2020-07-13' and '2020-07-15'

 

3) 포함 ( in )

select * from checkins c 
where week in (1,3)

아래와 같은 방식도 가능.

select * from checkins c 
where week in (1,2,3,4,5,6,7,8)

 

4) 패턴 ( like ) -> % : 어떤 문자열이든 상관 없다는 의미.

select * from users
where email like "%daum.net"

아래와 같은 방식도 가능. ( a%t => a 로 시작하고 중간에 뭐가 들어가도 되며, t 로 끝난다 )

select * from users u 
where email like "a%t"

 

[5] 이외 유용한 문법

 

1) limit

-> 데이터가 너무 많아서 로드해오는데 시간이 걸릴 때.

테이블이 어떻게 생겼나 보는데 쓰임.. 쓸데없이 모든 데이터 로딩하지 않게!

select * from orders
where payment_method = 'kakaopay'
limit 5

 

2) distinct

-> 필드의 중복된 값을 제거하고 가져올 때 쓰는 문법.

select distinct(payment_method) from orders

 

3) count

-> 조건에 해당하는 데이터의 개수를 반환하는 문법.

select count(*) from orders
where payment_method = 'kakaopay'

 

distinct + count 두 개 합쳐서.

select count(distinct(name)) from users

 

=========================

 

[ Chrome 개발자 도구 폰트 사이즈 키우기 / 줄이기 ]

 

<Mac OS의 경우>

글자 크기 키우기 : Command =

글자 크기 줄이기 : Command -

 

=========================

 

interface가 다른 interface를 extends 키워드로 받을 수 있는지는 모르고 있었다.

 

public interface MemoRepository extends JpaRepository<Memo, Long> {
    List<Memo> findAllByOrderByModifiedAtDesc();
}

이와 같이 사용할 수 있었다.