티스토리 뷰

DataBase

데이터베이스, Oracle , SELECT

Bong Gu 2020. 10. 14. 17:58
728x90


DB

KOSTA DAY20

DataBase

데이터베이스

서로 연관성을 가지며, 중복없이 지속적으로 유지 관리해야 할 유용한 데이터들의 집합

  • 데이터 베이스 이전에 데이터 저장을 위해서 파일시스템을 사용했으나, 많은 문제점이 있었다.
    • 중복 데이터 저장 문제 발생
    • 대용량 데이터 관리 역부족
    • 데이터 공유 어려움 (다중 사용자)
    • 보안 취약
  • 상기와 같은 문제점을 극복하고 대량의 데이터를 체계적으로 저장 및 관리하기위해 만들어졌다.

DBMS

Database Management System(데이터베이스 관리시스템)
대용량 데이터를 쉽게 저장하고, 효율적으로 CRUD(Create Read Update Delete)할 수 있는 환경을 제공해주는 소프트웨어

  • 대표적인 DBMS로는 Oracle, mySQL, MS-SQL, Informix, DB2가 있다.

관계형 DBMS

DB

  • 가장대표적인 DBMS로 실세계 데이터들을 2차원적인 표(table)형식으로 표현
  • 데이터 무결성, 트래잭션 처리 등 기본적 기능이 우수
  • 질의어(Query Language)를 사용한 데이터 접근
  • 정형화된 DATA를 다룸
  • 비정형화된 DATA는 No-SQL에서 다룸(빅데이터에서 사용)


Oracle

가장 대표적인 관계형 DBMS중의 하나이다.(회사명 과 DBMS 제품명 동일)

DB

KOSTA 교육 중에는 무료 버젼인 XE버젼을 사용 할 것이다.

Oracle xe 설치 및 데이터 접속/설

  • windows : medium 최용락

  • macOS기준 (참고블로그 : 맥(osx)에서 oracle DB 사용하기)

    • docker 가입 및 설치
    • sql developer 다운로드
    • 도커허브를 통해서 원하는 프로그램을 검색한다.(oracle12c)

    DB

    docker pull sath89/oracle-12c
    • 위의 명령어를 입력한다.
    docker run --name oracle12c -d -p 8080:8080 -p 1521:1521 -v ~/my/oracle/data:/u01/app/oracle sath89/oracle-12c
    • -v옵션을 주어 저장될 위치를 설정해준다. (-v옵션이 없을경우, 컨테이너를 중지하는순간 데이터가 삭제 된다.)
      데이터는 ‘~/my/oracle/data'경로에 저장된다.
    docker rm oracle12c
    • 위의 명령어는 컨테이너를 삭제하는 명령어이다.(컨테이너 저장으로 인한 오류 발생 시, 삭제 후 다시 진행요함)
    docker logs -f  oracle12c
    • 위의 명령어를 입력할 시, 로그를 출력하여 초기화 진행상황을 알 수 있다. 100% 완료 될때까지 기다리기.
    • 터미널 재시작
  • sql 접속

    • docker exec -it oracle12c sqlplus
      ID : system
      PW : oracle
  • sql developer 계정 생성
    사용자이름 : system
    pw : oracle

  • kosta192 계정 생성
    create user kosta192 identified by 1234 conn sys as sysdba (pw : oracle) grant connect, resource, dba to kosta192; conn kosta 192/1234

  • scott 계정확인
    conn sys as sysdba; //(pw : oracle) SELECT username, account_status FROM dba_users WHERE username='SCOTT';

  • scott계정 잠금해제 (참고블로그 : Oracle 에서 scott 계정 락해제 방법)

    alter user scott account unlock;
    ALTER user scott IDENTIFIED BY tiger;



SELECT

DB

  • employees 테이블의 전체 데이터를 불러오기
SELECT * FROM employees
  • 중복된 데이터 제거
SELECT DISTINCT job_id FROM employees;
  • 정렬 묶음 검색(ORDER BY 절)
SELECT ENO, ENAME, SAL FROM EMP
ORDER BY SAL DESC, ENO;

DB

  • 조건에 맞는 일부데이터(ROW) 불러오기 (WHERE절)
SELECT DEMPLOYEE_ID, LAST_NAME, HIRE_DATE FROM EMPLOYEES
WHERE LAST NAME = ‘King’;
  • BETWEEN AND 연산자
SELECT employee_id, last_name, salary FROM employees
where salary BETWEEN 5000 AND 10000;
  • OR 연산자
SELECT employee_id, last_name, job_id FROM employees
WHERE job_id = ‘FI_MGR’ OR job_id = ‘FI_ACCOUNT’;
  • IN연산자
SELECT employee_id, last_name, job_id FROM employees
WHERE job_id IN (‘FI_MGR’, ‘FI_ACCOUNT’;
  • NOT 연산자
SELECT department_id, department_name FROM departements
WHERE NOT department_id = 10;

SELECT department_id, department_name FROM departements
WHERE department_id <> 10;
  • IS NOT NULL 연산자
SELECT employee_id, last_name, commission_pct FROM employees
WHERE commission_pct IS NOT NULL;

DB

  • LIKE 연산자 (%연산자와 함께 잘사용)
    • ‘김%’ = ‘김’으로 시작하는 모든 문자열
    • ‘%과% = ‘과’로끝나는 모든 문자열
    • ‘%김%’ = ‘김’이라는 문자를 포함하는 모든 문자열
    • ‘화_’ =’화’로 시작하는 2글자 문자열
    • ’ = ‘등’이 가운데 들어간 3글자 문자열
  • 그룹함수
    • sum(), avg(), max(), count()
    • SELECT sum(salary) FROM employees; =인건비 총합
  • GROUP BY절
    • 부서별 평균 급여를 검색하라.
      SELECT department_id, avg(salary) FROM employees GROUP BY department_id; GROUP BY 절 사용시 컬럼값은 그룹함수 및 GROUP BY절 인자만 들어갈 수 있다.


728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday