DataBase/Oracle

2. Oracle Select

유가엘 2020. 3. 25. 10:40

SELECT.sql
0.00MB

SELECT 구문

"*" 는 모든 필드를 출력할 수 있습니다.

SELECT * FROM TAB;  -- 해당 스키마에 있는 테이블과 View 목록이 출력됩니다. 
SELECT * FROM EMPLOYEES;    -- EMPLOYEES 테이블의 모든 정보를 출력합니다.

DESC

DESC EMPLOYEES; -- EMPLOYEES 테이블의 속성을 출력합니다. 

 

오름차순

SELECT EMPLOYEE_ID, LAST_NAME FROM EMPLOYEES ORDER BY EMPLOYEE_ID ASC; 

 

내림차순

SELECT EMPLOYEE_ID, LAST_NAME FROM EMPLOYEES ORDER BY EMPLOYEE_ID DESC; 

 

AS

별칭을 이용해 출력시 원하는 필드명으로 변경 할 수 있습니다. 

SELECT EMPLOYEE_ID AS "직원코드", SALARY AS "급여" FROM EMPLOYEES; 
SELECT EMPLOYEE_ID "직원코드", SALARY "급여" FROM EMPLOYEES;  

 

DISTINCT

중복된 데이터를 제거 후 출력해줍니다. 

SELECT DISTINCT JOB_ID FROM EMPLOYEES;

 

WHERE

검색 조건을 입력 할 수 있습니다.

SELECT EMPLOYEE_ID, LAST_NAME FROM EMPLOYEES WHERE LAST_NAME = 'Smith'; 
-- Last_Name이 Smith인 EMPLOYEE_ID, LAST_NAME 를 출력합니다. 

SELECT EMPLOYEE_ID, SALARY FROM EMPLOYEES WHERE LAST_NAME = 'Smith'; 
-- Last_Name이 Smith인 EMPLOYEE_ID, SALARY 를 출력합니다. 

SELECT EMPLOYEE_ID, FIRST_NAME, SALARY FROM EMPLOYEES WHERE LAST_NAME = 'Smith'; 
-- Last_Name이 Smith인 EMPLOYEE_ID, FIRST_NAME, LAST_NAME 를 출력합니다. 

SELECT FIRST_NAME, LAST_NAME, SALARY FROM EMPLOYEES WHERE SALARY >= 5000; 
-- 급여가 5000 이상인 사람들의 FIRST_NAME, LAST_NAME, SALARY 출력할 수 있습니다. 

SELECT FIRST_NAME, LAST_NAME, HIRE_DATE FROM EMPLOYEES WHERE HIRE_DATE >= '04/01/01'; 
-- 입사일이 04/01/01 이후 사람들의 FIRST_NAME, LAST_NAME, HIRE_DATE 를 출력합니다. 

 

AND

WHERE A AND B - A와 B 모두 만족하는 조건을 출력 할 수 있습니다.

SELECT FIRST_NAME, LAST_NAME, JOB_ID, DEPARTMENT_ID 
FROM EMPLOYEES WHERE DEPARTMENT_ID = 50 AND JOB_ID = 'SH_CLERK'; 
-- DEPARTMENT_ID 50 이며, JOB_ID 가 SH_CLERK 인 사람의 FIRST_NAME, LAST_NAME, JOB_ID, DEPARTMENT_ID를 출력합니다. 

 

OR

WHERE A OR B - A나 B 둘 중 하나를 만족하면 출력 할 수 있습니다.

SELECT FIRST_NAME, LAST_NAME, MANAGER_ID, DEPARTMENT_ID  
FROM EMPLOYEES WHERE DEPARTMENT_ID = 50 OR MANAGER_ID = 100; 

-- DEPARTMENT_ID 50 이거나, MANAGER_ID 가 100 인 사람의 FIRST_NAME, LAST_NAME, MANAGER_ID, DEPARTMENT_ID를 출력합니다.

 

BETWEEN 

BETWEEN A AND B - A와 B 사이의 값을 출력할 수 있습니다.

SELECT FIRST_NAME, LAST_NAME, SALARY FROM EMPLOYEES WHERE SALARY >= 4000 AND SALARY < 8000; 
SELECT FIRST_NAME, LAST_NAME, SALARY FROM EMPLOYEES WHERE SALARY BETWEEN 4000 AND 8000; 

 

IN

IN() - 괄호 안에 부합하는 목록을 출력할 수 있습니다.

SELECT FIRST_NAME, LAST_NAME, SALARY FROM EMPLOYEES WHERE SALARY = 6500 OR SALARY = 7700 OR SALARY = 13000; 
SELECT FIRST_NAME, LAST_NAME, SALARY FROM EMPLOYEES WHERE SALARY IN(6500,7700,13000); 

 

LIKE

해당 단어가 속해 있는 목록을 출력할 수 있습니다.

SELECT FIRST_NAME, LAST_NAME FROM EMPLOYEES WHERE FIRST_NAME LIKE 'D%'; --대분자 D 로 시작하는 목록을 출력합니다. 
SELECT FIRST_NAME, LAST_NAME FROM EMPLOYEES WHERE FIRST_NAME LIKE '%d';  -- 마지막 글자가 d인 목록을 출력합니다.
SELECT FIRST_NAME, LAST_NAME FROM EMPLOYEES WHERE FIRST_NAME LIKE '_a%';  -- 두번째 글자가 a인 목록을 출력합니다.
SELECT FIRST_NAME, LAST_NAME FROM EMPLOYEES WHERE FIRST_NAME LIKE '__a%';  -- 세번째 글자가 a인 목록을 출력합니다.

NULL

해당 필드가 NULL 인지 아닌지 확인 할 수 있습니다.

SELECT FIRST_NAME, LAST_NAME, COMMISSION_PCT FROM EMPLOYEES WHERE COMMISSION_PCT IS NULL; 
SELECT FIRST_NAME, LAST_NAME, COMMISSION_PCT FROM EMPLOYEES WHERE COMMISSION_PCT IS NOT NULL; 

NOT 

조건에 맞지 않는다고 NOT을 선언합니다.

SELECT FIRST_NAME, LAST_NAME, JOB_ID, DEPARTMENT_ID FROM EMPLOYEES WHERE NOT(DEPARTMENT_ID = 50); 
SELECT FIRST_NAME, LAST_NAME, JOB_ID, DEPARTMENT_ID FROM EMPLOYEES WHERE DEPARTMENT_ID <> 50;