2019. 12. 3. 12:14ㆍSecurity/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 |