SQL-WHERE

2019. 12. 3. 12:14Security/sql

* WHERE절을 이용한 조건 검색

 

조건 검색

 

SELECT [DISTINCT | ALL] 컬럼, 컬럼, ... FROM 테이블 WHERE 조건 ORDER BY 컬럼 [ASC/DESC], 컬럼 [ASC/DESC]....

-> 이러한 형식

 

[예제]

#SQL > SELECT eno 사번, ename 이름, sal 급여 FROM emp WHERE sal >= 4000;

-> 사원중에 급여가 4000이상인 사원의 명단.

#SQL > SELECT * FROM emp WHERE ename = '문시현';

-> 이름이 문시현인 사원의 정보. 숫자가 아니면 무조건 ' '를 포함해준다.

#SQL > SELECT * FROM emp WHERE dno != '10';

-> 10번 부서 이외의 부서 사원의 명단. 마찬가지로 dno는 문자타입이기때문에 ' '를 포함.

#SQL > SELECT eno 사번, ename 이름, sal*12+nvl(comm,0) 연봉 FROM emp WHERE sal*12+nvl(comm, 0) >=30000;

-> 연봉이 30,000이상인 사원의 이름 검색

#SQL > ALTER SESSION SET nls_date_format='YYYY/MM/DD'; // 날짜 출력 형식을 정의하는 명령어

#SQL > SELECT * FROM emp WHERE hdate >= '1996/01/01';

-> 입사일이 1996년 이후인 사원의 정보를 검색

 

널(NULL)과 비교 연산

널은 결정된 값이 아니기때문에 =나 <등의 비교 연산자를 사용할 수 없다. 널에 대한 직접적인 검색은 특별한 연산자를 이용한다.

- IS NULL : 널을 검색한다.

- IS NOT NULL : 널이 아닌 값을 검색한다.

 

[예제]

#SQL > SELECT * FROM emp WHERE comm IS NULL;

-> 보너스 칼럼이 널인 사원을 검색한다.

 

[실습]

1. 화학과 학생을 검색

#SQL > SELECT * FROM student WHERE MAJOR='화학'; 

 

2. 평점이 2.0 미만인 학생 검색

#SQL > SELECT * FROM student WHERE AVR < 2.0;

 

3. 권현 학생의 평점을 검색

#SQL > SELECT AVR 평점 FROM student WHERE SNAME='권현';

 

4. 정교수의 명단을 검색

#SQL > SELECT * FROM professor WHERE ORDERS='정교수';

5. 화학과 소속 교수의 명단을 검색

#SQL > SELECT * FROM professor WHERE SECTION='화학';

 

6. 송강 교수의 정보를 검색

#SQL > SELECT * FROM professor WHERE PNAME='송강';

 

7. 학년별로 화학과 학생의 성적을 검색

#SQL > SELECT SYEAR 학년, SNAME 이름, AVR 성적 FROM student WHERE MAJOR='화학';

 

8. 2000년 이전에 부임한 교수의 정보를 부임일 순으로 검색

#SQL > ALTER SESSION SET nls_date_format='YYYY/MM/DD';

#SQL > SELECT * FROM professor WHERE HIREDATE < '2000/01/01';

 

9. 담당 교수가 없는 과목의 정보를 검색

#SQL > SELECT * FROM course WHERE PNO is NULL;

 

10. 보너스가 급여의 10% 이상인 사원을 검색

#SQL > SELECT * FROM emp WHERE comm>= 0.1*sal;

'Security > sql' 카테고리의 다른 글

SQL-서브쿼리  (0) 2019.12.06
SQL-모델링, join  (0) 2019.12.05
SQL-관계 연산자와 LIKE 연산자, BETWEEN, IN  (0) 2019.12.04
SQL-SELECT(2)  (0) 2019.12.03
RDB & SQL-SELECT  (0) 2019.12.02