💡Oracle
오라클을 데이터베이스라고 부르는데, 이때 데이터베이스는 데이터의 집합을 말한다.
데이터를 관리하고, 운영하며 아무나 접속할 수 없도록 보안을 위한 시스템을 만들어두었다. 이를 데이터베이스 관리 시스템이라고 부른다.
오라클은 이 데이터베이스 관리 시스템(Database Management System) 중 하나이다.
오라클(DB + DBMS)은 데이터를 모아놓은 집합이기도 하면서 조작할 수 있는 기능까지 합쳐놓은 제품이다.
앞으로 오라클에 대해 ANSI-SQL(50~60%) + PL/SQL(20~30%) + 설계, 기타(10%) 비율로 다룰 예정이다.
Oracle 링크
- Backup Database
- Get Started
- Go TO Online Forum
- Read DOcumentation
- Register For Online Forum
- Restore Database
- Run SQL Command Line
- Start Database
- Stop Database
서비스(Service)
오라클을 사용자가 실행하지 않아도 이미 실행중이다.
작업관리자의 앱(현재 내 눈에 보이는 화면을 가지고 있는 프로그램), 백그라운드 프로세스(화면을 가지고 있지 않은 프로그램)를 살펴보면 백그라운드 프로세스에 오라클이 실행중이다.
백그라운드 프로세스는 서비스(Service)라고 부르는 게 일반적이며, 리눅스 쪽에서는 데몬(Daemon)으로 부른다.
즉, 오라클은 실행을 해도 눈에 보이지 않는 프로그램이다.
오라클 실행/종료/상태확인
오라클 실행/종료/상태확인를 할 때 Win + R > services.msc 로 프로그램을 실행할 수 있다.
실행된 창의 타이틀이 서비스이다. 이는 작업관리자의 백그라운드 프로세스이다.
- OracleServiceXe: 데이터베이스
- OracleXETNSLinstener: 리스너 (클라이언트 도구와 연결)
OracleServiceXe에 접속하는데 필요한 프로그램이 따로 있다. OracleServiceXe에 접속하려면 OracleXETNSListener가 실행되고 있어야 된다.
따라서 Oracle을 사용하려면 OracleServiceXE와 OracleXETNSLinstener는 항상 동시에 실행되고 있어야 한다.
OracleServiceXe을 더블 클릭하여 실행을 중지해 보자.
그러면 오라클을 자동 또는 수동으로 시작할 수 있다.
자동은 컴퓨터를 껐다 켰을 때도 자동으로 시작되도록 하는 것이고, 수동은 컴퓨터가 껐다 켜지면 자동으로 실행되지 않고 사용자가 실행해야 한다.
오라클을 사용하지 않을 때에는 오라클을 멈춰두는 게 좋다. 오라클이 메모리를 많이 잡아먹기 때문이다.
오라클을 빠르게 켜고 끌 때, Start Database와 Stop Database를 이용할 수 있다.
Auto-commit 설정
SQL Developer는 Auto-commit이 꺼져 있지만, DBeaver는 Auto-commit이 켜져 있는 상태이다. 이를 꺼주어야 한다.
도구 > 환경설정 > 연결 > 연결 유형 > Auto-commit by default를 체크 해제한다.
그리고 Auto-Commit으로 설정되어 있는 것을 Manual Commit (Read committed)로 변경한다.
이제 Auto-commit이 되지 않기 때문에 sql developer에서 commit 명령어를 입력해주어야 적용이 된다.
💡SQL
SQL (Structured Query Language)은 구조화된 질의 언어이며, DBMS를 조작하기 위한 전용 언어이다. 그러나 꼭 오라클에서만 사용하는 전용 언어가 아니며, 모든 데이터베이스에서 사용된다.
SQL은 DBMS 제작사와 독립적이기도 하다. 이는 모든 관계형 데이터베이스에서 공통적으로 사용하기 위해 만들어진 언어임을 의미한다.
표준 SQL (ANSI-SQL)은 모든 DBMS에 적용 가능한 SQL을 의미하며, 제조자별 SQL은 특정 DBMS에 적용 가능한 SQL을 의미한다. 예로 들어 Oracle은 PL/SQL에 적용 가능하며, MS-SQL는 T-SQL에 적용 가능하다.
관계형 DBMS
데이터를 표 형식으로 저장/관리하며, SQL을 사용한다.
관계형 DBMS의 종류
- Oracle
- MS-SQL (Microsoft)
- MySQL
- MariaDB
- PostreSQL
- DB2 (IBM)
- SQLite (Mobile)
ANSI-SQL
DDL (Data Definition Language)
- CREATE: 생성
- DROP: 삭제
- ALTER: 수정
DDL은 데이터 정의어이다.
테이블, 뷰, 사용자, 인덱스 등의 객체들을 생성/수정/삭제하는 명령어로, 주로 구조를 만드는 역할을 한다.
데이터베이스 관리자, 데이터베이스 담당자, 프로그래머(일부)가 사용한다.
DML (Data Manipulation Language)
- a. INSERT: 추가(생성) > C
- b. SELECT: 조회(읽기) > R
- c. UPDATE: 수정 > U
- d. DELETE: 삭제 > D
DML은 데이터 조작어이다.
데이터를 CRUD 추가/수정/삭제/조회하는 명령어로, 사용 빈도가 가장 높다.
데이터베이스 관리자, 데이터베이스 담당자, 그리고 프로그래머가 가장 많이 쓴다.
DCL (Data Control Language)
- a. COMMIT
- b. ROLLBACK
- c. GRANT
- d. REVOKE
DCL은 데이터 제어어이다.
계정 관리, 보안 관리, 트랜잭션 관리 등을 하며, DDL과 DML에 속하지 않는 모든 기능을 한다.
데이터베이스 관리자, 데이터베이스 담당자, 프로그래머(일부)가 사용한다.
DQL (Data Query Language)
DML 중에서 SELECT문을 따로 부르는 표현이다.
SELECT문이 중요하기 때문에 따로 구분한다고 보면 된다.
TCL (Transaction Control Language)
DCL 중에서 COMMIT, ROLLBACK문을 따로 부르는 표현이다.
💡SQL Developer
- 개발자 <-> SQL(데이터베이스 클라이언트) <-> 오라클(데이터베이스 서버)
SQL Developer는 눈에 보이지 않는 오라클에 연결해서 조작하는 프로그램으로, 개발자와 오라클 사이의 중개인이라고 보면 된다.
SQL Developer는 데이터베이스 클라이언트 툴이라고 볼 수 있다.
새로만들기/데이터베이스 접속 선택
SQL을 실행하여 '새 데이터베이스 접속'을 클릭한다.
데이터베이스 이름을 적는 패턴이 있다.
현재는 localhost에 계정 이름을 적었고, 계정 생성에 관리자가 필요하므로 system을 입력하였다.
회사에서는 보통 내 컴퓨터에 오라클이 설치되어 있지 않으며, 오라클이 돌아가는 컴퓨터가 따로 있다.
그래서 회사에서 사용할 때에는 오라클이 설치되어 있는 도메인 주소 등을 적게 되는데, 현재 사용할 때에는 내가 직접 사용하므로 내 컴퓨터를 뜻하는 관용어인 localhost를 입력하였다.
localhost
IP Address는 컴퓨터의 주소로, 컴퓨터를 구분하는 주소이다.
어떤 컴퓨터에서도 127.0.0.1은 자기 자신을 뜻하는데, 여기에 별명을 붙인게 바로 localhost이다.
세부정보
세부정보의 호스트 이름에는 실제 컴퓨터의 주소(IP주소)를 적는다.
포트는 데이터가 오가는 통로이다. 오라클은 1521번을 잘 사용하지만, 이는 너무 유명한 번호이기 때문에 공부하는 사람들만 사용하며, 회사에서는 잘 사용하지 않는다.
SID는 Service ID라는 뜻이며, xe는 현재 사용하는 oracle 제품 이름이다.
한 대의 컴퓨터에 다른 종류의 오라클을 설치할 수 있는데, xe는 이름이 고정된 버전이어서 수정할 수 없다.
Enterprise 버전은 이름을 정해줄 수 있기 때문에 이와 같이 다른 버전의 오라클이 설치되어 있을 경우 작성한다.
저장을 하고 테스트를 하면 왼쪽 하단에 '상태: 성공'으로 변한 것을 알 수 있다.
이제 접속을 눌러 연결을 하도록 하자.
데이터베이스 접속
워크시트 창이 없을 경우 마우스 오른쪽 클릭 > SQL 워크시트 열기에서 창을 열 수 있다.
워크시트 창은 자유롭게 만들 수 있으며, 이를 하나의 파일로 인식하면 된다.
이를 물리적으로 저장할 수 있기 때문에 스크립트(파일)이라고 부르는 게 일반적이다.
워크시트와 동일한 이름의 다른 기능이 있기 때문에 스크립트라고 부르는 게 좋다.
저장을 할 때에는 *.sql 확장자로 저장을 한다. 그래서 다른 이름으로 sql 파일이라고도 한다.
환경설정
도구 > 환경설정 > 환경에서 인코딩을 UTF-8로 변경한다.
오라클은 1.0 ~ 8i 버전까지는 EUC-KR 버전을 썼지만, 9i ~ 현재 버전까지는 UTF-8을 사용하고 있다.
인코딩을 변환한 뒤, 코드편집기 > 글꼴에서 폰트를 변경한다.
Consolas
Consolas는 영문 폰트이기 때문에 한글 폰트를 넣지 않으면 깨지게 된다.
Consolas 폰트에 한글 폰트가 들어가 있는 폰트로 변경하도록 하자.
폰트를 변경하니 한글도 제대로 출력되는 것을 확인할 수 있다.
인코딩과 폰트를 변경하였다.
또는 D2Coding 폰트를 '모든 사용자용으로 설치'하여 사용하는 방법도 있다.
주석
-- 단일라인 주석
/*
다중라인 주석
*/
일반 계정 (hr 계정)
system으로 작업을 안 하는 이유는 권한이 너무 커서 실수를 하게 될 경우 피해가 크기 때문이다.
그래서 특정 업무에 대한 권한만 있는 계정인 일반 계정을 만들어 작업한다.
일반 계정은 관리자가 만들 수 있으며, 오라클에서 학습용 계정(일반 계정)을 제공하면서 샘플 데이터를 함께 제공하는 것을 사용할 수 있다.
오라클에서 제공하는 학습용 계정은 hr (human resource)이다. 그러나 아무리 공부하는 계정이라고 해도 hr의 비밀번호를 그대로 사용하지 않는다.
특정 계정의 비밀번호 변경
alter user 계정명 identified by 비밀번호;
실행할 코드 블럭을 잡고 Ctrl + Enter를 입력하면 실행이 된다.
비밀번호가 성공적으로 변경되었다.
하지만 비밀번호를 바꿨다고 해서 바로 계정을 사용할 수 있는 건 아니다.
현재 계정이 잠겨 있으므로 활성화 시켜 주어야 한다.
특정 계정 활성화/비활성화
alter user 계정명 account unlock;
alter user 계정명 account lock;
unlock 명령어를 입력해 주면 계정이 활성화된다.
이제 관리자 계정과 일반 계정으로 계정이 두 개 활성화 되었으므로 현재 세션이 어디인지를 잘 확인해 주어야 한다.
접속 해제
접속을 해제하고 싶을 경우 마우스 오른쪽 클릭 > 접속 클릭을 하면 된다.
접속을 해제하자 아이콘 모양이 변경된 것을 확인할 수 있다.