ORACLE DATEBASE 특징

 

oracle XE: 기업형, export edition(무료)

무료버전은 파티셔닝 안됨.

설치는 바이너리 방식과 인스톨 방식이 있는데 인스톨 방식은 제어판 또는 운영체제의 영향을 받기 쉽다.

ORACLE DB 설치는 인스톨 방식.

jdk 파일 확인해보면 dll 파일 확장자있음(윈도우용 설치 파일?? 함부로 못 연다)

jdk 1.8 버전까지가 개발자가 다 열어볼 수 있는 버전

listen : 요청을 받아들이는 것. 오라클은 1521


알면 좋은 데이터 타입

null

없는 상태. 모르는 데이터(unknown data)

연산을 할 때  null이 있으면 null 값이 나옴

 

날짜형 데이터

연월일시분

YYYY-MM-DD HH24:MI:SS

현재시간 확인

mysql mariadb now

oracle sysdate

 

VARCHAR, VARCHAR2, CHAR

varchar2(20byte) : 20바이트 들어가는 문자열 데이터

그냥 varchar는 바이너리.

varchar의 var은 가변적을 의미

char은 고정.


DDL, DML, DCL + TCL

 

DDL :  데이터 정의어(CREATE, DROP, ALTER)

create 뒤에 객체(유저, 테이블)를 넣어 생성

DML : 데이터 조작어(insert(c), select(r), update(u), delete(d)) : crud set

DCL : 데이터 제어어(GRANT, REVOKE)

 

DCL을 세부적으로 보자면

 

1. 권한

2. 트랙잭션(일련의 처리 과정) -> TCL : 트랜잭션 제어어(COMMIT, ROLLBACK)

일련의 처리과정(select->insert->…->…의 과정의 흐름. 이 과정이 잘못되면 올 스탑)

정상적으로 수행되면 COMMIT, 잘못되면 다시 처음으로 ROLLBACK

DDL은 낙장불입. 이미 만든 건 ROLLBACK 불가

 


실습

만든 테스트 테이블

CREATE TABLE TEST(UUID VARCHAR2(20), PW

VARCHAR2(20);

INSERT INTO TEST VALUES('KK', '11);

INSERT INTO TEST VALUES('KK', NULL);

커밋 단축키 : F11(COMMIT)

스키마: 뼈대 구조를 보는 것.

SQL: 데이터 핸들링 목적


CRUD(CREATE, READ, UPDATE, DELETE)

 

Insert

INSERT INTO 테이블명 VALUES ('문자', '123'); 
-- 컬럼 자료형이 숫자라면 오라클 옵티마이저가 ' '안에 숫자 넣어도 숫자로 인식해서 숫자로 넣어준다.--

특정 컬럼에만 값을 넣고 싶을 때

INSERT INTO 테이블명(COLUMN1, COLUMN2)

VALUES ('컬럼1 값', '컬럼 2값');

가시성 있게 쿼리 짜는 법

INSERT

INTO 테이블명(COLUMN1, COLUMN2)

VALUES ('컬럼1 값', '컬럼 2값');

 

select

SELECT * 또는 (컬럼 1, 컬럼2...)

FROM 테이블명;

 

조건에 해당하는 컬럼 조회(where 사용)

SELECT UPW, UID

FROM 테이블명

WHERE UPW = '123' AND UID = 'KIM';

 

update

UPDATE 테이블명

SET UPW = '123', UID = 'KIM';

-- AND OR 들어가는 건 WHERE문만!!!--

 

조건에 해당하는 컬럼만 업데이트

UPDATE 테이블명

SET UPW = '12'

WHERE UPW = '123'AND UID = 'KIM';

 

배치 권한은 담당자에게 있음

 

delete

DELETE 

FROM 테이블명

WHERE UPW = '123', UID = 'KIM';

회사에서 개발 서버를 따로 두는 이유.

실서버에선 개발자가 함부로 DB 명령어 입력 X

DBA만 가능.


DB 설계 과정에서 공백 데이터가 없어야 하는 컬럼의 경우 NOT NULL로 설정해야 한다.

날짜 데이터의 경우 날짜 값이 무조건 입력되어야 한다면 DEFAULT로 SYSDATE(MYSQL의 경우 NOW)