JDK는 오라클 홈페이지에서...
제일 처음 수업을 들을 때 왜 그랬는지 모르겠는데 난 homebrew를 통해서 OpenJDK를 설치했었다. 그렇게 수업 잘 듣고 있었는데... 문제는 데이터베이스과목으로 넘어가면서 시작.
오라클 설치도 문제없었고, 오히려 자바 때처럼 다른 사람들보다 설치를 먼저 끝내서 기다리고 있었는데 sql Developer를 실행하면 자꾸 아래와 같은 오류가 뜨는 것이었다.
problem initializing the javafx runtime openjdk
원래는 접속하면 아래처럼 시작페이지가 보여야 정상인데, 저렇게 오류만 뜨고 시작페이지는 안 뜨니... 찾아보니 문제는 OpenJDK 설치였다. 오라클 홈페이지에서 JDK1.8을 설치했다면 정상적으로 나왔을텐데 OpenJDK를 이용하고 있기 때문에 JavaFX가 지원되지 않아서 생기는 문제였다. 이 문제가 사소한 문제일 수도 있지만 나중에 JDBC로 이클립스와 오라클을 연결할 때 문제가 생기면 곤란하므로 OpenJDK를 삭제하고 오라클 홈페이지에서 JDK1.8을 설치했다. 이제는 잘 됨!
관계형 데이터베이스 관리 시스템 종류
- Oracle
- MS-SQL
- MySQL
- MariaDB
- PostgreSQL
- DB2
- Access
- 티베로(DBMS) -> Oracle
- 티맥스(TMax)
- 제우스(웹서버) -> Apache Tomcat
클라이언트 툴
- SQL Developer
- Toad(*)
- SQLGate
- DataGrip(JetBrain) - 대학교 이메일 등록(id@*.ac.kr)
- SQL*Plus
- 오라클 설치 시 같이 설치되는 클라이언트 프로그램
- CLI
오라클 버전
- Oracle 1.0 : 1977년
- Oracle 9i : internet
- Oracle 10g : Grid
- Oracle 11g : Grid (*)
- Oracle 12c : Cloud
- Oracle 18c : Cloud (*)
- Oracle 19c : Cloud
오라클 에디션
- Oracle Enterprise Edition
- 상용
- CPU 무제한
- Unit -> 5천만원 등...
- Oracle Standard Edition
- Oracle Standard Edition One
- Oracle Personal Edition
- Oracle Express Edition
- 무료
- 개발용, 상용 등..
- CPU 1개
- 데이터베이스 크기 11GB 까지
- 메모리 점유율 최대 1GB 까지(***)
- 소규모 회사, 학습용
- 개발자 입장에서 상용버전과 별 차이 없음
서비스 동작 유무 확인
- OracleServiceXE(실행 중)
- OracleXETNSListener(실행 중)
- 오라클과 클라이언트 프로그램을 연결해 주는 서비스
127.0.0.1 : Ping Address(예약 주소). 본인 컴퓨터를 가르키는 IP
관계형 데이터베이스
- 데이터를 표형태로 저장/관리한다.
- 데이터끼리의 관계를 표시한다.
- 데이터
- 테이블
- 스키마(Scheme)
- 테이블, 뷰 등이 저장된 데이터의 집합 저장소
- 오라클(사용자 계정)
- 사용자 계정을 새로 만들면, 오라클은 사용자가 취급할 자원들이
저장될 공간을 할당한다.(=스키마)
- 데이터베이스
- 여러개의 스키마의 집합 저장소
- Oracle XE는 1개의 데이터베이스만 생성 가능
- 열, Column
- 컬럼, 필드(Filed), 속성(Attribute), 특성(Property)
- 테이블의 열로 구성된다.(=구조)
- 행, Row
- 행, 로우, 레코드(Record), 튜플(Tuple)
- 테이블에 저장된 데이터 1건
- 객체(Object)
클라이언트 툴 > 서버 접속
- 접속명
- 사용자 이름
- 접속할 계정명(아이디)
- 관리자 계정: sys, system, 우리가 만들 계정들..
- 사용자 계정: scott(tiger), hr(human resources), 우리가 만들 계정들..
- 비밀번호
- 호스트 이름
- 오라클 서버 IP주소 or 도메인명
- localhost(127.0.0.1) or 팀 서버 IP(211.63.89.31)
- 포트번호
- 1521
- 네트워크 프로그램이 외부와의 데이터 입출력을 위해서 사용하는 통로 번호
- 65535
- 독점
- SID
- Service ID
- 오라클 서버 프로그램의 식별자
- xe
- orcl
SQL, Structured Query Language
- 구조화된 질의 언어
- 사용자(클라이언트 툴)가 관계형 데이터베이스와 대화할 때 사용하는 언어
- 자바에 비해 자연어에 가깝다.
- DBMS 제작사와 독립적이다.
- SQL은 모든 DBMS 제작사와 독립적으로 개발된다.
- 표준 SQL(ANSI SQL)
- 표준 SQL 발표 -> 각 DBMS 제작사에서 자기 제품에 적용
- SQL은 모든 DBMS에 호환된다.
- SQL-86... SQ-92... SQL2011
- 대화식 언어이다.
ANSI SQL
PL/SQL
ANSI SQL 종류
- DDL
- Data Definition Language
- 데이터 정의어
- 테이블, 뷰, 사용자, 인덱스 등의 객체를 생성/수정/삭제하는 명령어
a. create : 생성
b. drop : 삭제
c. alter : 수정
- 데이터베이스 관리자
- 데이터베이스 담당자
- 프로그래머(일부)
- DML(****)
- Data Manipulation Lanugage
- 데이터 조작어
- 데이터베이스의 데이터를 추가/수정/삭제/조회하는 명령어
- 가장 많이 사용 > CURD(Create, Update, Read, Delete)
- select : 읽기
- insert : 추가
- update : 수정
- delete : 삭제
- 데이터베이스 관리자
- 데이터베이스 담당자
- 프로그래머(****)
- DCL
- Data Control Language
- 데이터 제어어
- 계정, 보안, 트랜잭션 등을 제어
- commit
- rollback
- grant
- revoke
- 데이터베이스 관리자
- 데이터베이스 담당자
- 프로그래머(일부)
- DQL
- Data Query Language
- 데이터 질의어
- DML 중에 select만을 이렇게 부른다.
- TCL
- Transaction Control Language
- DCL 중에 commit, rollback만을 이렇게 부른다.
오라클 기본 인코딩
- ~ 8i : EUR-KR
- 9i ~ : UTF-8
관습화 패턴 -> 프로젝트 내 결정
사용자 식별자 생성 시 주의점! 최대 30바이트 이하!
ANSI-SQL 자료형
- 오라클 자료형
- 데이터베이스에서 취급하는 데이터 -> 자료형 존재
-
숫자형
a. number
- 정수 + 실수
- (유효자리)38자리 이하의 숫자를 표현하는 자료형
- ex) 1234567890123456789012345678
- 5~22byte
- 1x10-130 ~ 9.9999x10+125
- number(precision, scale)
- precision : 소수 이하를 포함한 전체 자릿수(1~38)
- scale : 소수점 이하 자릿수(0~127자리)
- ex) number : 유효자리 38자리까지 표현 가능 모든 숫자(정수, 실수)
- ex) number(3) : 3자리까지 표현 가능 숫자(정수, -999 ~ 999)
- ex) number(4,2) : 4자리까지 표현 가능 숫자(실수, -99.99 ~ 99.99)
- ex) number(10,3) : -9999999.999 ~ 9999999.999
- 숫자형 상수(리터럴)
- 정수 : 10
- 실수 : 3.14
-
문자형
- 문자형 + 문자열
- 자바의 String과 유사
a. char
- 차
- 고정 자릿수 문자열
- char(n) : n자리 문자열. n(바이트)
- 최소크기 : 1바이트
- 최대크기 : 2000바이트
- ex) char(3) : 최대 3바이트짜리 문자열을 저장
- ex) char(10) : 최대 10바이트짜리 문자열을 저장
- ex) char(2000) : 영어(2000자), 한글(666자) -> UTF-8
- 데이터 길이가 고정 : 사람이름, 성별
b. varchar2
- variable charactor
- 바차2
- 가변 자릿수 문자열
- varchar2(n) : n자리 문자열. n(바이트)
- 최소크기 : 1바이트
- 최대크기 : 4000바이트
- ex) varchar2(3) : 최대 3바이트짜리 문자열을 저장
- ex) varchar2(10) : 최대 10바이트짜리 문자열을 저장
- ex) varchar2(2000) : 영어(2000자), 한글(666자) -> UTF-8
- 데이터 길이가 가변 : 주소, 인삿말...
c. nchar
- N : National > 유니코드 지원 > UTF-16 동작
- nchar(n) : n자리 문자열, n(문자수)
- 최소 크기: 1글자(2바이트)
- 최대 크기: 1000글자(2000바이트)
- ex) nchar(3) : 영어(3글자), 한글(3글자)
d. nvarchar2
- varchar2와 동일
- 바이트(X) -> 문자수(O)
e. clob, nclob
- 롭
- large Object
- 대용량 텍스트 저장
- 128TB
- 참조형
-
날짜/시간형
- 자바 Calendar, Date
a. date(***)
- 년월일시분초
- 7byte
- 기원전 4712년 1월 1일 ~ 기원후 9999년 12월 31일
b. timestamp
- 년월일시분초+밀리초(나노초)
c. interval -> number 사용
- 시간
- 틱값
-
이진 데이터형
- 비텍스트형 데이터
- 이미지, 영상, 음악 등..
a. blob
- 최대 128TB
-> 해당 파일을 특정 폴더에 저장 + 데이터베이스에는 파일명만 저장
테이블 구조 확인
- SQL Developer 기능 사용
- desc 테이블명
- 스크립트(SQL)
- 사용자 정보
select * from sys.dba_users;
select * from sys.dba_users where username = 'HR';
오라클은 식별자를 DB에 저장할 때 모두 대문자로 변환해서 저장한다. 계정명, 테이블명, 컬럼명 등...
2. 스키마(계정)내의 테이블 정보
select * from sys.dba_tables;
select * from sys.dba_tables where owner = 'HR';
select * from tabs;
- 테이블 컬럼 정보
select * from sys.dba_tab_columns where owner = 'HR' and table_name = 'TBLCOUNTRY';
desc tblCountry;