데이터베이스(Database)
데이터 : 관찰의 결과로 나타난 정량적/정성적인 실제 값
정보 : 데이터에 의미를 부여한 것
데이터를 정보화하는 작업이 중요하고, 이 작업을 쉽게 하기 위해 데이터베이스가 활용된다.
→ 데이터베이스 = 필요한 정보를 얻기 위해 논리적으로 연관된 데이터를 모아 구조적으로 통합해 놓은 것
데이터베이스 시스템(DBMS)은 데이터의 검색과 변경 작업을 주로 수행한다.
변경 = 시간에 따라 변하는 데이터 값을 데이터베이스에 반영하기 위해 수행하는 작업(삽입, 삭제, 수정 등)
오라클은 응용 프로그램과 실제 데이터를 연결해 주는 역할.
실제 데이터는 하드디스크에 저장되며,
데이터베이스 시스템을 통해 응용 프로그램이 데이터를 사용할 수 있게 된다.
데이터베이스의 특징
1. 실시간으로 접근이 가능하다.
2. 계속적인 변경이 일어나고, 최신화된다.
3. 동시 공유가 가능하다.
4. 내용을 참조한다.
자바, C언어같은 경우 실제 데이터값을 참조하는 게 아니라 주소를 참조하는데, 데이터베이스는 "실제 값"을 참조한다.
→ 중복 제거 및 데이터 관리가 쉬워 프로그램 개발에 용이하다.
데이터베이스 시스템은 데이터베이스 전용 언어인 SQL으로 조작한다.
SQL(Structured Query Language)의 종류
1) DQL (데이터 쿼리 언어, Data Query Language)
SELECT : 데이터 검색
SELECT * --필요한 데이터
FROM 데이터 저장 위치(table, view)
WHERE 조건절
GROUP BY 그룹 컬럼
HAVING 그룹 조건
ORDER BY 정렬(ASC|DESC)
2) DML(데이터 조작 언어, Data Manipulation Language)
INSERT : 데이터 추가
UPDATE : 데이터 수정
DELETE : 데이터 삭제
3) DDL(데이터 정의 언어, Data Definition Language)
[CREATE 생성]
-데이터 저장 공간(TABLE)
-가상의 저장 공간(VIEW)
-자동 증가되는 데이터(SEQUENCE)
-함수(PL/SQL : FUNCTION, PROCEDURE*, TRIGGER)
[ALTER 변경]
-추가(ADD)
-수정(MODIFY)
[DROP 삭제]
[TRUNCATE 잘라내기]
[RENAME 이름 변경]
데이터 정의 언어를 사용할 때는 제약조건이 필요하다!
ex) PRIMARY KEY, FOREIGN KEY, CHECK, UNIQUE
4) DCL(데이터 제어 언어, Data Control Language)
GRANT 권한 부여
REVOKE 권한 해제
5) TCL(트랜잭션 제어 언어, Transaction Control Language)
***오라클의 단점(비절차적 처리)
→ 여러 줄의 쿼리를 실행할 때, 중간에 에러가 발생해도 그 다음 단계를 실행해 버린다.
특히 UPDATE나 DELETE문은.. 데이터에 직접 관여하므로 개발자의 의도와 다르게 실행되면 치명적일 수 있다.
정상 처리를 할 땐 저장을 요청해야 하고, 비정상 처리를 할 땐 명령문을 취소해야 한다.
이런 것을 방지하기 위해 나온 것이 트랜잭션!
COMMIT ,REVOKE 등의 명령어가 있다.
<오라클을 사용하면서 주의할 점>
- 오라클은 문법에서 대소문자 구분이 없다.
- 단, 저장된 데이터는 대소문자를 구분한다.
- 테이블은 실제로 저장될 때 대문자로만 저장된다.
- 문장을 종료하면 반드시 ;(세미콜론)을 적어 주지만 자바에서는 사용하지 않는다. (오류 발생함)
간단한 예제들
--테이블 등록, 저장
CREATE TABLE test1(no NUMBER );
INSERT INTO test1 VALUES(1);
INSERT INTO test1 VALUES(2);
INSERT INTO test1 VALUES(3);
INSERT INTO test1 VALUES(4);
INSERT INTO test1 VALUES(5);
CREATE TABLE test2(no NUMBER);
INSERT INTO test2 VALUES(3);
INSERT INTO test2 VALUES(4);
INSERT INTO test2 VALUES(6);
INSERT INTO test2 VALUES(7);
INSERT INTO test2 VALUES(8);
INSERT INTO test2 VALUES(9);
INSERT INTO test2 VALUES(10);
COMMIT;
test1.no | test2.no |
1 | 3 |
2 | 4 |
3 | 6 |
4 | 7 |
5 | 8 |
9 | |
10 |
--UNION
--중복제거없이 두 테이블을 합쳐 가져옴
SELECT no FROM test1 UNION ALL SELECT no FROM test2;
--중복제거 후 두 테이블을 합쳐 가져옴
SELECT no FROM test1 UNION SELECT no FROM test2;
--겹치는 것만 가져옴
SELECT no FROM test1 INTERSECT SELECT no FROM tst2; --3,4
--차집함 (뺄샘이 아님, 중복된 것을 제거할 뿐)
SELECT no FROM test1 MINUS SELECT no FROM test2; --1,2,5
SELECT no FROM test2 MINUS SELECT no FROM test1; --6,7,8,9,10
--사원번호, 이름, 입사일, 급여, 성과급 검색 후 출력
select empno "사원번호", ename "이름", hiredate "입사일", job "직위", sal "급여" from emp;
--문자열 결합 후에 출력 -> 사원이름 님의 급여는 000입니다.
select ename||'님의 급여는 '''||sal||'''입니다' as "사원급여" from emp;
***
SQL Plus로 txt파일이나 sql파일을 직접 실행시킨 경우 코드에 포함된 한글을 인식하지 못하는 경우가 있다.
그럴 때 ORA-01756 가 발생하는데, 파일의 인코딩 방법을 UTF-8에서 ANSI로 바꿔 저장하면 정상적으로 작동한다.
매번 파일 새로 저장하는것보다 캐릭터셋을 바꿔 주면 되긴 한데.. 그건 여기 참고.
한글을 인식하지 못한 게 아니라면?
→ 작은따옴표('), 큰따옴표("), 주석처리(/**/) 등이 제대로 완료되지 않은 경우이거나, 오타가 있을 수 있다.
'부트캠프(END) > Oracle' 카테고리의 다른 글
NVL, LIKE, ORDER BY + JDBC예제 (0) | 2022.06.20 |
---|---|
JDBC 맛보기 (0) | 2022.06.15 |
Oracle 설치 및 세팅(Windows x64) (0) | 2022.06.15 |