오라클 데이터베이스(Oracle Database 또는 Oracle RDBMS)는 미국 오라클(Oracle)사의 관계형 데이터베이스 관리 시스템의 이름이다.
현재 유닉스 환경에서 가장 널리 사용되는 RDBMS이다.
검색이나 업데이트용 언어로는 국제표준화기구의 표준 구조화 조회 언어와 PL/SQL을 지원한다.
오라클은 MySQL이라는 경쟁 언어를 가지고 있으면서도 오라클RDBMS를 가지고 있다.
오라클에 비해 MySQL이 더 편한 부분이 많지만 , 일반기업에서 오라클을 많이 사용하고 있는 편이다.
오라클 언어 규칙은 MySQL과 크게 다르지는 않지만 약간의 차이점을 있다.
자료형
숫자
NUMBER(자리수) : 정수
NUMBER(자리수, 소수점자리수) : 실수
문자열
CHAR(크기)
VARCHAR2(크기)
시간,날짜
DATE
MySQL에서 시간,날짜를 현재시간으로 나타내는 now()에 해당하는 규칙은 sysdate를 사용하면 된다
오라클 테이블 생성 예시)
CREATE TABLE spring_board(
boardnum number(10),
boardtitle varchar2(1000) NOT NULL,
boardcontents varchar2(4000) NOT NULL,
regdate DATE DEFAULT sysdate,
CONSTRAINT board_pk PRIMARY KEY(boardnum)
);
PK를 선언 할 떄는 CONSTRAINT 뒤에 해당 pk이름을 추가로 선언해준다.
MySQL과 오라클의 차이점으로, MySQL에서는 auto_increment를 해당 컬럼 뒤에 추가 하면 데이터가 추가될때마다 인덱스가 하나씩 늘어날 수 있다.
하지만 오라클에서는 SEQUENCE를 생성해 주어야 한다.
CREATE SEQUENCE seq_board;
SEQUENCE를 선언하고 난 이후 데이터를 추가할때 시퀀스명.nextval을 함께 추가해주어야 한다.
INSERT INTO SPRING_BOARD (boardnum, boardtitle, BOARDCONTENTS)
VALUES (seq_board.nextval , '테스트 제목','테스트 내용');
이런방식으로 인덱스의 자동증가를 하기위해서는 MySQL에 비해서 조금 더 복잡한 과정을 거친다.
인덱스
데이터베이스 테이블을 하나의 책이라고 가정하면, 인덱스는 각 페이지 번호를 의미한다.
이를 통해서 원하는 내용을 위에서부터 혹은 반대로 찾아나가는 것을 스캔한다 라고 표현한다.
데이터베이스에 테이블을 만들 떄 PK를 부여하면 PK컬럼을 기준으로 PK이름과 동일한 인텍스가 생성되고 아는 실제 테이블의 데이터가 어디에 저장되어 있는지 (ROWID)를 찾을 수 있는 KEY값이다.
실제 테이블의 데이터가 저장된 각 행에는 ROWID라는 것이 존재하고 데이터베이스 내의 주소값 간은 의미를 가진다.
INDEX
TABLE
board_pk ROWID boardnum title ...
1 AAE80 1 ...
2 AAE81 2 ...
3 AAE82 513 ...
513 AAF10 3 ...
힌트(Hint) : /*+ hint구문 */
SELECT문에 실행하고 싶은 계획을 전달할 떄 사용하는 문법
잘못 작성되어도 실행할 떄는 무시되며 별도의 오류 는 발생하지 않는다.
/*+ 로 시작되며 */로 마친다. 또한 뒤에 컬럼명을 작성할 떄 , 를 사용하지 않는다.
인덱스 기준으로 검색을 해올 시 정렬이 따로 필요하지 않으므로 속도가 향상된다
오라클을 다운받기 위해서는 오라클 홈페이지에서 다운받으면 된다 (Windows / Linux)
https://www.oracle.com/kr/downloads/
- Database Enterprise/Standard Editions
눌러서 다운받은 후 oracle 홈페이지에서 회원가입을 한 후 설치과정을 진행하면 된다.
다만, MacOS에서는 다운받아서 사용할 수 없기 때문에 docker를 이용해야 하며, 이 부분은 다음 포스팅에서 설명할 예정이다.
'BACK-END' 카테고리의 다른 글
[Spring] 의존성 주입(Dependency Injection) (0) | 2022.03.21 |
---|---|
[Spring]스프링 프레임워크란 ? (0) | 2022.03.18 |
[JSP]Front-Controller 패턴 실전 흐름 파악(로그인 기능) (0) | 2022.02.15 |
[JSP]Front-Controller 패턴 (0) | 2022.02.09 |
[JSP]MVC2 모델 (0) | 2022.02.08 |