Cohe

oracle 기본 데이터 형 및 기타 내용 본문

데이터 베이스 기초

oracle 기본 데이터 형 및 기타 내용

코헤0121 2024. 4. 3. 17:20
728x90

cmd 명령어

netstat -an | findstr 1521

  • 1521은 기존 주말반이 사용하는 port 번호이다.
  • 지금 동작중인 서비스를 확인하고자 치는 명령어이다.

oracle

  • sql developer 에서 전체 실행은 f5, 한 줄 실행은 crtl + enter

오라클 기본 데이터 형

  • NUMBER : 숫자형 데이터를 저장하기 위해서 제공
    • 형식 : NUMBER(percision, scale)
  • precision : 소수점을 포함한 전체 자리수를 의미
  • scale : 소수점 이하 자리수를 지정
    • scale을 생략하고, precision만 지정한 경우에는 소수점 이하는 반올림되어 정수 처리됨.
    • precision과 scale을 생략하면 입력한 데이터 값만큼 공간이 할당 됨
  • DATE : 날짜, 시간을 저장하기 위해서 사용하는 데이터 형 기본 형식은 "YY/MM/DD"형식으로 되어 있으며, 2005년 12월 14일은 "05/12/14"로 출력됨
  • CHAR : 문자 데이터를 저장하기 위한 자료형으로 고정 길이 문자 데이터를 저장
  • VARCHAR2 : 가변 길이의 문자열을 저장하기 위해서 제공

DB사용자 확인

  • show user : 현재 사용자를 확인.
  • dba_users 테이블에 사용자 정보를 저장하고 있음. (system, sys에 확인)

계정

  • SYS : 오라클 데이터베이스 관리자(SUPER USER), DB생성 가능.
    • 슈퍼 관리자이다.
    • sqlplus /as sysdba 로 접속...
  • SYSTEM : 권한은 SYS와 같으나 DB생성 권한은 없음. 패스워드는 설치 설정함.
  • 산술연산자 +, -, *, / 로 테이블의 값을 설정할 수 있음,
    • select ename, sal*12 yearmoney from emp;
    • select sal + comm from emp;
      • 산술 연산은 가능하나, null 값과 계산은 못한다
      • nvl(컬럼명, null 일 때의 값) 메소드를 넣어서 산술 계산하게끔 넣어준다.
      • select ename, sal+nvl(comm,0) "Annsal" from emp;
        • 한국어 사용이 가능하며, “”을 쓰면 별칭 그 자체를 쓸 수 있다 (없으면 대문자로만 들어간다)
  • NULL 도 데이터
    1. 0도 아니고, 빈공간도 아니다.
    2. 미확정(해당 사항 없음), 알수 없음(unkown) 값을 의미
    3. 어떤 값인지 알 수 없지만 어떤 값이 존재함을 의미
    4. ? 혹은 무한대의 의미이기 때문에 연산, 할당, 비교가 불가능하다.
  • Concatenation 연산자
    • select ename || ' is a ' || job from emp; 이걸 하면 아래처럼 된다
      • SMITH is a CLERK : ename 값을 낸 뒤에 is a 를 넣고, 그 위에 job이라는 값과 합쳐서 하나의 문자열로 만든다.
  • transaction 이 필요하기 때문에 commit을 해야만 데이터베이스에 반영이 된다!!
  • DB가 시스템 계정별로 만들어진다
    • 자신의 계정에서 만들어진 table 확인하는 법 : select * from tab;
show user;

create table Persons(
    id int primary key,
    Lastname varchar(255) not null,
    firstname varchar(255),
    age int,
    city varchar(255) default 'seoul'
);

desc persons;

create table Orders (
    ID int not null UNIQUE,
    OrderNumber int not null,
    PersonID int,
    OrderDate TIMESTAMP,
    FOREIGN key (PersonID) REFERENCES Persons(ID)
);

