Oracle (2) - Table에 있는 Column의 예시, SELECT절을 포함한 실행순서, 연산자 모음
ㅁ DB 관련 정보
데이터의 무결성 = 정확성
테이블 = 행, 열(=컬럼)로 이루어진 데이터를 저장하는 공간 = 표 제목
COLUMN = 표의 열이름
DISK = 재료
CPU (PROCESS) = 작업도구
RAM = 작업 공간 = 메모리
ㅁ 테이블 내에 있는 컬럼 종류 ( PRIMARY KET 기본키 = 증복, null 값 없음 // FOREIGN KEY 참조키 >> 중복과 NULL값을 허용함 )
[ DEPARTMENT TABLE 부서 정보 ]
DEPARTMENT 부서
!!! DEPARTMENT_ID 부서 번호 (PK) !!!
DEPARTMENT_NAME 부서 이름
MANAGER_ID 부서관리자 사원번호
LOCATION_ID 지역번호
[ EMPLOYEES TABLE 사원 정보 ]
EMPLOYEES (부서에 근무하는 사원들)
EMPLOYEE_ID 사원번호 (PK)
HIRE_DATA 입사일
JOB_ID 업무
SALARY 급여
COMMISSION_PCT 보너스
MANAGER_ID 내 관리자의 사번(employee_id)
!!! DEPARTMENT_ID 내가 근무하는 부서번호 (FK) !!!
실행순서
--FROM(어디에서?)-> WHERE(컬럼 조건) -> GROUP BY(그룹핑) -> HAVING(그룹화 조건) -> SELECT(뭘 출력?) -> ORDER BY(정렬)
SELECT [distinct / all] column명 [Alias명]
--데이터 값을 출력/계산한다 (그룹화한 컬럼의 이름만 사용가능함) >> 따라서 산술계산이 가능 (+, -, *, /)
--(ex) select salary*12 from employees; 라고 출력하면 월급이 아닌 연봉이 출력됨
단 문자 데이터일때는 산술이 불가능함.
null 값에 산술을 하면 값이 null로 나오므로 null 값이 있는 컬럼은 산술하면 안됨
-- NULL 값에 대해 NVL("값", "지정값")으로 표현. NULL값을 출력할때 NULL이 아닌 지정값으로 대체하는 명령어
--조인이 생기면 from절에서 바꾼것처럼 앞에 다 붙여줘여함
--distinct >> 중복을 제거하는 키워드 (단 null값도 있으므로 숫자 셀때 재확인 필요함)
함수안에서 사용될때와 전체 중복제거일때의 구분이 필요함
--Alias (열 별칭 정의) >> select column alias from table
출력되는 열의 이름을 변경할때 사용함. 한 개의 컬럼에 한 개의 alias를 쓸 수 있음
(ex) SELECT last_name As name FROM employees;
이때 ""을 사용하면 대소문자, 특수문자(띄어쓰기등), 복수문장 등의 출력이 가능함.
FROM TABLE_NAME (어디에서?)
--대상 테이블을 참조하시오
WHERE COLUMN_NAME [ AND, OR, not // >=, <=, >, <, =, != // BETWEEN a and b, in( ), like ( ) ]
--컬럼에 대한 조건식 (원하는 값)
--전체 데이터를 GROUP으로 나누기 전에 대상 데이터가 아닌 것은 제거
--그룹화보다 먼저 실행되기 때문에 그룹화에 대한 조건 주면 안됨
--데이터를 테이블에 저장된 형식 그대로 써줘야함(대소문자 완벽히 구분해서)
--따라서 원하는 값이 날짜나 문자(입사일 등)일때는 ' ' 를 꼭 넣어줘야 한다.
--주의할점은 where 절로 불러올때 allias로 바꾼 이름을 바로 불러올 수 없다. (where이 먼저 실행되기 때문에)
GROUP BY
--행들을 소그룹화
HAVING (그룹화에 대한 조건절)
--그룹핑된 값의 조건에 맞는 것만을 출력
ORDER BY COLUMN_NAME [ ASC(오름차순=기본값) // DESC(내림차순) ]
--데이터 정렬, select 절에서 실행된 것들을 정렬해줌(그래서 select와 같은 이름으로 맞춰줘야 함)
--WHERE와 다르게 ALLIAS로 바꾼 명이 적용된다.
조건절들의 연산자 모음
--비교연산자
BETWEEN a(더 작은 값) AND b(더 큰 값) >> 두 값 사이를 실행시키는 연산자
IN >> 다수 데이터를 동시에 찾을때 쓰는 연산자로 ( = ) 과 비슷한데 여러개를 찾는 차이
ㄴ(ex) IN (A, B, C)
LIKE >> 문자패턴 일치하는것 찾기 (일부의 문자만 알고있을때 씀)
%는 잘 모르는 문자를 표시한것, _는 기억은 안나는데 뭔가 한글자가 있었다는 뜻
ㄴ(ex) 이름 중 한글자만 알 때 LIKE 'S%'(S로 시작함),LIKE '%S(S로 끝남)', LIKE '%S%(S를 포함함)'
'' 는 allias에서 쓰는 것!
IS NULL = 널 값 찾기 (보너스 안받는 사람 찾기 등등)
--논리 연산자
and 두 조건 모두 true인 값을 구할때
or 둘중 하나가 true인 값을 구할때
not 부정연산자, 즉 이것이 아닌 값을 구하라
ㄴ(ex) NOT IN, NOT BETWEEN a AND b, NOT LIKE, IS NOT NULL (이것만 NOT IS NULL이 아님!!!)
--연산자의 우선순의
AND 연산자가 OR 연산자보다 먼저 실행되므로 AND 조건식이 뒤에 있어도 그것부터 입력해야함
이게 싫으면 ( )로 OR 연산자 쪽을 묶어주면 AND보다 우선 실행됨