오늘은 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절 집계함수에 대해서 공부하고 포스팅을 해보겠습니다
집계함수 같은 경우는 중요한 내용이기 때문에 자세히 공부해서 오겠습니다.
감사합니다.