Oracle
oracle.com > Software > Oracle Database > Download Oracle Database 19c > 사이트 하단의 Oracle Database 11g Release 2 Express Edition for Windows 64
SQL Developer
oracle.com > Windows 64-bit with JDK 8 included
-- 단일라인 주석
/*
다중라인 주석
*/
데이터 무결성
데이터 독립성
보안
데이터 중복 최소화
데이터 안정성
Oracle
MS-SQL
MySQL
MariaDB
PostgreSQL
DB2
Access
티베로
SQLite
-> UI가 없는 프로그램 -> 서비스
-> UI가 없는 오라클에 접속을 해서 -> 조작을 도와주는 툴
SQL Developer
Toad
SQLGate
DataGrip(JetBrain)
Eclipse
SQL*Plus
오라클 에디션
오라클 설치
-> 오라클이 잘 동작하고 있는 지 어떻게 확인??
-> 시작 or 종료는 어떻게 ???
Name : 서버주소.계정명
Name : localhost.system
사용자 이름 : system
비밀번호 : java1234
비밀번호 저장: 체크
호스트 이름 : 오라클 서버 주소(도메인, IP)
포트(네트워크 프로그램은 포트를 통과해야한다. -> 1521번은 오라클) : 1521
SID(서비스 이름, 오라클은 여러개를 설치할 수 있음, 오라클 식별자) : xe (무료버전은 xe, 무료버전은 한번만 설치 가능.)
-> 스크립트 파일(*.sql), 워크 시크 파일(*.sql)
-> 오라클(데이터베이스서버)와 대화를 하기 위한 작업 파일(자바 -> 소스파일(*.java))
-> 문장 단위 실행
show user;
select*from tabs;
관리자 계정
일반 사용자 계정
-- 계정이 잠겨있다. -> 활성화
-- alter user 계정명 account unlock;
alter user hr account unlock; --User HR이(가) 변경되었습니다.
-- 비밀번호 변경
alter user hr identified by java1234; --User HR이(가) 변경되었습니다.
-- 위의 두줄을 한번에 가능 (계정 해제 & 비번 바꾸기)
alter user hr account unlock identified by java1234;
-- system vs hr 어떤 계정으로 실행? -> ? -> (system)154 vs (HR)7 -> 명령어는 같아도 접속한 계정에 따라 결과가 달라진다.
select * from tabs;
-- 지금 작업하고 있는 계정의 이름을 알려줌
show user;
-- 오전수업진도 : 데이터베이스 서버 설치(오라클 서버) -> 데이터베이스 클라이언트 툴(SQL Developer) -> hr 계정 활성화 -> DB 서버 접속
DBA
DB 프로그래머
응용 프로그래머
클라이언트(서비스를 제공받는 사람) <-> 오라클
DBMS 제작사와 독립적이다.
표준 SQL(ANSI-SQL)
대화식 언어다.
-- 현재 계정(HR)이 소유하고 있는 테이블 목록 보여주세요.
-- SQL은 키워드의 대소문자를 구분하지 않는다.
select * from tabs; -- 수업
SELECT * FROM tabs; -- 대문자 표기를 더 많이 사용 (가독성이 좋아서)
-- 소문자로 적고 Alt + 홑따옴표 -> 대문자로 변환
SELECT * FROM TABS;
-- Ctrl + Space
SELECT
*
FROM tabs;
숫자형
정수 + 실수
a. number
(유효자리) 38자리 이하의 숫자를 표현하는 자료형
5~22byte
1x10-130 ~ 9.99999x10+125 -> 무한이라고 생각하자..
number(precision, scale)
숫자형 상수(리터럴)
byte, int, float -> 오라클? -> 사용X
-- 테이블 삭제하기
drop table tblType;
-- 테이블 생성하기
create table tblType (
-- 컬럼 구성
-- 컬럼명 자료형
-- num number -- 38자리까지 표현 가능(정수만 가능)
-- num number(3) -- 3자리까지 표현 가능(정수만 가능)
num number(4,2) -- 소수2자리 포함 4자리까지 표현 가능(실수만 가능)
);
-- 테이블의 모든 내용을 가져오시오.
-- 에러 : ORA-00942: table or view does not exist (테이블이 안만들어졌거나 테이블이름에 오타가 났을때 -> 테이블이 존재하지 않습니다.)
select * from tblType;
-- 데이터 추가하기
insert into tblType (num) values (100);
insert into tblType (num) values (200);
insert into tblType (num) values (300);
insert into tblType (num) values (99.99);
insert into tblType (num) values (99.9999999999);
insert into tblType (num) values (3.14);
insert into tblType (num) values (9999); -- 에러 : ORA-01438: value larger than specified precision allowed for this column (자릿수를 넘은 수라서)
insert into tblType (num) values (12345.6789);
insert into tblType (num) values (12345678901234567890123456789012345678); -- 38자리
insert into tblType (num) values (-12345678901234567890123456789012345678);
insert into tblType (num) values (123456789012345678901234567890123456789);
insert into tblType (num) values (1234567890123456789012345678901234567890123456789);
a. **char** (★★★★)
- 고정 자릿수 문자열 -> 공간보다 데이터가 짧아도 나머지 공간은 그대로 차지한다. (공백으로)
a. **char(n)** : n자리 문자열, n(바이트)
- 최소 크기: 1바이트
- 최대 크기: 2000바이트
ex) char -> X
ex) char(3) -> 최대 3바이트까지 문자열을 저장 -> 인코딩? -> UTF-8 -> 영어(3글자), 한글(1글자)
ex) char(10) -> 최대 10바이트까지 문자열을 저장 -> 영어(10글자), 한글(3글자)
ex) char(2000) -> 영어(2000글자), 한글(666글자)
b. **nchar**
- n : national > 유니코드 지원 > UTF-16 동작(모든 문자 -> 2바이트로 취급)
- **nchar(n)** : n자리 문자열, n (= 문자 수)
- 최소 크기: 1글자(2바이트)
- 최대 크기: 1000글자(2000바이트)
- 영어가 아닌 문자를 저장할 때 용이
c. **varchar2** (★★★★★★★)
- 가변 자릿수 문자열 -> **데이터 크기만큼 공간의 크기가 줄어든다.** -> 장점 : 공간활용성이 좋다. 단점 : 공간회수 비용이 든다,
- **varchar2(n)** : n자리 문자열, n(바이트)
- 최소 크기 : 1바이트
- 최대 크기 : 4000바이트
d. **nvarchar2**
- 문자수 저장 + 가변
e. **clob, nclob**
- lob(Large Object) - 모든 종류의 데이터 중에 큰 자료형을 넣기 위해 만들어진 자료형
- 대용량 텍스트 저장 자료형
- 128TB (무한..)
- 잘 사용 안함. (참조형)
drop table tblType;
create table tblType (
-- 컬럼을 여러개 늘릴떄 ,로 연결한다.
-- name char(3),
-- name char(10),
-- nick varchar2(10)
name char(10),
nick nchar(10)
);
select * from tblType;
insert into tblType (name) values ('abc');
insert into tblType (name) values ('abcd'); -- 에러 : value too large for column "HR"."TBLTYPE"."NAME" (actual: 4, maximum: 3) (HR계정이 소유하고있는 TBLTYPE타입의 테이블에 NAME컬럼에 값이 너무 크다. 최대 3바이트까지만 가능하다. )
insert into tblType (name) values ('김');
insert into tblType (name) values ('홍길동'); -- (actual: 9, maximum: 3)
insert into tblType (name) values ('123'); -- 아라비안 숫자 1글자당 1바이트
insert into tblType (name) values ('&*('); -- 특수문자 1글자당 1바이트
insert into tblType (name, nick) values ('홍길동', '바보');
insert into tblType (name, nick) values ('가', '가');
-- 눈에 명시적으로 보이는 데이터는 같지만, 데이터베이스에 저장될때 모습은 다르다.
-- char -> 'abc '
-- varchar2 -> 'abc'
insert into tblType (name, nick) values ('abc', 'abc');
insert into tblType (name, nick) values ('홍길동', '홍길동');
insert into tblType (name, nick) values ('홍길동님', '홍길동님');
insert into tblType (name, nick) values ('홍길동', '홍길동님');
insert into tblType (name, nick) values ('홍길동', '홍길동님안녕하세요.');
insert into tblType (name, nick) values ('홍길동', '홍길동님안녕하세요.!'); -- 에러 : 오버플로우
날짜/시간형
자바 Calendar, Date
a. date (★★)
b. timestamp
- 년월일시분초 + 밀리초(나노초) -> 잘 안쓰임.. 나노초까지 쓸 일이 없음.(활용도 낮음)
c. interval
이진 데이터 자료형 -> 잘 안쓰임.
텍스트가 아닌 데이터
이미지, 영상, 음악 등...
a. blob
인코딩이 발생함 (비용발생, 느려짐)
해결책 : 게시판 -> 첨부 파일 -> 첨부 파일명(+경로) 만 저장-> 문자열 -> varchar2
drop table tblType;
create table tblType(
name varchar2(30), -- 이름
age number(3), -- 나이
birthday date -- 생일
);
insert into tblType (name, age, birthday) values ('홍길동', 20, '1995-05-15');
select*from tblType;