insert into persons values(1,'testuser1','testuser1',20,'Seoul');
insert into persons values(2,'testuser2','testuser2',21,'Seoul');
insert into persons values(3,'testuser3','testuser3',22,'Seoul');
insert into persons values(4,'testuser4','testuser4',23,'Seoul');
insert into persons values(5,'testuser5','testuser5',24,'Seoul');

insert into orders values(1,1,2,'2022-08-08');
insert into orders values(2,2,1,'2022-08-08');
insert into orders values(3,3,1,'2022-08-08');
insert into orders values(4,4,3,'2022-08-08');
insert into orders values(5,5,4,'2022-08-08');

select * from persons;
select * from orders;

commit;

system → db

create user scott identified by tiger;
-- 접속 권한
grant create session to scott;
-- table 생성 및 자원 사용 권한
grant connect, resource to scott;

-- 자원에 대한 내용 할당 quota
alter user scott default tablespace users quota unlimited on users;

scott → db

  • desc : describe의 축약어
DROP TABLE DEPT;
CREATE TABLE DEPT
       (DEPTNO NUMBER(2) CONSTRAINT PK_DEPT PRIMARY KEY,
   DNAME VARCHAR2(14) ,
   LOC VARCHAR2(13) ) ;
DROP TABLE EMP;
CREATE TABLE EMP
       (EMPNO NUMBER(4) CONSTRAINT PK_EMP PRIMARY KEY,
   ENAME VARCHAR2(10),
   JOB VARCHAR2(9),
   MGR NUMBER(4),
   HIREDATE DATE,
   SAL NUMBER(7,2),
   COMM NUMBER(7,2),
   DEPTNO NUMBER(2) CONSTRAINT FK_DEPTNO REFERENCES DEPT);
INSERT INTO DEPT VALUES
   (10,'ACCOUNTING','NEW YORK');
INSERT INTO DEPT VALUES (20,'RESEARCH','DALLAS');
INSERT INTO DEPT VALUES
   (30,'SALES','CHICAGO');
INSERT INTO DEPT VALUES
   (40,'OPERATIONS','BOSTON');
INSERT INTO EMP VALUES
(7369,'SMITH','CLERK',7902,to_date('17-12-1980','dd-mm-yyyy'),800,NULL,20);
INSERT INTO EMP VALUES
(7499,'ALLEN','SALESMAN',7698,to_date('20-2-1981','dd-mm-yyyy'),1600,300,30);
INSERT INTO EMP VALUES
(7521,'WARD','SALESMAN',7698,to_date('22-2-1981','dd-mm-yyyy'),1250,500,30);
INSERT INTO EMP VALUES
(7566,'JONES','MANAGER',7839,to_date('2-4-1981','dd-mm-yyyy'),2975,NULL,20);
INSERT INTO EMP VALUES
(7654,'MARTIN','SALESMAN',7698,to_date('28-9-1981','dd-mm-yyyy'),1250,1400,30);
INSERT INTO EMP VALUES
(7698,'BLAKE','MANAGER',7839,to_date('1-5-1981','dd-mm-yyyy'),2850,NULL,30);
INSERT INTO EMP VALUES
(7782,'CLARK','MANAGER',7839,to_date('9-6-1981','dd-mm-yyyy'),2450,NULL,10);
INSERT INTO EMP VALUES
(7788,'SCOTT','ANALYST',7566,to_date('13-7-1987','dd-mm-yyyy'),3000,NULL,20);
INSERT INTO EMP VALUES
(7839,'KING','PRESIDENT',NULL,to_date('17-11-1981','dd-mm-yyyy'),5000,NULL,10);
INSERT INTO EMP VALUES
(7844,'TURNER','SALESMAN',7698,to_date('8-9-1981','dd-mm-yyyy'),1500,0,30);
INSERT INTO EMP VALUES
(7876,'ADAMS','CLERK',7788,to_date('13-7-1987','dd-mm-yyyy'),1100,NULL,20);
INSERT INTO EMP VALUES
(7900,'JAMES','CLERK',7698,to_date('3-12-1981','dd-mm-yyyy'),950,NULL,30);
INSERT INTO EMP VALUES
(7902,'FORD','ANALYST',7566,to_date('3-12-1981','dd-mm-yyyy'),3000,NULL,20);
INSERT INTO EMP VALUES
(7934,'MILLER','CLERK',7782,to_date('23-1-1982','dd-mm-yyyy'),1300,NULL,10);
DROP TABLE BONUS;
CREATE TABLE BONUS
   (
   ENAME VARCHAR2(10)   ,
   JOB VARCHAR2(9)  ,
   SAL NUMBER,
   COMM NUMBER
   ) ;
