0115. 데이터베이스 구현 TEST

CHOISUJIN·2023년 1월 15일
0
post-thumbnail

☑ Database

<정의>
1. 공용 데이터 : 공동으로 사용되는 데이터
2. 통합 데이터 : 중복 최소화
3. 저장 데이터 : 컴퓨터 저장장치에 저장된 데이터
4. 운영 데이터 : 조직의 목적을 위해 사용되는 데이터
--> 한 조직의 여러 응용 시스템들이 공용(shared)으로 사용하기 위해 최소 중복으로 통합(integrated), 저장(stored)된 운영(operational) 데이터의 집합

<특징>

  • 실시간 접근성
  • 계속적인 변화
  • 동시 공유
  • 내용에 따른 참조

☑ SQL(Structured Query Language)

  • DQL (데이터 조회 언어) : SELECT
  • DML (데이터 조작 언어) : INSERT, UPDATE, DELETE --> 데이터를 삽입, 변경, 삭제
  • DDL (데이터 정의 언어) : CREATE, ALTER, DROP --> 객체들을 생성, 변경, 제거
  • DCL (데이터 제어 언어) : GRANT, REVOKE
  • TCL (트랜잭션 제어 언어) : COMMIT, ROLLBACk

☑ 자료형

  • CHAR(크기) : 고정길이 문자 (최대 2000 BYTE)
  • VARCHAR2(크기) : 가변길이 문자 (최대 4000 BYTE)
  • NUMBER : 숫자 --> 크기 제시 X
  • DATE : 날짜 --> 크기 제시 X
  • CLOB : 가변길이 문자 (4GB)
  • BLOB :

☑ SELECT문 : 데이터 조회

SELECT 컬럼명 [,컬럼명, ...] | *
FROM 테이블명
WHERE 조건식;

☑ DML: INSERT문

INSERT INTO 테이블명
VALUES(값1, 값2, 값3, ...);

INSET INTO 테이블명(컬럼명, 컬럼명, ...)
VALUES(값1, 값2, ...);

☑ DML: UPDATE문

UPDATE 테이블명
SET 바꿀값
WHERE 조건식;

☑ DML: DELETE문

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

특정 문자의 위치 반환
INSTR(컬럼명 | 문자열, 찾을 문자[, 찾을 위치 시작값][, 빈도])

SELECT EMAIL, INSTR(EMAIL, '@', -1)
FROM EMPLOYEE

☑ SUBSTR

지정한 위치에서 지정한 길이만큼 문자 잘라내어 리턴
SUBSTR(컬럼명 | 문자열, 시작 위치 [, 잘라낼 길이])

SELECT EML_NAME, SUBSTA(EMAIL, 1, INSTA(EMAIL, '@', -1) -1)
FROM EMPLOYEE;

--주민등록번호에서 생년월일만 
SELECT SUBSTR(EMP_NO, 1, 7 )
FROM EMPLOYEE

☑ UPPER

전달받은 문자를 대문자로 변환하여 리턴

☑ SYSDATE

시스템에 저장된 현재 날짜 반환

☑ MONTH_BETWEEN

두 날짜를 전달받아 몇 개월 차이인지 계산하여 반환

SELECT MONTH_BETWEEN(SYSDATE, HIRE_DATE) AS "근무 개월 수"
FROM EMPLOYEE;

☑ TO_CHAR

날짜형 또는 숫자형을 문자형으로 변환

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; 

☑ TO_DATE

문자형 혹은 숫자형을 날짜형으로 변환

☑ TO_NUMBER

문자형을 숫자형으로 변환

☑ NVL

NULL인 컬럼값은 다른 값으로 변경
NVL(컬럼멍, 바꿀 값)
NVL(BONUS, 0)

☑ NVL2

NVL2(컬럼명, 바꿀값1, 바꿀값2)
값이 있으면 바꿀 값1, NULL이면 바꿀값2
NVL2(BONUS, O, X)

☑ DECODE

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;

☑ DDL: CREATE문

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로 접속!!
그래야 사용자 계정을 생성하고 이용할 수 있는 권한을 부여할 수 있다.

profile
매일매일 머리 터지는 중 ᕙ(•̀‸•́‶)ᕗ

0개의 댓글