초록꼬마의 devlog
article thumbnail

2021.11.2(화)

🌿 환경 설정

  • Oracle, SQL developer 설치
    • Bootcamp로 설치한 Windows에서 Oracle 접속이 안 되어서,
    • 일단 학원 컴퓨터(Windows) 원격 접속해서 사용
    • 11월 중순 Parallels 구입해서 Windows 설치하고 Oracle 설치
  • 계정 생성 및 접속

🌿 SQL

  • 세미콜론 ; = 논리적인 문장의 끝 → 세미콜론이 나오기 전까지 논리적인 문장이 완성된 것이 아닌 바, 중간에 개행 들어가도 상관없음 → 처음에는 줄 바꿔서 적는 습관(+가독성 향상)
  • 명령어, 키워드, 테이블명, 컬럼명 대/소문자 구분 없으나, 대문자로 쓰는 버릇 들이기

🌱 SELECT 기본 문법

  • SELECT: 데이터를 조회하거나 검색할 때 사용되는 명령어
  • Result Set: SELECT 구문을 통해 조회된 데이터의 결과물; 조회된 행들의 집합
  • 컬럼 값을 통한 산술연산(+, -, /, *): 조회하고자 하는 컬럼들을 나열하는 SELECT절에 산술연산을 기술해서 결과 조회 가능
  • 산술연산 과정에서 null값이 존재할 경우 산술연산 결과(값)도 null이 됨 -> 연산 전 null값 처리 필요
  • 컬럼명에 별칭 지정하기 = 컬럼명 AS 별칭, 컬럼명 AS "별칭", 컬럼명 "별칭", 컬럼명 별칭 → 4가지 모두 결과는 동일(단, 별칭에 특수문자, 띄어쓰기가 포함될 경우 반드시 ""로 묶어서 표기해야 함)
  • 연결 연산자 ||: 여러 컬럼 값들을 마치 하나의 컬럼인 것처럼 연결시켜주는 연산자 + 컬럼과 리터럴(임의의 문자열) 연결 가능
  • DISTINCT: 조회하고자 하는 컬럼의 중복된 값을 딱 한 번씩만 조회할 때 해당 컬럼명 앞에 기술
SELECT DISTINCT NVL(DEPT_CODE, '없음') "부서명"
FROM EMPLOYEE;
ORDER BY "부서명";

✔️ where절

  • 조회하고자 하는 테이블에 특정 조건을 제시 → 그 조건을 만족하는 데이터만을 조회하고자 할 때 기술하는 구문
  • 실행순서: FROM절(테이블 찾아가서) → WHERE절(조건에 맞는 것들 골라서) → SELECT절(조회/가져옴) → ORDER BY(자료 가져와서 정렬)
  • 조건을 표현하기 위해 조건식에 다양한 연산자 사용 가능
  1. 비교 연산자
  2. 논리 연산자
  3. BETWEEN ~ AND ...
  4. LIKE(~처럼/같이) '특정 패턴': 비교하려는 컬럼 값이 내가 지정한 특정 패턴에 만족될 경우 조회
    • %: 0글자 이상, 깍두기가 없을 수도 있음(0글자 → '문자'만 있을 수 있음)
    • 비교대상컬럼명 LIKE '문자%'; 컬럼값 중에 '문자'로 시작되는 것 조회
    • 비교대상컬럼명 LIKE '%문자'; 컬럼값 중에 '문자'로 끝나는 것 조회
    • 비교대상컬럼명 LIKE '%문자%': 컬럼값 중에 '문자'가 포함되는 것 조회
    • _: 1글자
    • 비교대상컬럼명 LIKE '_문자': 해당 컬럼값 중에 '문자' 앞에 무조건 1글자가 있을 경우 조회
    • 비교대상컬럼명 LIKE '__문자': 해당 컬럼값 중에 '문자' 앞에 무조건 2글자가 있을 경우 조회
  5. IS (NOT) NULL
  6. IN: 비교대상 컬럼 값에 내가 제시한 목록들 중 일치하는 값이 있는지 ← 비교대상컬럼 IN (값, 값, 값, ...)

Oracle에서 연산자 우선순위
0. (): 괄호 안 먼저 연산

  1. 산술연산자
  2. 연결연산자
  3. 비교연산자
  4. IS (NOT) NULL, LIKE, (NOT) IN -- 우선순위가 같은 경우 왼쪽->오른쪽 처리
  5. (NOT) BETWEEN AND
  6. 논리연산자 NOT
  7. 논리연산자 AND
  8. 논리연산자 OR

✔️ order by절

  • 오름차순(ASC, 작은 것 → 큰 것, 생략 시 기본값) = 기본적으로 NULLS LAST

  • 내림차순(DESC, 큰 것 → 작은 것) = 기본적으로 NULLS FIRST

  • NULLS FIRST = NULL이 포함되어 있을 경우 앞으로 배치, 내림차순 시 기본값

  • NULLS LAST = NULL이 포함되어 있을 경우 뒤로 배치, 오름차순 시 기본값

📗 소감

  • 환경 설정이 제일 어렵다. 그래도 많이 겪을 수록 익숙해지고 두려움도 사라지니까 피하지 말고 즐기자!
  • select문을 만들어 가다보면 Excel로 자료 정리/분석했던 업무가 떠오르고, 내가 원하는 데이터가 딱 나오게 하는 것이 무척 재미있다

📗 homework:

-- 1번 문제: 직급이 'J2'이면서 200만원 이상 받는 직원이거나, 직급이 'J7'인 사원의 사번, 사원명, 직급코드, 급여 정보 조회하기
SELECT EMP_NO, EMP_NAME, JOB_CODE, SALARY
FROM EMPLOYEE
WHERE (JOB_CODE = 'J2' AND SALARY >= 2000000) OR JOB_CODE = 'J7';

-- 2번 문제: 직급이 'J7'이거나 'J2'이면서 급여를 200만원 이상 받는 직원의 사번, 사원명, 직급코드, 급여, 연봉 조회하기
SELECT EMP_NO, EMP_NAME, JOB_CODE, SALARY, SALARY * 12
FROM EMPLOYEE
WHERE JOB_CODE IN ('J7', 'J2') AND SALARY >= 2000000;