<정의>
1. 공용 데이터 : 공동으로 사용되는 데이터
2. 통합 데이터 : 중복 최소화
3. 저장 데이터 : 컴퓨터 저장장치에 저장된 데이터
4. 운영 데이터 : 조직의 목적을 위해 사용되는 데이터
--> 한 조직의 여러 응용 시스템들이 공용(shared)으로 사용하기 위해 최소 중복으로 통합(integrated), 저장(stored)된 운영(operational) 데이터의 집합
<특징>
SELECT 컬럼명 [,컬럼명, ...] | *
FROM 테이블명
WHERE 조건식;
INSERT INTO 테이블명
VALUES(값1, 값2, 값3, ...);
INSET INTO 테이블명(컬럼명, 컬럼명, ...)
VALUES(값1, 값2, ...);
UPDATE 테이블명
SET 바꿀값
WHERE 조건식;
DELETE FROM 테이븖명
WHERE 조건식;
< LIKE >
-- EMAIL ID 중 ‘_’의 앞이 3자리인 직원 이름, 이메일 조회
SELECT EMp_NAME, EMAIL
FROM EMPLOYEE
WHERE EMAIL LIKE '___#_%' ESCAPE '#';
<NULL / IS NULL / IS NOT NULL>
< AND / OR >
AND가 OR보다 더 우선!
OR을 우선으로 처리하려면 ( )해줘야 함
특정 문자의 위치 반환
INSTR(컬럼명 | 문자열, 찾을 문자[, 찾을 위치 시작값][, 빈도])
SELECT EMAIL, INSTR(EMAIL, '@', -1)
FROM EMPLOYEE
지정한 위치에서 지정한 길이만큼 문자 잘라내어 리턴
SUBSTR(컬럼명 | 문자열, 시작 위치 [, 잘라낼 길이])
SELECT EML_NAME, SUBSTA(EMAIL, 1, INSTA(EMAIL, '@', -1) -1)
FROM EMPLOYEE;
--주민등록번호에서 생년월일만
SELECT SUBSTR(EMP_NO, 1, 7 )
FROM EMPLOYEE
전달받은 문자를 대문자로 변환하여 리턴
시스템에 저장된 현재 날짜 반환
두 날짜를 전달받아 몇 개월 차이인지 계산하여 반환
SELECT MONTH_BETWEEN(SYSDATE, HIRE_DATE) AS "근무 개월 수"
FROM EMPLOYEE;
날짜형 또는 숫자형을 문자형으로 변환

SELECT EMP_NAME,
TO_CHAR(HIRE_DATE, 'YYYY-MM-DD'),
TO_CHAR(HIRE_DATE, 'YY/MON, DAY, DY')
FROM EMPLOYEE;
'210505' --> 2021년 5월 5일로 형변환?
SELECT TO_CHAR(TO_DATE('210505', 'YYMMDD'),'YYYY"년" MM"월" DD"일"')
FROM DUAL;
문자형 혹은 숫자형을 날짜형으로 변환
문자형을 숫자형으로 변환
NULL인 컬럼값은 다른 값으로 변경
NVL(컬럼멍, 바꿀 값)
NVL(BONUS, 0)
NVL2(컬럼명, 바꿀값1, 바꿀값2)
값이 있으면 바꿀 값1, NULL이면 바꿀값2
NVL2(BONUS, O, X)
DECODE(계산식 | 컬럼명, 조건값1, 선택값1, 조건값2, 선택값2, ...., 아무것도 일치하지 않을 때 깂)
DECODE(SUBSTR(EMP_NO, 8, 1), '1', '남성', '2', '여성')
ELECT EMP_NAME AS 이름, JOB_CODE AS 직급코드, SALARY AS "이전 급여",
DECODE(JOB_CODE, 'J7', '20%', 'J6', '15%', 'J5', '10%', '5%')
AS 인상률 ,
DECODE(JOB_CODE, 'J7', SALARY * 1.2 ,'J6',SALARY * 1.15 ,
'J5',SALARY * 1.1 , SALARY * 1.05 ) AS "인상된 급여"
FROM EMPLOYEE ;
CASE WHEN 조건식 THEN 결과
WHEN 조건식 THEN 결과
ELSE 결과값
END
SELECT EMP_NAME, SALARY,
CASE WHEN SALARY >= 5000000 THEN '대'
WHEN SALARY >= 3000000 THEN '중'
ELSE '소'
END
FROM EMPLOYEE;
CREATE TABLE 테이블명 (
컬럼명 자료형(크기),
컬럼명 자료형(크기),
컬럼명 자료형(크기)
...
);
NOT NULL --> 컬럼레벨만
데이터에 NULL을 허용하지 않음
UNIQUE --> 컬럼 레벨 + 테이블 레벨
중복된 값을 허용하지 않음
PRIMARY KEY --> 컬럼 레벨 + 테이블 레벨
: 테이블에서 한 행의 정보를 찾기 위해 사용할 컬럼
--> NOT NULL + UNIQUE 제약조건 의미 : 중복되지 않는 값이 필수로 존재해야 한다
--> 식별자 역할 !!
FOREIGN KEY --> 컬럼 레벨 + 테이블 레벨
: 참조되는 테이블의 컬럼의 값이 존재하면 허용
CHECK
: 저장 가능한 데이터 값의 범위나 조건을 지정하여 설정한 값만 허용
ALTER SESSION SET "_ORACLE_SCRIPT" = TRUE;
CREATE USER kh IDENTIFIED BY kh1234;
GRANT RESOURSE, CONNECT TO kh;
ALTER USER kh DEFAULT TABLESPACE SYSTEM QUOTA UNLIMITED ON SYSTEM;
--> 일반 사용자 계정이 아닌 관리자 계정인 SYS AS SYSDBA로 접속!!
그래야 사용자 계정을 생성하고 이용할 수 있는 권한을 부여할 수 있다.