DROP TABLE SALGRADE;
CREATE TABLE SALGRADE
      ( GRADE NUMBER,
   LOSAL NUMBER,
   HISAL NUMBER );
INSERT INTO SALGRADE VALUES (1,700,1200);
INSERT INTO SALGRADE VALUES (2,1201,1400);
INSERT INTO SALGRADE VALUES (3,1401,2000);
INSERT INTO SALGRADE VALUES (4,2001,3000);
INSERT INTO SALGRADE VALUES (5,3001,9999);
COMMIT;

SQL 주요 함수

  • dual 테이블은 dummy라는 단 하나의 컬럼으로 구성되어 있음 최대 길이는 1이다.
    • 하나의 결과값만 만들어서 보고 싶을 때 쓰는 친구이다!!!!!!!!!
  • DUAL 테이블과 SQL 함수 분류
  1. 숫자 함수
    • ABS : 절대값 구하는 함수
    • COS : COSINE 값을 반환
    • EXP : e(2.71828183...)의 n승을 반환
    • FlOOR : 소수점 아래를 버림
    • LOG : LOG값을 반환합니다.
    • POWER : POWER(m,n) m의 n승을 반환
    • SIGN : SIGN (n) , n <0이면 -1, n=0이면 0, n>0이면 1을 반환
    • SIN : SINE값을 반환
    • TAN : TANGENT 값을 반환
    • ROUND : 특정 자리수에서 반올림
      • round(대상, 자릿수)
      • round (34.5678, 2) → 34.56
      • round (34.5678, -1) → 30 : -면 앞에 것을 반올림
    • TRUNC : 특정 자릿수에서 잘라낸다.(버림)
      • 지정된 자릿수에서 버리는 것이니 floor와 다르다.
    • MOD : 입력 받은 수를 나눈 나머지 값을 반환
      • 사번이 홀수인 애들만 뽑아보세요 : select * from emp where mod(empno,2)=1;
  2. 문자 처리 함수
    • LOWER : 소문자로 변환
      • select empno, ename from emp where lower(job)='manager';
    • UPPER : 대문자로 변환
      • select empno, ename from emp where job=upper('manager');
    • INITCAP : 첫글자만 대문자로 나머지 글자는 소문자로 변환
      • 문자열의 이니셜만 대문자로 변경 → 처음 시작부분만!
    • CONCAT : 문자의 값을 연결.
    • SUBSTR : 문자를 잘라 추출(한글 1byte)
    • SUBSTRB : 문자를 잘 추출(한글 2byte -> 18c에서 3byte)
    • LENGTH : 문자의 길이를 반환 (한글 1byte)
    • LENGTHB : 문자의 길이 반환 (한글 2byte -> 18c에서 3byte)
    • INSTR : 문자열 내에 찾는 문자를 찾아서 위치 값을 반환
    • INSTRB : 문자열 내에 찾는 문자를 찾아서 위치값을 반환 (한글 2byte -> 18c에서 3byte), 한글은 4byte
    • LPAD, RPAD : 입력 받은 문자열과 기호를 정렬하여 특정 길의 문자열로 반환
    • TRIM : 잘라내고 남은 표시
    • CONVERT : CHAR SET 을 변환
    • CHR : ASCII 코드 값으로 변환
    • ASCII : ASCII 코드 값을 문자로 변환
    • REPLACE : 문자열의 특정 문자를 변경
  3. 날짜 함수
    • SYSDATE : 시스템 저장된 현재 날짜를 반환
      • hiredate : 근무일수를 구할 때 쓰임
        • select hiredate, round ( hiredate, 'month') from emp;
      • round (date, format) : 지정한 날짜에 대하여 반올림 처리
      • trunk (date, format) : 지정한 날짜에 대하여 없앰 처리
      format 단위
      cc, scc 4자리 연도의 끝 두글자를 기준으로 반올림
      syyy, yyyy 년(7월 1일부터 반올림)
      syear, yyy, yy, y  
      ddd, d, j 일을 기준
      hh, hh12, hh24 시를 기준으로
      Q 한 분기의 두번째 달의 16일을 기준으로 반올림한다.
      MONTH, mon, mm, rm 월의 16일을 기준으로 반올림
      Day, Dy, d 한 주가 시작되는 날짜
      M1 분을 기준
    • MONTHS_BETWEEN : 두 날짜 사이가 몇 개월인지 반환
    • ADD_MONTHS : 특정 날자에 개월 수를 더한다.
    • NEXT_DAY : 특정 날짜에서 최초로 도래하는 인자로 받은 요일의 날짜를 반환
    • LAST_DAY : 해당 달의 마지막 날자를 반환
    • ROUND : 인자로 받은 날짜를 특정 기준으로 반올림
    • TRUNC : 인자로 받은 날짜를 특정 기준으로 버림.
  4. 형 변환 함수
    • to_char : 날짜형 혹은 숫자형을 문자형으로 변환
    • to_date : 문자형을 날짜형으로 변환
    • to_number : 문자형을 숫자형으로 변환
  5. NVL함수 : NULL을 다른 값으로 변환
  6. 선택을 위한 DECODE함수
    • switch case 문과 같은 기능을 가지고 있습니다.
    • 형식
    • DECODE(표현식, 조건1, 결과1, 조건2, 결과2, 조건3, 결과3, 기본결과n )
      • 직급에 따라 급여 인상을 하도록 만들어 보자, 직급이 'ANALYST'는 5%, 'SALESMAN'인 사원은 10%, 'MANAGER'인 사원은 15%, 'CLERK'인 경우 20% 인상하여 출력해보세요.
      • SELECT ename, job,sal, DECODE(job, 'ANALYST', 1.05 * sal, 'SALESMAN',1.1 * sal, 'MANAGER', 1.15 * sal, 'CLERK', 1.2 * sal) AS upsal FROM emp;
  7. 조건에 따라 서로 다른 처리가 가능한 CASE함수
    • 형식 : case 표현식 when 조건1 then 결과1 when 조건2 then 결과2 when 조건3 then 결과3 else 결과n END
