네이버클라우드 캠프 5기/학습내용 정리

11. Oracle - Database

박세류 2023. 4. 12. 10:09

1. 데이터 베이스

1. 데이터(자료)와 인포메이션(정보)

  1. 자료 : 정제되지 않은 데이터
  2. 정보 : 정제되지 않은 데이터인 자료중에서 저희가 필요한 내용만 추출한 자료

2. 데이터 베이스

  1. 자료들의 집합. 사람들이 원하는 정보를 찾을 수 있는 기능들을 제공해준다.
  2. 자료들을 여러 사람이 공유해서 사용할 목적으로 관리하는 데이터 집합체
  3. 데이터 중복을 없애고 구조화하여 효율적으로 데이터를 관리할 수 있게 해준다.

3. DBMS(Data Base Management System)

  1. 데이터 베이스를 조작하고 관리할 수 있는 소프트웨어
  2. 데이터 베이스를 구축할 수 있도록 데이터 베이스 서버를 생성해주고 테이블 및 유저, 스키마 생성과 관리를 지원한다.
  3. 데이터의 저장, 수정, 삭제, 조회 기능들도 제공되며 SP(Stored Procedure) 등 호출해서 사용할 수 있는 함수(메소드) 같은 기능도 제공한다.
  4. 데이터를 백업하거나 저장해서 보관하는 것도 용이해지고 보안성도 높아져서 해킹에서도 자유롭다.
  5. ERD(Entity Relationship Diagram) : 테이블 설계 다이어그램을 그리는 기능도 제공. 논리 ERD와 물리 ERD 두 가지가 존재.
  6. DBMS의 종류 : Oracle, MySql, MongoDB, MariaDB, MsSql, Tibero...

4. RDB(Related Data Base)

  1. 관계형 데이터 베이스 : 데이터와 데이터 사이의 관계를 형성해주는 데이터 베이스. 데이터와 데이터 사이에 부모자식 관계를 형성하여 상위 데이터와 하위 데이터를 구분하여 사용할 수 있게 된다.
    ex) 회원(유저아이디, 유저네임, 가입일시.....) -> 게시판(게시글번호, 게시글제목, 게시글내용,... , 작성자아이디) : 회원으로 가입된 유저아이디만 게시글을 작성할 수 있도록 유저테이블과 게시판테이블의 관계을 생성한다.(ForeignKey)
  2. 관계형 데이터 베이스를 이용하면 ORM(Object Relation Mapping) 프레임워크를 사용할 때 테이블을 하나의 클래스로 정의하여 클래스들의 관계를 테이블들의 관계와 동일하게 매핑하여 사용할 수 있다.

5. DBMS의 구조

  1. CS(Client-Server) 프로그램의 구조를 갖는다.
  2. Oracle 21c xe, MySql Server 5.8, PostgreSql Server... 서버의 역할을 한다.
  3. SqlDeveloper, DBeaver, Toad, MySql Workbench... 클라이언트의 역할을 한다.
  4. 서버 프로그램이 시작되면서 소켓을 생성하여 해당 포트로 접속 가능한 상태가 되면 클라이언트 프로그램에서 서버 프로그램에 접속하여 서버 프로그램의 자원들을 사용할 수 있는 프로그램의 형태
  5. 동일한 PC에 서버가 구동되고 있을 때는 호스트(아이피주소)는 localhost나 127.0.0.1로 사용할 수 있고 그외의 경우에는 서버 PC의 아이피주소를 사용해야 한다. 단, 서버PC에서 해당 포트의 방화벽을 해제해줘야 접속 가능하다. 포트포워딩을 설정하면 외부에서도 접속이 가능하다.

6. Oracle 초기 작업

  1. Cmd를 실행하고 sqlplus 입력
  2. 관리자 계정인 sys /as sysdba를 사용자이름으로 입력
  3. 비밀번호는 오라클 21c xe 설치할 때 지정한 비밀번호 입력
  4. 유저 생성
    • create user (c##: 오라클 12 이후 버전은 무조건 붙여줘야한다.)사용할아이디 identified by "비밀번호";
  5. 유저에 커넥션 권한을 주지 않으면 접속자체가 불가능(CREATE SESSION 권한이 없어서)
  6. 생성한 유저에 권한 부여
    • grant 권한1, 권한2, 권한3, ... to 유저아이디;
    • grant connect(DB 접속 권한), dba(관리자 권한), resource(자원사용 권한) to 유저아이디;
    • grant select, delete, insert, update on 테이블명 to 유저아이디; (해당 테이블에 대한 조회, 삭제, 저장, 수정 권한 부여)
    • grant all on 테이블명 to 유저아이디; (해당 테이블에 대한 모든 권한 부여)
    • grant all on 테이블명 to public; (해당 테이블에 대한 모든 권한을 모든 유저에게 부여)
  7. 권한을 삭제하는 명령
    • revoke 권한1, 권한2, 권한3 .... from 유저아이디;(해당 사용자로부터 지정한 권한을 삭제)
  8. 사용자 삭제 명령
    • drop user 사용자아이디;
  9. 사용자에게 부여된 역할 확인
    • select * from dba_role_privs
      where grantee = 사용자아이디(대문자);
  10. 역할에 부여된 권한목록 확인
    • select * sys_role_privs
      where role = 역할(CONNECT, DBA, RESOURCE....);

7. 조회 쿼리 작성요령

  1. 어떤 테이블에서 어떤 데이터를 가져와서 어떻게 보여줄건지 정하고 쿼리를 작성해야 한다.
    ex) 기말고사 성적을 조회하는데 학생이름과 과목이름을 동시에 조회하고 싶다.
    SCORE.SNO STUDENT.SNAME SCORE.CNO COURSE.CNAME SCORE.RESULT
  • SELECT SCORE.SNO
     , STUDENT.SNAME 
     , SCORE.CNO 
     , COURSE.CNAME 
     , SCORE.RESULT
    FROM SCORE
    INNER JOIN STUDENT ON SCORE.SNO = STUDENT.SNO
    INNER JOIN COURSE ON SCORE.CNO = COURSE.CNO;
  1. 조회 쿼리는 원하는 데이터들만 뽑아서 새로운 가상테이블을 만들어서 사용한다라고 생각.
반응형

'네이버클라우드 캠프 5기 > 학습내용 정리' 카테고리의 다른 글

13. ORACLE - Select  (0) 2023.04.13
12. Oracle - SQL  (0) 2023.04.12
10. JAVA - LamDa  (0) 2023.04.11
9. JAVA - MultiThread  (0) 2023.04.11
8. Java - Enum  (0) 2023.04.05