반응형

WHERE절의 기본 개념
| SELECT 컬럼명 FROM 테이블명 WHERE 조건식; ORDER BY 컬럼 [ASC/DESC], 컬럼[ASC|DESC], ... 데이터베이스에 테이블(표)이 있을때, 모든 데이터를 다 가져오는 것이 아니라 특정 기준을 통과한 데이터만 필터링 하고 싶을 때 사용 한다 * WHERE 조건식에는 비교 연산자가 사용된다 ---> =, <, >, <=, >=, * !=, <>, ^= 이 3개는 같지 않다 라는 표현 |
다양한 조건 검색
| 사원 중에 급여가 4000 이상인 사원을 검색 SQL> SELECT eno 사번, ename 이름, sal 급여 ---> 조건 검색은 원하는 데이터만 적는게 좋음 2 FROM emp 3 WHERE sal >= 4000; 이름이 최미나인 사원을 검색 SQL > SELECT * FROM emp 2 WHERE ename = '최미나' ; ---> 최미나에 대한 모든 정보(eno, ename, sal 등) 가 다 나옴 SQL > SELECT ename FROM emp WHERE ename = '최미나'; ---> 최미나에 대한 이름만 나옴 10번 이외 부서 정보를 검색 SQL> SELECT * FROM dept ---> dept: 2 WHERE dno != '10'; ---> 데이터타입이 숫자 인지 문자(10)인지 꼭 확인 해야 함 급여가 4000 이상인 사원을 급여 순으로 검색 SQL> SELECT eno 사번, ename 이름, sal 급여 2 FROM emp 3 WHERE sal >= 4000 4 ORDER BY sal DESC; 연봉이 30000 이상인 사원을 부서별로 검색 SQL> SELECT dno 부서, eno 사번, 2 ename 이름, sal*12+nvl(comm,0) 년봉 ---> 데이터에 있는 NULL 값에 대한 계산 오류를 막기 위해 수식 사용 3 FROM emp 4 WHERE sal*12+nvl(comm,0) >= 30000 ← 년봉 >= 30000 사용 불가!! 5 ORDER BY dno; ---> 이렇게만 정렬하면 부서는 같은데 연봉 같은사람끼리 뭉쳐서 나오고 정렬은 안됨 *부서가 같고 연봉순으로 정렬하고 싶다면 5 ORDER BY dno; 년봉 DESC; 이 내용으로 정렬 해줘야 함 |
날짜 검색
| 입사일이 1996년 이후인 사원의 정보를 검색 SQL> SELECT * FROM emp 2 WHERE hdate >= '1996/01/01'; ---> 1996/01/01 입사한 사원의 모든 정보(sal, eno, ename 등) * 사원 이름과 입사일만 나오게 하려면? SQL> SELECT eno 사번 ename 이름 입사일 hdate 2 FROMR emp 3 WHERE hdate >= '1996/01/01' 날짜 확인, 날짜 형식 변경 하기 1)현재 시간과 날짜 확인하기 > select sysdate from dual; 2) 날짜 형식 변경 확인하기 ![]() ALTER SESSION SET NLS_DATE_FORMAT ='YYYY/MM/DD'; 현재 세션에서 수정하겠다, 날짜출력 포맷을 = YYYY/MM//DD 로 SELECT * FROM NLS_SESSION_PARAMETERS WHERE PARAMETER = 'NLS_DATE_FORMAT'; |
관계 연산자(조건이 여러 개인 경우)와 부정 연산자
| 조건이 여러 개인 경우나 부정 검색인 경우 관계 연산자가 사용됨 - AND, OR, NOT 회계 업무를 담당하는 여성 사원을 검색 SQL> SELECT * FROM emp 2 WHERE job='회계' AND sex='여'; SQL> SELECT DISTINCT job FROM emp ---> job(회계, 마케팅 등)이 중복되서 나오므로 DISTINCT를 입력 해야 함 2 WHERE NOT job='회계'; ← job != '회계' 으로 사용을 더 많이 함 (NOT job='회계';) = job !='회계' |
알고리즘 이진 탐색(Binary Search) 개념 정리
| 데이터가 정렬되어 있다면, 처음부터 하나씩 읽는 것보다 훨씬 빠른 방법이다 1. 탐색 예시 (데이터 1,000개 기준) 1 2 3 4 ..... 1000 a bb k y x ---> 1에는 a 데이터, 2에는 bb 데이터 ... 가 있다 상황: 1부터 1,000까지 정렬된 데이터에서 x 혹은 df 라는 데이터를 찾고 싶을 때 비효율적인 방식(선형 탐색): 1번 부터 1,000번 까지 하나씩 읽음 ---> 최대 1.000번 읽어야 함 2. 이진 탐색 진행 과정 효율적인 방식(이진 탐색): 500번째 데이터를 먼저 확인 1) 500번째 데이터를 확인한다 ---> 500번째 데이터는 ff 라는 데이터를 가지고 있음 2) 찾으려는 값(df)이 ff 보다 큰지 작은지 비교한다 3) df가 ff보다 작다면 뒤쪽 500개(500, 501, ... , 1000) 는 읽을 필요 없이 버린다 남은 500개 중 다시 절반인 250번째를 확인하며 범위를 좁혀 나간다 |
문제

'Infra & Security Eng > Database Engineering' 카테고리의 다른 글
| 등가조인, 비등가조인 개념과 사용하는 이유, 예시, 실습 (0) | 2026.01.29 |
|---|---|
| 다양한 조건 검색(NULL, BETWWN, IN, LIKE 기능) (0) | 2026.01.28 |
| 정렬 문제 (0) | 2026.01.27 |
| ORDER BY절 이용한 정렬(기본 규칙, 정렬 검색, 묶음 검색) (0) | 2026.01.27 |
| SQL - SELECT 문 문제 (0) | 2026.01.27 |