desc emp;

select ename, sal*12 yearmoney from emp;
select sal, comm from emp;
select ename, sal+nvl(comm,0) "Annsal" from emp;

--Concatenation 연산자
select ename || ' is a ' || job from emp;

desc dual;
select * from dual;

select * from emp where mod(empno,2)=1;

select empno, ename from emp where lower(job)='manager';
select hiredate, round ( hiredate, 'month') from emp;

--Concatenation : 연결 연산자 "||"
select ename || ' is a ' || job from emp;

--DUAL 테이블은 DUMMY라는 단 하나의 컬럼으로 구성되어 있음. 최대길이 1
desc dual;
select * from dual;

--ABS 절대값
select -10, abs(-10) from dual;
--floor 함수 소수점 아래버림
select 34.5678, floor(34.5678) from dual;
--round(대상, 자릿수)
select 34.5678, round(35.5678,-1) from dual;
--trunc 지정된 자리수 이하를 버림
select 34.5678, trunc(34.5678, 3) from dual;
--mod함수 나머지 연산 처리
select mod(27,2), mod(27,5) from dual;

--사번이 홀수인 사람만 출력
select ename from emp where mod(empno,2) =1;

--문자열 함수
--upper 대문자로 변환
select 'welcome to Oracle',upper('Welcome to Oracle') from emp;
--lower 소문자로 변환
select 'welcome to Oracle', lower('Welcome to Oracle') from emp;
--initcap() : 문자열의 이니셜만 대문자로 변경
select initcap('WELCOME to Oracle') from emp;

