Oracle 기초 : 실전(1) Oracle Database 설치부터 간단한 db조회까지

codePark·2020년 6월 10일
2

Oracle

목록 보기
2/23

Oracle 설치

Oracle 홈페이지에서 2개의 파일을 다운로드 받는다.
  1. sql developer
    (https://www.oracle.com/tools/downloads/sqldev-v192-downloads.html)
  2. oracle database xe (Express Edition: 교육용 버전) (https://www.oracle.com/database/technologies/xe-downloads.html)

※ 주의! OS를 사용중인 사용자의 계정명이 한글로 설정된 경우 뻑이 나는 경우가 생긴다고 한다. 당장 설치 직후에는 문제가 없어도, 언젠가는 문제가 생길 가능성이 농후하니 반드시 영문명으로 된 계정을 사용하자.

  • 설치가 완료되면 윈도우키+R -> cmd 입력한 후 sqlplus 입력한 후 엔터 -> system 엔터 -> 설치 시 등록했던 비밀번호 (주: 아스타리스크를 포함한 비밀번호 표시가 전혀 되지 않는다. 하지만 입력 잘 되고 있는 것이니 걱정 말자.) 엔터. 여기까지 진행하면 이러한 화면이 뜬다.

  • 추가로 설치가 잘 되었는지 확인하는 방법이 있다: Taskmanager를 실행시켜 Services 항목에 OracleServiceXE, OracleXETNSListener 이 두가지 프로세스가 Running으로 표시되고 있다면 작업할 준비가 된 것이다. 만약 Running으로 표시되지 않거나 문제가 있는 경우 우클릭 -> stop -> start로 재시작 해주면 된다.

Oracle의 Datatype

  1. 문자형:
    1-1. 고정형: char(10): 10byte이하의 데이터를 입력하고, 크기는 무조건 10byte 취급. 단! 유일하게 oracle xe버전에서는 한글을 글자당 3byte 취급한다. (본래 2byte)* 최대 2천 byte까지
    1-2: 가변형: varchar2(10): 10byte이하, 취급 크기는 실제 입력된 데이터 크기와 동일. 최대 4천 byte까지. long의 경우 최대 2gb, clob의 경우 최대 4gb까지.

  2. 숫자형: number(표현 가능한 전체 자릿수(p), 소숫점 이하 자릿수(s)) p: precision, scale. 단, s를 음수로 처리하는 경우 소숫점 n자릿수 이상으로 반올림처리. 즉, s를 입력하지 않고 number(p)로 선언하는 경우 소숫점을 허용하지 않는다.

  3. 날짜형: 년/월/일 시/분/초. 1 단위의 산술 연산이 가능. ex. 날짜 +- 숫자 = 날짜. 날짜 - 날짜 = 숫자.
    TimeStamp: 년/월/일/시/분/초/millisecond
    sysdate: 현재 시각 정보를 가져오는 키워드

SQL의 처리 순서: FWGHSO

  1. from: 대상 테이블. 어디서 부터 조회할 것인지
  2. where: 조건절(condition). result set에 포함시킬 row를 필터링
  3. group by: groupping rows
  4. having: filtering group of rows
  5. select: 조회할 컬럼 지정
  6. order by: 행 사이의 정렬 지정

기초 코드(1): 유저 생성/권한 부여

show user; --현재 유저 표시
create user UserName --1. UserName명의 유저 생성,
identified by UserPassword --2. 유저 확인코드(패스워드) 설정
default tablespace TableSpaceName; --3. TableSpace명 설정

grant create session to UserName; --UserName에 데이터 생성권한 부여 and
grant connect to UserName; --UserName에 connect 권한 부여
or
grant resource to UserName; --UserName에 resource 권한 부여

기초 코드(2): 데이터 조회

select * -- = select all, 모든 섹션 조회
select * from (RowName/SectionName); --특정 섹션(행) 조회 설정
where (Condition1) and (Condition2) or (Condition3) --조회 조건문 입력
order by (TargetRowName/SectionName) asc(or desc); --정렬방식 설정

기초 코드(3): 데이터 입력/데이터 타입 테스트

create table TableName( --TableName명의 table 생성
(ColumnName1) dataType(byte:size), --열의 이름,데이터 타입(사이즈) 선언
(ColumnName2) dataType(byte:size),
(ColumnName3) dataType(byte:size)
);

select sysdate, 'ColName1', 'ColName2' from dual;
--ColumnName 설정 및 dual(단행-임시테이블)에 선언
select sysdate, tochar(sysdate, 'dateFormat') as "(alias)" from dual;
--as alias로 별칭 설정.
insert into TableName values (val1, val2, val3);
--해당 TableName명의 table에 값 대입. 주: 열의 갯수에 맞게 대입해야함.
drop table TableName; --TableName명의 table Drop, 즉 삭제

commit; --transaction을 마치고 현재까지의 진행 상황을 저장
rollback; --직전 커밋 시점까지의 transaction을 취소, 즉 날림.


코드 작성시 특이사항

  • 오라클을 다운받게 되면 기본적으로 sys, system 이렇게 2개의 계정을 갖게 된다. Oracle Database는 하나의 db 서버에 여러 개의 데이터베이스를 만들 수 있으며(단, 교육 버전인 xe는 1개의 데이터베이스만 생성 가능), 이 DB 생성 권한은 sys만 가지고 있다.

  • sql developer에서 할 수 있는 모든 동작들은 sql plus에서 전부 수행이 가능하며, sql문은 기본적으로 대소문자 구분을 하지 않지만 (때문에 java와 다르게 camelCasing이 아니라 snake_casing을 한다.) identified by, where (조건문)의 경우에는 대소문자 구분을 한다.

  • RunScript(F5)는 특별한 경우가 아닌 이상 절대 누르지 않기로 한다. Oracle DB는 java와 달라서 이미 실행된 코드도 재선택하고 실행하면 실행하는 만큼 반복 실행 된다. 말 그대로 jot되는 수가 있다.

  • default tablespace의 경우에 system, users 두 개의 구분이 있으며 일반적인 경우에는 users를 권장한다.

  • 가변 가능성이 큰 데이터의 경우 가변형 varchar보다 char를 넉넉히 잡아두는 것이 좋다.(용량 효율면에서)

profile
아! 응애에요!

0개의 댓글