OracleDB
- 무료 배포 버전
- 주의사항 : 컴퓨터 이름이 한글이면 설치가 용이하지 않을 수 있다.
- 컴퓨터 포맷 후 바로 설치할 것을 추천
- 다운로드 경로
- https://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html
- Oracle Database 11g Release 2 Express Edition for Windows 64
- OracleXE112_Win64.zip
- Database 11g Express Edition: 개인 개발자용
- Intel Core2 Duo 2.9 GHz, 데이터가 11GB를 넘을 수 없음, 메모리가 1GB를 넘을 수 없음, CPU 1개에서만 실행가능.
- Database 11g Enterprise/Standard Editions
- Intel i3 이상, RAM 4GB, 오라클 서버의 모든 기능을 제공
- Oracle 의 접근 Port 번호는 8080 (수정가능.)
- 만약 다른 프로그램의 Port번호가 8080이거나 겹치면 바꿔주어야함
- 내가 만든 데이타베이스에 접근하는 Port 번호 1521
- 최고관리자 계정
- Oracle: system 또는 sys
- MySQL : root
- MS-SQL: sa
Oracle Server 서비스 확인
- 시작 -> 서비스 -> OracleServiceXE 확인
- 시작 -> 모든프로그램 - Oracle Database 11g Express Edition -> Start Database / Stop Database
Oracle 명령어 입력 툴
-
Oracle SQL Developer
-
SQL Developer에서 ER Diagram 만드는 법.
->sqldeveloper -> 파일 ->Data Modeler -> 임포트 -> 테이블간의 관계설정을 다 해줌(ERdiagram)
-
-
시작 -> 모든프로그램 -> Oracle Database 11g Express Edition -> Run SQL Command Line
-> connect 입력 후 아이디/비번 입력 (비밀번호는 화면에 안보임)
-
시작 -> cmd -> sqlplus 입력 후 아이디/비번 입력 (비밀번호는 안보임)
-
관리자 계정 아이디 system 또는 sys(as sysdba) 비밀번호는 지정(다운로드시)
Oracle 명령어 입력
-
Run Command Line
-
SQL -> connect
-> 아이디 / 비번
-> connected. (확인하기)
-
-
SQL Developer : 별도 설치 (오라클 로그인 필요)
-
웹브라우저 : 시작 -> Oracle DB 11g XE -> Get Started -> http://127.0.0.1:8080/apex 또는 http://localhost:8080/apex
- 자기 자신의 PC를 지칭하는 IP와 도메인
- 127.0.0.1 / localhost
- 자기 자신의 PC를 지칭하는 IP와 도메인
-
Eclipse : DataSource 연결
-
sqlplus : 시작 -> cmd -> sqlplus 아이디/비번 로그인.
데이터베이스 관련 명령어
- SQL문(Stored Query Language)
- 대소문자를 구분하지 않음
- 종결문자 ;
- ANSI(표준) 와 자신만의 DB명령어
테이블 스페이스 생성
- Oracle DB
- cmd -> sqlplus / as sysdba 로그인 후 진행
1 |
|
- 형식
데이터저장 파일경로는 c: 는 저장안됨.
예시) d:\java0514\java0514.dbf
1 |
|
예시
1 |
|
- Oracle DB 서버 사용자 계정 만들기
인증받은 id에 한해서만 테이블스페이스에 저장하기.
exit 는 빠져나감!
1 |
|
예시
exit로 빠져나온다음 sqlplus 아이디/비번 으로 로그인 하면 거부당함 이때 권한을 부여해야한다
1 |
|
- 사용자 계정 삭제하기
1 |
|
- 사용자 권한 부여
connect 접속권한
resource 데이터베이스안에 있는 자원들을 사용할 수 있는 권한
dba 관리자권한
sqlplus / as sysdba 로그인 (super user)
1 |
|
예시
1 |
|
- 권한 취소
1 |
|
예시
1 |
|
- 계정 수정
1 |
|
- 사용자 삭제
1 |
|
SEQUENCE 시퀀스
- 오라클에서 자동으로 일련번호를 부여
- Oracle : 시퀀스
- MySQL : IDENTITY
- 시퀀스나 아이덴티티는 화면상 노출이 목표가 아니라 WHERE 조건을 쓰기 위함
- 기술방법
- 시퀀스명
- INCREMENT BY 증가값 : 시작 값에서 증가할 값을 기술
- START WITH 시작값 : 시퀀스의 초기값
- MAXVALUE 최댓값 : 시퀀스의 최종값
- MINVALUE 최솟값 : 시퀀스의 최솟값
- CYCLE 반복횟수 : 반복횟수
- CHACHE : 캐시 메모리에 저장한다
- ORDER : 요청 순서대로 생성
- 시퀀스 생성
옵션지정하지 않으면 자동으로 1부터 시작해서 1씩 증가
1 |
|
옵션 예시
1 |
|
- 시퀀스 호출 함수
주의 : 시퀀스 생성 후 NEXTVAL을 호출해야 시퀀스에 초기값이 설정됨
임시테이블 DUAL
NEXTVAL : 다음값을 반환함. 다음번호 발급
1 |
|
CURRVAL : 현재값을 반환함. 최근 발급된 번호
1 |
|
- 시퀀스에서 일련번호 발생.
1 |
|
- 시퀀스 삭제
1 |
|
시퀀스 문제
테이블에 데이터 입력시 시퀀스를 이용해서 id를 입력하도록. 206에서 시작하여 1씩 증가되고, 최대값은 999로 설정하여 시퀀스 생성하기.
시퀀스 이름 : test_seq
1 |
|
시퀀스 목록 조회
1 |
|
NVL() 함수를 사용해 일련번호 구하기
NVL() 함수를 이용한다.
- NVL() 함수 : NULL값을 포함하는 칼럼을 특정한 값으로 전환
형식 : NVL(NULL값을 포함하고 있는 칼럼이나 식, 전환하고자 하는 목표값)
-> NULL값이 나오면 0으로 대체
1 |
|
서브쿼리를 이용한 일련번호 구하는 식
1 |
|
Oracle DB 자료형
- 숫자형
- INT 표준형
- NUMBER 정수형
- NUMBER() 실수형
- ex ) NUMBER(5,2) -> 최대 5자리, 소수점2자리까지 표현 -> (999.99) 까지 표현가능
- 문자형
- CHAR 표준형 , 고정형
- ex) CHAR(5) : 5글자를 잡음 -> ‘SKY ‘ : 2칸의 공백이 있음.
- ex) 우편번호
- 속도는 고정형이 빠름
- VARCHAR 표준형 , 가변형
- ex) VARCHAR(5) : 5글자 잡음 -> ‘SKY’ : 남은 2칸은 제외됨. 가변형!
- ex) 아이디, 비밀번호, 이름, 주소 ~~ (쓰이는 곳이 많음)
- VARCHAR2 가변형
- 4000 까지 가능
- CHAR 표준형 , 고정형
- 날짜형 (년월일시분초)
- DATE
- 현재 시스템 날짜값 함수 : SYSDATE
- DATE
시퀀스 및 자료형 연습
- 시퀀스 생성
1 |
|
- sungjuk 테이블 생성
not null : 빈 값을 허용하지 않음.
1 |
|
- 행 추가 (Sample Data)
칼럼 생략할 수 있지만 알아보기 어려우니 생략하지 말자.
VALUES순서가 중요함
시퀀스의 일련번호로 순서를 정해주기 위함. >
sno 칼럼에 sungjuk_seq.NEXTVAL 순서를 넣어준다.
1 |
|
레코드 갯수 확인
1 |
|
- 이름 ‘무궁화’를 조회하시오
1 |
|
- 국어점수 50점 이하 조회하시오
1 |
|
- 국영수 모두 90점 이상 조회하시오
1 |
|
- 이름 개나리, 진달래, 무궁화 조회하시오
1 |
|
- 주소가 서울인 레코드의 평균을 구하시오
1 |
|
- 수학점수 50~59점 사이 레코드를 조회하시오
1 |
|
- 비어있는 평균값을 모두 구하시오
1 |
|
- 평균 70점이상 레코드를 이름순으로 정렬해서 조회하시오
ex) 게시판테이블에서 가장 최근에 작성한 글 순서로 출력
order by wdate desc –내림차순
1 |
|
- aver 칼럼의 데이터타입 number(6,2)로 수정하시오
aver 값이 있으면 안된다. null 초기화 시킨 후 구조를 바꾸고 UPDATE를 한다.
값이 있으면 구조변화가 안된다.
UPDATE sungjuk SET aver=null;
1 |
|
- 수학점수 50점 미만 학생들에게 수학점수 5점씩 추가하시오
1 |
|
- 이름에 ‘화’ 문자가 들어가 있는 레코드만 검색
LIKE 연산자는 문자열에 사용!!
1 |
|
- 주소가 ‘Seoul’ , ‘Jeju’이면서 이름에 ‘나’ 글자가 포함되어 있는 레코드 조회
1 |
|
- 국영수 과목의 각 평균을 구하시오
AS : 특정 칼럼명, 테이블명을 일시적으로 리네임
1 |
|
Oracle 함수
문자열 함수
- LOWER : 해당 칼럼의 값을 소문자로 변환
dual은 임시 테이블
1 |
|
- UPPER : 대문자로 변환
1 |
|
- CONCAT : 두개의 문자열을 연결
1 |
|
- SUBSTR : 문자열 추출
6번째 자리부터 전체를 추출
1 |
|
1~5번째까지 추출
1 |
|
- INSTR : 문자열에서 특정문자의 위치를 세는 함수, 특정문자가 없으면 0
1 |
|
- TRIM : 공백을 제거
1 |
|
- LTRIM : 좌측부터 문자열에서 해당 문자를 제거
우측에 제거하는 기호가 몇개가 있어도 해당된다면 모두 다 제거
1 |
|
- RTRIM : 우측부터 문자열에서 해당 문자 제거
1 |
|
- REPLACE : 문자열에서 해당 문자를 다른 문자로 바꾸어 줌
1 |
|
숫자함수
- ABS : 절대값
1 |
|
- MOD : 나머지 반환
100
1 |
|
- CEIL
2
1 |
|
-1
소수점 첫째자리에서 해당 값을 올림 처리한 정수를 반환하고 해당 값보다는 크지만 가장 근접하는 최소값을 구하는 함수
1 |
|
- FLOOR
1
1 |
|
-2
소수점 첫째자리에서 해당 값을 내림 처리한 정수를 반환하고 해당 값보다는 작지만 가장 근접하는 최대값을 구하는 함수
1 |
|
- ROUND(n,m) : 해당 숫자 n에m자리까지 반올림
1 |
|
- TRUNC(n,m) : 해당 숫자 n에서 m자리 까지 버림
1 |
|
날짜 함수
- SYSDATE : 현재 날짜, 시간
1 |
|
- MONTHS_BETWEEN(n,m)
첫번째 날짜에서 두번째 날짜 사이 개월 수를 반환하는 함수.
MONTHS_BETWEEN(m,n) 순서바꿔도됨
1 |
|
- ADD_MONTHS(m,n)
해당 날짜(m)에 개월 수(n)를 더한 날짜를 반환, 마이너스값도 할 수 있음.
1 |
|
- NEXT_DAY(m,’n’)
해달 날짜(m)에서 최초로 도래하는 해당 요일(‘n’)의 날짜를 반환하는 함수
1 |
|
- LAST_DAY(m)
해달 날짜가 포함되어 있는 달의 마지막 날짜를 반환하는 함수.
1 |
|
형변환 함수
- TO_CHAR(원래날짜,’원하는 모양’)
숫자와 날짜를 문자로 변환해 주는 두가지 기능
- TO_NUMBER(‘1’)
- TO_DATE(‘문자’,’날짜포맷’)
함수 연습
- 국영수 과목의 각 평균을 반올림해서 소수점 두 자리까지 출력 하시오.
1 |
|
연습
- 테이블 구조
1 |
|
- 행 삽입
1 |
|