select * from emp;
select empno, ename from emp where lower(job)='manager'; 

--문자열 길이 구하는 length()
select length('Oracle'),length('오라클')
from dual;
--문자열 길이 구하는 lengthb() --저장된 바이트수
select lengthb('Oracle'),lengthb('오라클')from dual;

--substr 대상문자열이나 컬럼의 자료에서 시작부분부터 선택 개수만큼 문자를 추출
--substr(대상, 시작위치, 개수)
select substr('welcom to oracle', 4,3) from dual;
select substr('welcom to oracle', -4,3) from dual;

--<연습>
--입사년도 년과 월로 구분
select hiredate from emp;
select substr(hiredate,1,2) "년도", substr(hiredate,4,2) from emp;

--9월에 입사한 사원 출력
select ename from emp where substr(hiredate,4,2)=09;

--87년도 입사한 사원 알아보기
select ename from emp where substr(hiredate,1,2)=87;

--이름이 E로 끝나는 사원검색하기
select ename from emp where lower(substr(ename,-1,1))='e';

--substrb() 문자열 추출 바이트단위
select substr('Welcom To Oracle',3,4), substrb('Welcom To Oracle',3,4) from dual;
select substr('웰컴 투 오라클',3,4), substrb('웰컴 투 오라클',3,4) from dual;

--instr 함수 : 대상 문자열이나 컬럼에서 특정문자가 나타나는 위치를 알려줌
select instr('Welcom To Oracle','O') from dual; 
select instr('welcom To Oracle','O',6) from dual; --instr(대상,찾을글자,시작위치)
select instr('welcom To Oracle','O',6,2) from dual; --instr(대상, 찾을글자, 시작위치, 몇번째 발견된 글자)

--instrb 함수: instr인데 byte로 표기
select instr('데이터베이스','이',3,1), 
instrb('데이터베이스','이',3,1)
from dual;

--이름에 세번째 자리가 R로 끝나는 사원 검색
-- like 연산자를 사용 _,%
select * from emp;
select ename from emp where ename like'__R%';
select * from emp where instr(ename,'R')=3;

--LPAD / RPAD 컬럼이나 대상 문자열을 명시된 자리수에서 오른쪽 또는 왼쪽에 남은 자리를 특정기호로 채우기
select lpad('Oracle',20,'#') from dual;

-- Rtrim 오른쪽여백/ Ltrim 왼쪽여백 / Trim 양쪽 공백제거
select '[' || trim('      Oracle    ') || ']' from dual;
select '[' || ltrim('      Oracle    ') || ']' from dual;
select '[' || rtrim('      Oracle    ') || ']' from dual;

--날짜함수 ...
select sysdate from dual;  --현재날짜
select sysdate-1 from dual;

select sysdate - hiredate 근무일수 from emp;

--특정 기준으로 반올림하는 round
--round(date,format) 지정한 날짜에 대해 반올림처리

/*
    포맷                  단위
    CC, SCC              4자리 연도의 끝 두글자를 기준으로 반올림
    SYYY,YYYY,           년(7월 1일 부터 반올림)
    SYEAR, YYY,YY,Y
    DDD, D, J            일을 기준
    HH, HH12, HH24       시를 기준
    Q                    한분기의 두번째 달의 16일을 기준으로 반올림
    MONTH, MON, MM, RM   월(16일 기준으로 반올림)
    DAY, DY, D           한주가 시작되는 날짜
    MI                   분을 기준으로
*/
select hiredate, round(hiredate, 'YYYY') from emp;

