SELECT 컬럼명(단일 or 복수) FROM 테이블이름;
NULL : “데이터가 비어있다”라는 의미이며 공백과 숫자 0 은 다른 의미
ALIAS or AS를 활용하여 조회 시 테이블 or 컬럼명에 다른 이름 붙여서 사용
Oracle SQL 문자열 추가 : 컬러명 || 컬럼명
-- 한줄 주석
/*
여러줄 주석 */
/* employees에 있는 모든 데이터를 선택
SELECT 컬럼명(여러개 가능) FROM 테이블 이름; */
SELECT
*
FROM
employees;
SELECT
employee_id,
first_name,
last_name
FROM
employees;
--특정 컬럼들의 이름을 적어 세부적으로 조회가능
SELECT
employee_id,
first_name,
last_name,
salary,
salary + salary * 0.1
FROM
employees;
--컬럼을 조회하는 위치에서 사칙연산 가능
SELECT
department_id,
commission_pct
FROM
employees;
--null : '데이터가 없다'는 뜻이며 숫자 0이나 공백이랑은 다른 것이고 '데이터가 비어있다'라는 뜻을 말함
SELECT
first_name AS 이름,
last_name AS 성,
salary AS 급여
FROM
employees;
--alias or as를 통해 조회할 때 컬럼 or 테이블 명칭을 다른이름으로 붙여서 조회할 수 있음
/* sql에서는 문자열을 연결할 때 ||을 사용하며
'사용하여 새로운 문자열을 추가할 수 있음 */
SELECT
first_name
|| ' '
|| last_name
|| '''s salary is $'
|| salary AS 급여내역
FROM
employees;
SELECT DISTINCT
department_id
FROM
employees;
--DISTINCT : 조회할 때 중복을 제거하여 출력
/* ROWNUM ROWID
(중요)ROWNUM : Query에 의해 반환되는 행 번호 출력
ROWID : DB에서 행의 주소값을 반환 */
SELECT
ROWNUM,
ROWID,
employee_id
FROM
employees;
SELECT
salary
FROM
employees
WHERE
department_id = 80;
SELECT
job_id,
SUM(salary),
AVG(salary)
FROM
employees
GROUP BY (
job_id
)
ORDER BY
AVG(salary) DESC;
-- ctrl + f7을 누르면 줄개행으로 가독성있는 SQL구문 작성 가능
특정 조건을 걸어 조회
SELECT
salary
FROM
employees
WHERE
salary > 5000;
SELECT
first_name,
last_name,
job_id
FROM
employees
WHERE
job_id = 'IT_PROG';
SELECT
*
FROM
employees
WHERE
last_name = 'King';
SELECT
*
FROM
employees
WHERE
department_id = 90;
SELECT
*
FROM
employees
WHERE
salary >= 15000;
SELECT
*
FROM
employees
WHERE
hire_date = '04/01/30';
--데이터 행 제한 (BETWEEN, IN, LIKE)
SELECT
*
FROM
employees
WHERE
salary BETWEEN 15000 AND 20000;
SELECT
*
FROM
employees
WHERE
hire_date BETWEEN '03/01/01' AND '03/12/31';
--IN연산자의 사용 (특정 값들과 비교할 때 사용)
SELECT
*
FROM
employees
WHERE
manager_id IN ( 100, 101, 102 );
SELECT
*
FROM
employees
WHERE
job_id IN ( 'IT_PROG', 'AD_VP' );
/*LIEK 연산자
%는 뭐든, _는 데이터의 위치를 찾아낼 때 */
SELECT
first_name,
hire_date
FROM
employees
WHERE
hire_date LIKE '03%';
--hire_date가 03으로 시작하는 것 모든 것 조회
SELECT
first_name,
hire_date
FROM
employees
WHERE
hire_date LIKE '%15';
--hire_date가 15로 끝나는 것 모든 것 조회
SELECT
first_name,
hire_date
FROM
employees
WHERE
hire_date LIKE '%05%';
--hire_date가 앞 뒤가 05가 있는 모든 것 조회
SELECT
first_name,
hire_date
FROM
employees
WHERE
hire_date LIKE '___05%';
--4,5번째에서 05로 시작하고 이후 뒤에는 상관 X, 여기서는 5월로 시작하는 것 조회
--IS NULL (null값을 찾는 것)
SELECT
*
FROM
employees
WHERE
manager_id IS NULL;
-- manager_id가 null인 것을 조회
SELECT
*
FROM
employees
WHERE
commission_pct IS NULL;
-- commission_pct가 null인 것을 조회
SELECT
*
FROM
employees
WHERE
commission_pct IS NOT NULL;
-- commission_pct가 null인 아닌 것을 조회
-- AND, OR
-- AND가 OR 보다 연산순서가 우선
SELECT
*
FROM
employees
WHERE
job_id = 'IT_PROG'
OR job_id = 'FI_MGR'
AND salary >= 6000;
-- IT_PROG 이거나 FI_MGR인 사람의 연봉이 6000이상인 사람을 조회하기 때문에 6000이상이 아닌 사람도 조회
-- AND가 OR보다 연산순서가 높으므로 job_id='FI_MGR'과 salary>=6000 먼저 수행한 값을 job_id='IT_PROG' 값과 연산
SELECT
*
FROM
employees
WHERE
( job_id = 'IT_PROG'
OR job_id = 'FI_MGR' )
AND salary >= 6000;
-- 연산순서 : salary가 6000이상으로 거르고 job_id가 FI_MGR이거나 IT_PROG이거나
SELECT 구문의 가장 마지막에 배치하며 alias로도 정렬 가능
ASC(오름차순, dafault값) DESC(내림차순)
ORDER BY ~~~ ASC or DESC;
-- 데이터 정렬 (SELECT 구문의 가장 마지막에 배치)
-- ASC(오름차순 정렬, 기본값) DESC(내림차순 정렬)
SELECT
*
FROM
employees
ORDER BY
hire_data ASC;
SELECT
*
FROM
employees
WHERE
job_id = 'IT_PROG'
ORDER BY
first_name ASC;
--직업아이디가 IT_PROG인 사람을 first_name을 A부터 차근 차근 내려가도록 정렬
SELECT
*
FROM
employees
WHERE
salary >= 5000
ORDER BY
employee_id DESC;
--연봉이 5천이 넘는 사람 중 사원번호가 큰 값부터 내려가도록 정렬
SELECT
first_name,
salary * 12 AS 연봉
FROM
employees
ORDER BY
연봉 DESC;
-- 1. 모든 사원의 사원번호, 이름, 입사일, 급여를 출력하세요.
SELECT
employee_id,
first_name,
hire_date
FROM
employees;
-- 2. 모든 사원의 이름과 성을 붙여 출력하세요. 열 별칭은 name으로 하세요.
SELECT
first_name
|| ' '
|| last_name AS name
FROM
employees;
-- 3. 50번 부서의 사원의 모든 정보를 출력하세요.
SELECT
*
FROM
employees
WHERE
department_id = 50;
-- 4. 50번 부서 사원의 이름, 부서번호, 직무아이디를 출력하세요.
SELECT
first_name,
department_id,
job_id
FROM
employees
WHERE
department_id = 50;
-- 5. 모든 사원의 이름, 급여 그리고 300달러 인상된 급여를 출력하세요.
SELECT
first_name,
salary,
salary + 300
FROM
employees;
-- 6. 급여가 10000보다 큰 사원의 이름과 급여를 출력하세요.
SELECT
first_name,
salary
FROM
employees
WHERE
salary > 10000;
-- 7. 보너스를 받는 사원의 이름과 직무, 보너스율을 출력하세요.
SELECT
first_name,
job_id,
commission_pct
FROM
employees
WHERE
commission_pct IS NOT NULL;
-- 8. 2003년도 입사한 사원의 이름과 입사일 그리고 급여를 출력하세요.
SELECT
first_name,
hire_date,
salary
FROM
employees
WHERE
hire_date BETWEEN ( '03/01/01' ) AND ( '03/12/31' );
-- 9. 2003년도 입사한 사원의 이름과 입사일 그리고 급여를 출력하세요.
SELECT
first_name,
hire_date,
salary
FROM
employees
WHERE
hire_date LIKE ( '03%' );
-- 10. 모든 사원의 이름과 급여를 급여가 많은 사원부터 적은 사원 순서로 출력하세요.
SELECT
first_name,
salary
FROM
employees
ORDER BY
salary DESC;
-- 11. 위 질의를 60번 부서의 사원에 대해서만 질의하세요
SELECT
first_name,
salary
FROM
employees
WHERE
department_id = 60
ORDER BY
salary DESC;
-- 12. 직무아이디가 IT_PROG 이거나 SA_MAN인 사원의 이름과 직무 아이디를 출력하세요.
SELECT
first_name,
job_id
FROM
employees
WHERE
job_id = 'IT_PROG'
OR job_id = 'SA_MAN';
SELECT
first_name,
job_id
FROM
employees
WHERE
job_id IN ( 'IT_PROG', 'SA_MAN' );
-- 13.Steven king 사원의 정보를 "Steven King 사원의 급여는 24000달러 입니다" 형식으로 출력하세요
SELECT
first_name
|| ' '
|| last_name
|| '사원의 급여는'
|| salary
|| '달러입니다.' AS comments
FROM
employees
WHERE
first_name = 'Steven'
AND last_name = 'King';
-- 14. 매니저 직무에 해당하는 사원의 이름과 직무 아이디를 출력하세요.
SELECT
first_name,
job_id
FROM
employees
WHERE
job_id LIKE '___MAN';
SELECT
first_name,
job_id
FROM
employees
WHERE
job_id LIKE '%MAN';
-- 15.매니저 직무에 해당하는 사원의 이름과 직무 아이디를 직무아이디 순서대로 출력하세요.
SELECT
first_name,
job_id
FROM
employees
WHERE
job_id LIKE '___MAN'
ORDER BY
job_id ASC;
SELECT
first_name,
job_id
FROM
employees
WHERE
job_id LIKE '%MAN'
ORDER BY
job_id ASC;