ORACLE SQL [1강~10강]

byeol·2022년 10월 6일
0

뉴렉처님의 Servlet/JSP 강의를 50강까지 듣다가
이후 강좌는 DB에 대한 개념이 필요하다고 하여
먼저 오라클 강의를 완강하려고 한다.

총 46강으로 구성되어져 있으며
복습 및 정리 겸 블로그에 기록한다.

1강 학습안내(SQL, DB, DBMS)

DB(Database)

컴퓨터는 네트워크가 연결되지 않은 상태에서 파일을 개별적으로 관리

중간에 상이한 데이터와 데이터 결함이 발생했다.

따라서 효과적으로
데이터를 각자 갖는 것보다는 한곳에서 모아서 데이터를 관리-> database

그러나
중복을 없애기 위해서 table들이 찢어져 있어서 다시 이어 붙이고 참조하는 과정이 필요

참조하는 방법은 아래와 같은데

그 중에서 우리는 Relatioan DBMS에 대해서 배운다.

그렇다면 RDBMS가 뭔가? NoSQL은 뭔가?

✔️RDBMS(Relational DataBase Management System)

  • 관계형 데이터베이스 관리 시스템

  • 대표적으로 오라클, MySQL, Access, MsSql 등이 있다.

  • 위의 예시처럼 데이터를 테이블 형태('스키마'라고 부른다)로 관리한다.

  • 각 테이블끼리는 ERD 방식을 통해 관계를 형성할 수 있다.

  • 장점: 단순하고 이해하기 쉬운 구조를 띈다.

    ( 각각의 테이블들이 담고 있는 정보는 명확하다 - 예를 들어, 위의 예시는 특정 학교의 학생들의 개인정보라고 이해할 수 있을 것이다.)

✔️ NoSQL(Non-Relational SQL)

  • 비관계형 데이터베이스 관리 시스템

  • cf) SQL(Structured Query Language) = 데이터베이스에 접근할 수 있는 데이터베이스의 하부 언어

  • 대표적으로 아파치 카산드라, 하둡, 몽고DB 등이 있다.

  • 장점: 대규모의 데이터를 유연하게 처리할 수 있으며, 설계가 단순하고 수평 확장에 용이하다.

앞으로 배울 내용은 RDBMS이며 후에 몽고DB를 통해서 NoSQL에 대해서 배워보자.

이렇게 참조하게 되면 3가지 문제가 발생한다.

  1. 동시성 : 동시에 접근해서 수정과 삭제의 충돌 등의 문제
  2. 성능 : 여럿이서 같이 써서 waiting 문제
  3. 보안 : 네트워크 기반 등의

-> 관리자를 하나 두자 , 관리자를 통해서 쓰자
이 관리시스템을 만드는 전문으로 하는 회사 : 오라클 등

직접 데이터를 쓰는 것이라 아니라 관리자에게 부탁해서 해보자 그 명령어를 우리는 쿼리라고 부른다.

제일 먼저 할 것은
어떤 데이터를 쓸것인지 밝히기-> DDL
데이터를 입력하고 -> DML
권한에 대하여 부여하는 일이다.-> DCL

2강 오라클 DBMS 설치


원격에 있는 서버
우리가 저걸 써야한다
직접 사용할 수 있도록 하는 사용자 인터페이스가 없다
따라서 클라이언트 프로그램이 있어야한다
오라클이 제공하는 2개의 유틸리티 Sqlplus와 sql developer가 있다.
클라이언트 프로그램은
1. 인증
2. 실행
3. 결과학인의 역할을 한다.

3강 SQL Developer 준비하기

4강 오라클 PDB 서버에 접속하기

오라클 서버의 데이터베이스가 2종류

운영체제에 가상 컴퓨터
윈도우즈 안에 윈도우즈
호스트의 자원을 같이 쓴다.

가상화 !
원래 옛날에는 DB가 하나
언제가부터 가상화된 DB가 등장
큰 DB안에 자원을 공유하면서 독립된 작은 가상화된 DB가 등장
Pluggable database

저희가 지난 시간은 그 밖을 관할하는 CDB에 접속
그 안에 있는 pluggable db에 접속할 수도 있다.

추가적으로 pluggable 을 설치할 수 있고
C처음에 들어가면
SEED DB가 있다 이는 가상의 데이터 베이스를 만들기 위한 템플릿이라고 볼 수 있는데
그 이유는 이 아이를 복사해서 생성해 나가기 때문이다.

오라클 처음 설치하면 연습용 PDB가 있다.
그 이름은 XEPDB1이 있다.

PDB$SEED 원본
앞으로 만들어진 녀석들의 원본

실제로 존재하는 pdb는 XEPDB! 하나의 가상 데이터베이스

지난 시간에 접속한 CDB와 완전 별개의 가상의 독립된 DB

✔️ XEPDB1에 접속하는 방법

각각 다른 데이터 베이스이다.

5강 수업용 사용자와 데이터베이스 생성하기