--trunc 날짜 자르기...
select hiredate, trunc(hiredate, 'MM') from emp;

--날짜함수
select sysdate from dual;
select sysdate -1 어제, sysdate 오늘, sysdate+1 내일 from dual;
select sysdate -365 작년, sysdate 오늘, sysdate+111 먼 미래 from dual;
desc emp;

select sysdate - hiredate 근무일수 from emp;

/*
문자형으로 변환하는  to_char()
날짜를 문자로 : to_char(날짜데이터,'출력형식')

*/
select sysdate, to_char(sysdate, 'yyyy-mm-dd') from dual;
select hiredate, to_char(hiredate, 'yyyy/mm/dd dy') from emp;
-- 시간 출력형식, am or pm ,a.m or p.m, hh or hh12 hh24 mi ss
select to_char(sysdate, 'yyyy/mm/dd, hh24:mi:ss') from dual;

--숫자를 문자형태로 출력
select to_char(1230000,'L9,999,999.000') from dual;
select to_char(123456,'9999999999') from dual;
--숫자 출력 형식 :0자리수를 나타내고 , 맞지 않는 경우 0으로 채움 9자리수이고 맞지 않으면 채우지않음
--L -각 지역별 통화 기호를 앞에 표시, .소수점, ,천단위 구분

--날짜형으로 변환하는 to_date
--to_date('문자','format')
select ename, hiredate from emp
where hiredate = to_date(19810220,'YYYYMMDD');

select trunc(sysdate - to_date('2024/01/01', 'YYYY/MM/DD'))
from dual;

--to_number() : 문자열을 숫자로 변형
select to_number('20,000','99,999') -234 from dual;
--nvl(컬럼,지정할 값) 컬럼에 null이 있을 경우 자동으로 지정값으로 변경
select ename, sal , sal*12+comm,
nvl(comm,0),sal * 12+nvl(comm,0) annsal from emp
order by annsal;

select * from emp;
select * from tab;
select *from salgrade;
select *from dept;

--MGR (manager)
select empno,ename nvl(mgr,'')||'CEO' as Manager from emp where mgr is null;
select ename,deptno,decode(deptno, 10,'account', 20, 'research',30, 'sales',40,'operations')
as dname from emp;

.

시퀸스

  • 기본키를 가지고 사용할 때, 매번 그 값을 생성하기 어렵다. 이것을 연속된 값으로 자동으로 생성하게 하기 위해서 만들어 사용하는 것이 시퀸스... (유사-auto-increment)
  • (형식) - 생성 create sequence sequence_name [start with n] [increment by n] [{maxvalue n | nomaxvalue}] [{minvalue n | nominvalue}] [{cycle | nocycle}] [{cache n | nocache}]
  • start with : 시퀸스 번호의 시작값을 지정할 때
  • increment by : 연속적인 시퀸스 값의 증가값 설정
  • maxvalue n | nomaxvalue : maxvalue는 최대값을 의미함, nomaxvalue는 최대값을 지정하지 않음 이경우, 10^27의 값을 사용(ASCENDING), -1인 경우는 (DESENDING)
  • minvalue n | nominvalue : minvalue는 최소값을 지정. nominvalue를 지정하는 경우에는 SCENDING순서일 경우에는 1이고, DESCENDING인 경우에는 10^26으로 설정된다.
  • cycle | nocycle : 시퀸스 값이 최대값에 도래하면 어떻게 진행할지 결정. CYCLE은 처음으로 되돌림. NOCYCLE은 에러발생.
  • cache n | nocache : CACHE는 메모리상의 시퀸스 값을 관리하게 하는 것으로 기본 값은 20, NOCACHE는 원칙적으로 메모리상에서 시퀸스를 관리하지 않음.

