데이터베이스

[Oracle] 데이터 조회, SELECT 문

포포015 2021. 2. 9. 10:54

SELECT 문의 기본구문은 아래와 같다.

1
2
3
4
SELECT column1, column2
FROM 테이블명
WHERE 조건
ORDER BY 정렬순서;
cs

구문 순서는

1. 테이블에 있는 데이터를 조회하기 위해선 먼저 데이터를 가져올 테이블이 필요 - FROM

2. 그 테이블의 어떤 컬럼을 가져올것인지? - WHERE

3. 모든 데이터를 가져올것인지? 아니면 어떤 조건에만 맞는 데이터만 가져올것인지? - SELECT

 4. 마지막으로 가져온 데이터를 정렬 하는 순서 - ORDER BY 

 

* 조건에 맞는 데이터 조회하기

WHERE 절의 조건식에는, 조건연산자를 사용할수 있다. 기본 코딩 연산자랑 크게 다른게없다,

여러 개의 조건을 동시에 사용할수도 있다. 

2개의 조건이 필요하고 모두 만족 해야 할때는 AND를 사용해서 연결시켜준다.

1
2
select * from subway_statistics
where station_name ='잠실(216)' and gubun='승차' and boarding_time =7
cs

 

'A이거나 B인 건' 처럼 둘중 하나라도 만족하는 데이터를 조회 할땐 OR을 사용한다

1
2
select * from subway_statistics
where station_name ='잠실(216)' or station_name='선릉(220)';
cs

 

조건식에서 여러개의 조건이 걸렸을땐 괄호를 사용해 우선순위를 이용해서 데이터를 뽑아내야한다.

 

* LIKE 연산자

~ 와 같다 라는 의미가 있는 연산자 이다

1
2
SELECT * FROM subway_statistics
where station_name LIKE '선릉%'
cs

%는 모든것을 의미 한다. %의 위치에 따라 조건을 다르게 할수 있다. 위와 같이 선언한다면 ,

선릉 으로 시작되는 데이터를 다 뽑아온다.

 

 

* IN 연산자 

'A아니면 B 인 건' 처럼 하나만 조건을 만족해도 되는경우 OR 키워드를 사용하면되지만,

혼동된다는 단점이 있다. OR 과 같은 기능을하는 연산자가 바로 IN 연산자 이다.

1
2
SELECT * FROM subway_statistics
where station_name LIKE '선릉%' AND boarding_time IN (7,9)
cs

IN 연산자를 쓸때는 검색할 값을 콤마로 구분해 괄호로 둘러 싸야한다.

 

 

* BETWEEN 연산자

컬럼값이 비교할값보다 크거나 작은건을 조회할 경우 아래와 같이 조건연산자로 비교해도 되지만,

1
2
SELECT * FROM subway_statistics
where station_name LIKE '선릉%' AND passenger_number >= 500 AND passenger_number <= 1000;
cs

 

이때 편하게 쓸수있는게 BETWEEN 연산자 이다. '~사이에' 라는 뜻이 있다.

'컬럼 BETWEEN a AND b' 형태로 사용한다.

~ 이상과 ~ 이하인 경우가 아닌 초과와 미만인 값을 조회할때는 > 와 < 연산자를 사용해야한다.