계정이 데이터베이스 설치하자마자 2개의 계정이 있다.

  • 하나는 관리자 계정
    • 일반적으로 DB를 관리하는 계정은 SYSTEM
      백업이나 스케줄링 등 큰 단위의 전체를 아우루는 것은 불가능
    • 이것은 SYS만이 가능
      DBA 기능을 가지고 있음 – 전체적인 admin이 가능
  • 하나는 우리가 쿼리를 연습할 수 있도록 하는 샘플용 데이터 베이스와 그에 대한 계정

DB : 데이터를 여러 파일에 저장
물리적으로 여러 파일을 가지고 있음-> 논리적으로 하나의 범주 내에 있는 데이터베이스에 저장

개념단위의 데이터베이스 구조 = 테이블
다루고자 하는 개념상의 데이터들을 테이블에 사상시켜서 관리

학생테이블의 데이터가 여러 개의 파일에 여러 개 나눠져 있음 => 그러나 어디에 저장되어 있는지는 우리가 알 필요없음

테이블스페이스 안에는 여러 개의 테이블 인텍스이 존재

이런 오브젝트들로 이뤄진 데이터베이스의 구조를 => 스키마

이런 구조의 dB를 준비해놓고
어떤 사용자에게 이 DB를 제공

앞에서 배웠다시피
두가지 종류의 DB 서버를 가지고 있다 PDB, CDB

전제척인 흐름 정리

사용자 계정만들기 & 테이블 스페이스 만들기 -> 우리는 PDB를 이용-> 지난 시간 만들어 놓은 서버에 접속해서 -> PDB 시스템 계정에 접속-> 여기에 테이블을 저장 -> 이 저장된 테이블은 물리적 저장소인 테이블 스페이스에 저장 & 논리적 저장소인 DB에 저장

자 먼저 테이블 스페이스를 만들자
물리적 저장소인데 어떻게 저장되는지 우리가 알 필요는 없으니
만드는 방법만 알자!!

어디에 이 파일을 저정할 것인지 경로도 설정

자 이제는 사용자 계정을 만들자.

이제 서버를 통해서 DB에 접속해보자

위에 가서 지금 사용자 계정 추가했다

새로운 계정을 가지고 새로운 데이터 베이스를 접속해보고 싶다.

※ 호스트 이름 -> IP ( localhost는 개인의 IP를 뜻함. ) , 외부에 있는 곳에 접속할 경우 외부 컴퓨터의 IP 주소를 써주면 된다.

※ 포트 번호 ->PC 내에서 고유하게 사용하는 로컬 주소

※ SID -> 원본 데이터의 이름 ( CDB는 XE 라는 이름으로 지정 되어 있다 ) , 돈 내고 설치하면, CDB의 이름을 지정할 수 있다

※ 서비스 이름 -> 복사한 데이터베이스 들의 별칭.

일단 내 궁금증에 하나의 DB에 다수의 서버를 만드는 이유
알아냈다 일단 우리는 오라클에서 만들어놓은 연습용 pdb를 이용하는데 여기에 데이터 베이스를 만들 수 있으며 우리는 각 사용자 계정에 맞는 서버를 가지고 있으며 하나의 DB에 여러 개의 서버를 만드는 이유는 다양한 권한을 가진 사용자들에게 각 서버를 제공하기 위함. 즉 권한 분할을 위해서 하나의 PCB에 여러 개의 서버를 만드는 것이다.

6강 MEMBER TABLE 생성하기


DML을 통해서 자료형과 칼럼명(속성명) 등을 설정한다.

7강 테이터 형식 #1(문자형식)


-Char : 고정 길이
-Varchar : 가변길이 , 500개 다 쓰는게 아니다 2개만 쓰면 498개를 반환
모든 자료형 varchar로 하면 될거 아닌가?
사실 반환하는게 아니라 구분자를 넣는다. 12,0000000000
4번째 데이터 11,2222,4444444,55555 : 따라서 검색할 때 가변길이의 구분자를 계속 새면서 가야한다 -> 검색이 느리다.
-NCHAR과 NVARCHAR은 무엇인가?
한글(유니코드)를 저정하기 위해서 CHAR과 VARCHAR을 이용할 경우 2배 자릿수를 준비해야한다.
EX ) 3글자 한글 CHAR(6) VARCHAR(6)
그러나 NCAHR,NVARCHAR은 글자수로 지정 따라서 더 단순하고 명확하게 데이터 입력
EX ) 3글자 한글 NCHAR(3) NVARCHAR(3)

바람직하지 않은 방식 2문자를 받겠다는
NCHAR(2) 공간이 훨씬 더 절약된다.

8강 SQL 데이터 형식 #2(숫자/날짜 형식)

  • 큰 문자열 -> CLOB
  • 유니코드를 이용한 커다란 데이터 ->NCLOB
  • LONG(옛날)-> 문자열

    시분초까지 TIMESTAMP

9강 테이블 수정하기

2가지 방법이 있다.

  1. ALTER문을 이용
  • ALTER TABLE 테이블명 MODIFY 속셩명 바꾸고자하는 내용'
  • ALTER TABLE 테이블명 DROP COLUMN 컬럼명 ;
  • ALTER TABLE 테이블명 EMAIL 형식 ;
  1. Sql Developer의 UI이용

10강 쿼리 연습을 위한 테이블 준비

profile
꾸준하게 Ready, Set, Go!

0개의 댓글