[Mysql] Select 연산자 응용

728x90

안녕하세요 🖐

오늘은 Select 연산자를 사용한 쿼리문을 실습을 해보겠습니다.

 

 

❤ select 

원하는 정보를 추출해 온다.

 

**select 열 이름
from 테이블 이름
where 조건**

위 구조가 기본 select문을 구조 입니다.

위 쿼리만 사용한다면 데이터를 쉽게 조회할 수 있습니다.

그러나 위 쿼리는 단점이 있습니다.

내가 원하지 않는 데이터들 또한 전체다 조회가 된다는 것 입니다.

그래서 이번에는 내가 원하는 데이터들을 뽑기 위한 연산을 해보겠습니다.

📢 Select 연산자의 응용

1) 관계 연산자 (where)

AND

 

**select * from member where gaipday<now() and pass="1234";**
**select * from member where age>=20 and age <=30;**

and 연산자는 조건이 둘다 부합하는 것만 조회를 한다.

조건이 한개라도 맞지 않을시 조회에서 제외하므로, 둘 중 하나인 조건을 원하면 or 사용

 

OR

**select * from member where age>=20 or age <=30;**

age가 20이상이거나, age가30 이하인 데이터를 조회한다. (둘중 하나 만족시 조회)

 

between ~ and

**select * from member where age between 20 and 30;**

문법은 where column이름 between A and B;

and연산이랑 같은 역할을 수행한다. A와B 둘다 만족하는것만 조회한다.

between의 특징은 다른 column을 사용할 수 없다는 것이다.

내가 같은 column 안에서 2가지 조건에 맞는 데이터를 조회하고 싶을 때만 사용한다.

 

IN

같은 column 안에서 원하는 데이터 여러가지를 뽑을 때 사용한다.

**select * from member where age in(20,30,40);**

이렇게 하면 age가 20,30,40인 데이터만 조회를 한다.

 

Like

문자열의 내용을 검색하기 위해 사용함.

위 Like 연산자는 웹 개발에서 ‘검색 ‘에 자주 사용이 됩니다.

select * from member where name like '김%';
  • ‘**’%”**는 무엇이든 상관이 없다는 뜻이다.

member 테이블을 name 컬럼에서 ‘김’ 으로 시작하고, 뒤에는 뭐가 오든 상관없는 것 을 조회한다는 쿼리 입니다.

select * from member where name like '_현규';
  • _”는 한 글자인 것을 조회한다는 뜻이다.

member 테이블을 name 컬럼에서 맨 앞글자 한개가 뭐가 오든 상관없고, 뒤에가 ‘현규’ 인 것을 조회한다는 쿼리 입니다.

 

2) 서브 쿼리(하위 쿼리)

서브쿼리란 간단히 쿼리안에 쿼리가 있는 구조를 말한다.

select * from member where age > 20;

위 과정을 서브 쿼리를 사용해서 쓰면은

select * from member where age > (select age from member where age=20);

위 쿼리로 대체를 할 수 있다. 위 쿼리는 조회가 딱 1개만 되야 할 때 이렇게 사용함

보통은 여러개가 조회해야하니 위 쿼리가 아닌 아래 설명하는 쿼리를 사용해야 함.

 

2-1) ANY=SOME → 서브 쿼리가 두개 이상의 값을 return할 때 사용한다.

  • 다중 행 조회 연산자 → 조건을 만족하는 값이 하나라도 있다면 결과 값을 return 함
select * from member where height >= ANY(select height from member where age=30);
select * from member where height >= SOME (select height from member where age=30);

age=30 인 사람을 height를 조회한 결과가 174,176 이라고 치면은

ANY(174,176) 이 되는 것이다. 그 이후 메인 쿼리를 연산하면 된다.

이러한 이유 때문에 ↓↓↓

  • ANY는 IN 이랑 같은 의미를 한다.
select * from member where height IN (select height from member where age=30);

 

2-2) ALL

  • 다중 행 조회 연산자 → 모든 조건을 만족하는 값을 return 함
select * from member where height >= ALL (select height from member where age=30);

3) 정렬

데이터를 운하는 순서대로 정렬하여 출력하기 위해서는 order by구문이 필요하다

select * from member order by gaipday;
  • 아무것도 없이 order by 컬럼이름 -> 오름차순(=ASC)으로 정렬하겠다는 뜻 입니다.
select * from member order by gaipday DESC;
  • order by 컬럼이름 DESC -> 내림차순으로 정렬하겠다는 뜻 입니다.

4) 중복 제거

중복된 것은 하나만 출력하는 연산자 DISTINCT

select DISTINCT * from member;

5) 출력 개수 제한

출력을 할때 10명의 정보만 얻고 싶을 때 LIMIT 연산자를 사용한다

select * from member order by gaipday DESC LIMIT 5;
  • 10명의 데이터만 출력한다. 
select * from member order by gaipday DESC LIMIT 2, 5;
  • LIMIT(시작, 개수)  
  • 즉 2부터 시작하고 5개만 출력한다는 뜻

 

다음은 Group by절 집계함수에 대해서 공부하고 포스팅을 해보겠습니다

집계함수 같은 경우는 중요한 내용이기 때문에 자세히 공부해서 오겠습니다.

 

감사합니다.

728x90