select문에 대해서 기본적인 부분은 아래 글을 참고해주세요!
https://bio-logisch.tistory.com/19
이번에는 조금 더 복잡한 경우에서의 select문에 대해 예제를 통해 공부해보고자 한다!
select문의 세계는 끝도 없다...
select 시 여러 조건을 걸어서 특정한 튜플만 조회하고자 할 경우에는
아래 형식을 활용해서 여러 절을 추가해서 select문을 작성하게 된다.
오늘은 where절과 order by를 사용하는 select문을 다뤄본다.
아래는 select문에서 조건절에 자주 사용되므로 미리 숙지하면 좋다!
조건 | 설명 |
A and B | A와 B 모두 성립하는 조건일 경우 조회 * 즉 하나라도 성립하지 않으면 조회되지 않는다. |
A or B | A 혹은 B 중 하나이상 성립하는 조건일 경우 조회 |
between A and B | A와 B사이에 해당하는 값의 범위 지정 |
in / not in | in은 특정 값을 지정하고 not in은 특정 값이 아닌 값을 지정 |
like % | 패턴을 지정. %와 함께 사용하며, %자리에는 문자든 숫자든 어떤 값이 와도 된다. |
**** WHERE user_gender = 'male' OR user_amount >= 5500 ;
위의 식처럼 or이나 and로 연결하는 두 조건의 형식이 전혀 달라도 된다!
*** like '3%'이면 3으로 시작하는 값에 해당한다. 예를 들면 31, 300, 3121 등에 해당한다.
%자리에는 어떤 수가 와도 된다.
예제를 통해 다양한 select 문을 다뤄보고자 한다.
create table member (
no number(2) primary key,
name varchar2(10),
age number(2),
addr varchar2(20),
point number(4)
);
*컬럼 설명 :
no : 회원번호 / name : 회원명 / age : 나이 / addr : 주소 / point : 포인트
아래와 같이 테이블에 튜플을 insert 해보겠다.
insert into member values (1,'김일수',23,'경기도 수원시',300) ;
insert into member values (2,'홍길수',34,'수원시',250) ;
insert into member values (3,'이지수',48,'용인시',100) ;
insert into member values (4,'삼국지',49,'서울시',400) ;
insert into member values (5,'사거리',37,'용인시',250) ;
insert into member values (6,'오징어',23,'서울시',180) ;
insert into member values (7,'칠성수',10,'서울시',300) ;
문제1) 포인트가 200이상인 사람의 이름과 주소와 포인트를 출력하시오.
문제2) 포인트가 300미만인 사람의 모든 정보를 출력하되 포인트를 내림차순으로 출력하시오.
문제3) 포인트가 200이상 250미만인 사람의 모든 정보를 출력하시오.
문제4) 거주지가 서울인 사람의 모든 정보를 출력하시오.
문제5) 거주지가 서울이거나 용인인 사람의 정보의 이름과 주소를 출력하시오.
문제6) 거주지가 수원인 사람의 모든 정보를 출력하시오.
문제7) 문제 5번에서 조건식에서 in 연산자를 사용하여 풀어보세요.
*** addr in ('서울시','용인시') 와 동일한 표현으로는
addr='서울시' and addr='용인시';
반대 표현으로는 addr not in ('서울시','용인시');
혹은 addr!='서울시' and addr!='용인시';
문제8) 모든 사람의 이름과 나이가 출력되게 하세요.
출력 시에는 name 대신 이름, age 대신 나이라고 컬럼명을 변경하여 출력하시오.
문제9) 문제 8번 쿼리문을 실행한 후 실제 테이블의 컬럼명도 바뀌었는지 확인하세요.
*** 실제 테이블의 컬럼명은 바뀌지 않는다.
**** as - 별칭지정, select 절과 from 절에서 많이 사용한다.
where절에 별칭컬럼을 쓰면 작동되지 않는다.
where 절에는 테이블에 실제로 있는 컬럼명을 입력해야 한다.
문제10) 30대인 사람의 정보를 모두 출력하시오.
31, 300, 33111, 등
연산식을 사용해서 나이가 30대의 튜플만 출력되도록 할 수도 있다.
문제11) 포인트에 10%만 사용가능(가용포인트)하다고 할 때,
20포인트가 넘는 사람의 이름, 나이, 실제포인트, 가용포인트를 출력하시오.
문제12) 포인트가 높은 순서대로 정렬하시오. 포인트가 같은 경우는 나이가 많은 순서로 출력한다.
+
'DB > SQL - Oracle' 카테고리의 다른 글
[SQL] 숫자 데이터 타입 (1) number (0) | 2024.02.06 |
---|---|
[SQL] where 조건절 - Like(패턴) 방식 파헤치기 + 정규 표현식 (0) | 2024.02.03 |
[SQL] DDL(데이터 정의어) - alter (0) | 2024.02.02 |
[SQL] DML(데이터 조작어) - select (0) | 2024.02.02 |
[SQL] TCL(트랜잭션 제어어) - commit, rollback, checkpoint(=savepoint) (0) | 2024.02.02 |