Oracle DataBase
최근 Oracle DB를 배울 수 있는 기회가 되어서 개념과 실습 정보를 기록하고자 한다.
환경구축
Oracle DB를 더 쉽게 사용할 수 있는 툴이 있겠지만, 주로 사용했고 사용해야하는 환경이 Eclipse였기 때문에 Eclipse EE를 사용하여 SQL을 공부했다.
Oracle Database 11g XE 버전으로 로컬에 DB를 설치했다. 개인 공부 용도로는 딱 충분한 버전
Oracle DB 11g xe를 다운받아 설치하고 보면 Command Prompt로 다음과 같이 환경설정을 해줘야 한다.
IN Command Prompt
-
sqlplus / as sysdba
- cmd에서 sysdba 라는 마스터 계정으로 접속
-
alter user hr identified by hr account unlock;
- hr이라는 계정을 unlock
-
conn hr/hr
- oracle DB에 접속한 상태에서 계정을 변경하는 명령어
-
sqlplus [계정명]/[계정패스워드][@
] | / [as {sysdba | sysoper | sysasm}] - sqlplus로 oracle 접속방법 공식
eclipse DB 연동 방법
오른쪽 상단의 javaEE 버튼으로 EE환경 접속하면 하단에 Data Source Explorer 라는 항목이 보인다. (잘 찾아보면 어딘가 있을거다.)
Database Connections에서 new 를 선택하여 새로운 SQL 연동
- 쭉쭉 넘어가면서 설치
- 중간에 JAR 선택하는 항목에서 기존 JAR 파일은 제거하고
C:\oraclexe\app\oracle\product\11.2.0\server\jdbc\lib
에 있는 JAR 파일을 ADD한다. - SID 항목으로 선택하고 xe라 작성
- finish하여 connection 완료
기본 개념
ERD
Entity Relationship Diagram
비즈니스 수행을 위해 다루어야 할 데이터를 파악하고 그 관계를 표현한 관계도를 말한다.
식별자 IDENTITY와 그 외 요소인 ATTRIBUTE로 이루어져 있다. 각 ENTITY와는 RELATIONSHIP이 형성된다.
RDBMS의 가장 기본이 되는 요소
‘부모-자식’ 관계라 하여 부모의 PK를 FK로 가지는 테이블을 자식이라 한다.
용어
PK : PRIMARY KEY
- 한 테이블에서 ROW를 식별할 수 있는 유일한 KEY
- 중복 불가, NULL 허용하지 않음, RELATIONSHIP을 가지고 있을 때 변경 불가
- Composite Key 가능 -> 하나 이상의 COLUMN 조합도 가능
- 테이블당 1개만 존재
FK : FOREIGN KEY
- PK와 연결되는 값이며 ‘자식’에 해당되는 테이블이 ‘부모’와 연결되는 COLUMN
- 다른 테이블의 기본키를 참조하는 컬럼을 말한다.
- 중복 가능하며 NULL이 허용된다. (FK != PK)
- 참조하고 있는 PK의 도메인 값과 같아야 한다.
- 필요에 따라 여러 FK를 가질 수 있다.
SQL : Structured Query Language
- 관계형 DB에서 데이터를 조회하거나 조작하기위한 언어
- 데이터를 찾는 방법이 아닌 조건을 기술하는 방식
- 세부 용어
- DDL : DATA DEFINITION LANGUAGE
- 데이터 정의 (CREATE, DROP, ALTER)
- DML : DATA MANIPULATION LANGUAGE
- 데이터 조작 (INSERT, UPDATE, DELETE)
- DCL : DATA CONTROL LANGUAGE
- 트랜잭션 제어 (COMMIT, ROLLBACK)
- SELECT : SELECT
- 데이터 조회
- DDL : DATA DEFINITION LANGUAGE
주요 DATATYPE
- NUMBER
- CHARACTER
- CHAR (고정길이, 최대 2000)
- 남는 공간은
공백
으로 채워지기 때문에 길이가 고정되어야 하는 값에만 써야 함
- 남는 공간은
- VARCHAR2(가변길이, 최대 4000)
- LONG(가변 문자 (최대 2GB, 한 테이블 당 1번만 쓸 수 있음))
- CHAR (고정길이, 최대 2000)
- DATE
- CHARACTER로도 취급할 수 있음
- 일자와 시간이 저장됨 (세기/년/월/일:시/분/초)
- 조회 시 기본 FORMAT : YY/MM/DD
날짜 연산 및 비교 가능
- 날짜 + 숫자 / 날짜 - 숫자 => (DATE) 며칠 전/후
- 날짜 - 날짜 => (NUMBER) 차이 일 수