[시퀸스 생성하기]

  1. DEPT_DEPTNO_SEQ :시작값은 10이고, 10씩 증가하는 시퀸스 작성
  2. EMP_SEQ2 : 시작값이 1이고, 증가값 1이고, 최대값이 100000인 시퀸스
  3. EMP_SEQ3 : 시작값이 10이고, 증가값 2이고, 최대값이 10000인 시퀸스
  • 시퀸스 값에 접근 : currval, nextval
  • currval : 현재 사용중인 sequence의 값을 출력
  • nextval : 현재 사용중인 sequence값의 다음 값을 출력(현재값에 다음을 적용한 후에 출력)
  • 삭제 : drop sequence sequence_name
  • 수정 alter sequence sequence_name [increment by n] [{maxvalue n | nomaxvalue}] [{minvalue n | nominvalue}] [{cycle | nocycle}] [{cache n | nocache}]
  • 연습 문제
    • 부서 번호를 생성하는 시퀀스 객체를 생성하여 시퀀스 객체를 이용하여 부서 번호를 자동 생성하도록 해 봅시다. 이 문제를 풀기 위해서 다음과 같이 부서 테이블을 생성합니다부서 번호를 저장하는 DEPTNO 컬럼은 기본 키로 설정하였으므로 중복된 값을 가질 수 없습니다.추가된 행을 살펴보면 시퀀스 객체가 발생시킨 일련번호가 부서 번호에 적 용된 것을 확인할 수 있습니다. 시퀀스 객체의 초기 값을 10으로 하여 10씩 증가하도록 했기 때문에 증가 치를 지정했기 때문에 부서 번호가 10, 20, 30, 40으로 지정된 것을 확인할 수 있습니다.
      1. DEPTNO 컬럼에 유일한 값을 가질 수 있도록 시퀀스 객체 생성(시퀀스 이 름 : DEPT_EXAMPLE_SEQ)해 봅시다.
        • CREATE SEQUENCE DEPT_EXAMPLE_SEQ START WITH 50 -- 초기값을 50으로 설정 INCREMENT BY 10; -- 10씩 증가하도록 설정
      2. 새로운 로우를 추가할 때마다 시퀀스에 의해서 다음과 같이 부서 번호가 자 동 부여되도록 해 봅시다.
        • INSERT INTO DEPT_EXAMPLE (DEPTNO, DNAME, LOC) VALUES (DEPT_EXAMPLE_SEQ.NEXTVAL, 'SALES', 'NEW YORK');
      • DROP SEQUENCE문으로 시퀀스를 제거해 봅시다. DROP SEQUENCE DEPT_DEPTNO_SEQ;
    • 다음은 시퀀스 객체 생성 후 로우를 추가한 결과를 확인한 결과 화면입니다.
    • CREATE TABLE DEPT_EXAMPLE( DEPTNO NUMBER(4) PRIMARY KEY, DNAME VARCHAR(15), LOC VARCHAR(15) );

java 연동하기(Oracle)

  1. Driver Loading
  2. DriverManger을 이용하여 Connection 객체 생성
  3. SQL 작성(preparedstatement방식은 SQL을 먼저 작성해야 함)
  4. PreparedStatement 객체 사용(Statement 객체 대용)
  5. SQL실행
  • PreparedStatement를 사용할까?
    • SQL에 전달하여 처리하는 값을 변환하는 것이 Statement 까다롭다는 점.
    • PreparedStatement는 이것을 간결하게 할 수 있게 작업해줌.
    • 간단하게 값을 전달할 때에 SQL에 ?로 처리하여 값을 지정하고, 변환 처리는 자동으로 ?는 인덱스 값을 사용하여 참조하기 때문에 여러개인경우 1번부터 순서대로 지정!