오라클 01) SQL 기본 문법, 정렬, 비트윈

hahahoho셍·2021년 5월 1일
0

오라클 SQL

목록 보기
1/10
--SQL
--DML : 데이터 조작어
-- 문자열 왼쪽정렬, 숫자 오른쪽 정렬
--조회
SELECT COUNTRY_NAME, COUNTRY_ID  
FROM COUNTRIES
WHERE COUNTRY_ID = 'CA';

SELECT * FROM JOBS
WHERE MIN_SALARY <= 5000
OR MAX_SALARY > 20000
ORDER BY MAX_SALARY ;  --오름차순

--실습) EMPLOYEES테이블의 사원 ID와 이름과 년봉 조회
-- 년봉이 10000이상인 사원만
-- 년봉의 내림차순으로 정렬

SELECT employee_id, FIRST_NAME , SALARY
FROM EMPLIYEES  
WHERE SALARY > 10000  --연봉 만 이상  --조건
ORDER BY SALARY DESC; --내림차순 정렬


-- EMPLOYEES테이블의 잡 아이디가 PROG인 사원들 조회
SELECT * FROM EMPLOYEES
WHERE JOB_ID = 'IT_PROG';  -- =같다면


-- EMPLOYEES 테이블의 EMPLOYEE_ID의 200 이상인 사원
-- EMPLOYEE_ID의 오름차순으로 정렬
SELECT * FROM EMPLOYEES
WHERE EMPLOYEE_ID > 200
ORDER BY EMPLOYEE_ID;  --오름차순

--해석
SELECT * 
FROM EMPLOYEES
WHERE EMPLOYEE_ID >= 200
ORDER BY EMPLOYEE_ID;  --오름차순


-- EMPLOYEES 테이블의 EMPLOYEE_ID,  HIRE_DATE 조회
-- 셀랙트를 쓸때 FROM은 필수
-- TO_CHAR()함수를 이용하여 날짜 포맷 변경 (문자열로 들어옴)
-- 2005년 1월 1일 이후 입사,  SALARY가 8000 이하 인 사원

SELECT EMPLOYEE_ID, TO_CHAR(HIRE_DATE,'YYYY-MM-DD') 
FROM EMPLOYEES
WHERE HIRE_DATE > '2005-01-01'  --문자열로 입력해도 알아서 불러옴
AND SALARY <= 8000 ; --WHERE 조건문 이후 그리고(AND)로 연속 조건문


-- EMPLOYEES 데이블의 EMPLOYEE_ID, MANAGER_ID 조회
-- MANAGER_ID가 147번 인 사원
SELECT EMPLOYEE_ID, MANAGER_ID
FROM EMPLOYEES
WHERE MANAGER_ID = 147;


--테이블 구조 확인
DESC EMPLOYEES; 


-- EMPLOYEES 데이블의 MANAGER_ID  147번인 사원의 수
-- COUNT(*) : 집계 함수, 건수   (행의 수가 몇개인지 알려줌)
SELECT COUNT(*) AS CNT  -- CNT라는 필드명을 만들어줌
FROM EMPLOYEES
WHERE MANAGER_ID = 147;


-- EMPLOYEES 데이블의 SALARY가 10000 이상 이거나 5000 이하인 사원의 수
SELECT COUNT(*) SAL  -- SAL라는 필드명을 만들어줌 / AS 생략 가능
FROM EMPLOYEES
WHERE SALARY >= 10000
OR SALARY <= 5000;


-- EMPLOYEES 데이블의 JOB_ID가 IT_PROG인 SALARY의 합계, 사원의 수, 평균, 월급이 가장 큰 월급, 가장 작은 월급
-- SUM : 집계함수 : 합계, AVG (평균) , MAX(최대값), MIN(최소값)
--평균 구하는 2가지 방법 : SUM(SALARY) / COUNT(*) , AVG (SALARY)
SELECT SUM(SALARY) , COUNT(*) , SUM(SALARY) / COUNT(*) , AVG (SALARY) , MAX(salary), MIN(salary)
FROM EMPLOYEES
WHERE JOB_ID = 'IT_PROG';


--실습) DEPARTMENTS 테이블의 행의 개수
SELECT COUNT(*)
FROM DEPARTMENTS;

--실습) JOBS 테이블의 MIN_SLARY가 5000 미만인 수
SELECT COUNT(*)
FROM JOBS
WHERE MIN_SALARY <5000;

--실습) EMPLOYEES 테이블의 HIRE_DATE 가 '20050101' 이후이고 SALARY가 10000 이상 20000이하인 사원의 수
SELECT COUNT(*)
FROM EMPLOYEES
WHERE HIRE_DATE < '20050101'
AND SALARY BETWEEN 10000 AND 20000;  --BETWEEN 사이값


-- EMPLOYEES 테이블에서 EMPLOYEE_ID, JOB_ID 조회 이후
-- JOB_ID 가 'IT_PROG'인 사원의 수
--그룹을 지음 으로서 카운트와 함께 사용
SELECT JOB_ID, COUNT(*) CNT
FROM EMPLOYEES
WHERE JOB_ID LIKE 'S%'  -- 라이크 조건문 (S로 시작하는)
GROUP BY JOB_ID  --그룹을 만들어야만 카운트 앞에 넣을 수 있다.
HAVING COUNT(*) >= 5  -- 그룹바이의 결과에 대한 조건문  (여기는 CNT 안됨)
ORDER BY CNT;



--데이터 읽는 순서
SELECT JOB_ID, COUNT(*) CNT  --4, 이름 변경 6번
FROM EMPLOYEES  --1번
WHERE JOB_ID LIKE 'S%' --2번
GROUP BY JOB_ID  --3번
HAVING COUNT(*) >= 5  --5번
ORDER BY CNT;  --7번
profile
그냥 공부 한거 적는 벨로그 하하하핳ㅎ하하하핳하ㅏ

0개의 댓글