반응형
반응형

oracle foreign key 생성/삭제

create table bbs (
 no number not null,
 id varchar2(20) not null,
 bbspasswd varchar2(20) not null,
 title varchar2(100) not null,
 content varchar2(1000) not null,
 regdate date not null,
 readcount number not null,
);

생성
SQL> ALTER TABLE 테이블명 ADD CONSTRAINT fk_bbs_id FOREIGN KEY(id) REFERENCES 참조되는 테이블명(id);

삭제
SQL> ALTER TABLE 테이블명 DROP CONSTRAINT fk_bbs_id;
반응형
반응형

1. 테이블 컬럼 추가하기(ALTER TABLE ADD)

[문법] ALTER TABLE 테이블명 ADD(컬럼명 데이타타입(사이즈));

( EX ) USER라는 테이블에 USER_NAME이라는 컬럼을 VARCHAR2(13) 타입으로 추가할 때

-> ALTER TABLE USER ADD(USER_NAME VARCAHR2(13)); 

 

2. 테이블 컬럼 수정하기(ALTER TABLE MODIFY)

[문법] ALTER TABLE 테이블명 MODIFY(컬럼명 테이타타입(사이즈));

( EX ) USER라는 테이블에 USER_AGE 라는 컬럼을 NUNBER(3) 타입으로 수정할 때

-> ALTER TABLE USER MODIFY(USER_AGE NUMBER(3));

 

3. 테이블 컬럼 삭제하기(ALTER TABLE DROP)

[문법] ALTER TABLE 테이블명 DROP COLUMN 컬럼명

( EX ) USER라는 테이블에 USER_NAME 이라는 컬럼을 삭제할 때

-> ALTER TABLE USER DROP COLUMN USER_NAME;

 

4. 테이블 컬럼 이름 변경하기(ALTER TABLE RENAME)

[문법] ALTER TABLE 테이블명 RENAME COLUMN 원래컬럼명 TO 바꿀컬럼명;

( EX ) USER라는 테이블에 USER_NAME 이라는 컬럼을 USER_FIRST_NAME으로 변경할 때

-> ALTER TABLE USER RENAME COLUMN USER_NAME TO USER_FIRST_NAME;

반응형
반응형

[DB] Oracle 해당월 1일부터 말일까지 날짜 리스트

dual 이용,

-- 년월일 입력
SELECT CONCAT('201902',LPAD(LEVEL, 2, '0')) AS GO_DAY 
FROM DUAL 
CONNECT BY LEVEL <= TO_CHAR(LAST_DAY(TO_DATE('2019' || '02' || '01', 'YYYYMMDD')), 'DD')

-- 년월 입력
SELECT CONCAT('201902',LPAD(LEVEL, 2, '0')) AS GO_DAY 
FROM DUAL 
CONNECT BY LEVEL <= TO_CHAR(LAST_DAY(TO_DATE('2019' || '02', 'YYYYMM')), 'DD')

3개월 날짜 리스트  ,  20191001 ~ 20191231 까지 날짜 리스트

-- 20191001 ~ 20191231 까지 날짜 리스트 
SELECT TO_CHAR(TO_DATE('20191001', 'YYYYMMDD') + LEVEL - 1, 'YYYYMMDD') GO_DATE
FROM DUAL 
CONNECT BY LEVEL <= TO_DATE('20191231', 'YYYYMMDD') - TO_DATE('20191001', 'YYYYMMDD') + 1
  
반응형
반응형

DB - Oracle : # to_char()의 'FM90' 의 의미

'9'는 해당 자리 숫자를 의미하고, 없을경우 공백으로 표시

'0'은 해당 자리 숫자를 의미하고, 없을경우 '0'으로 표시 

'FM'은 좌우 공백 제거

반응형
반응형

Oracle,  Dual 이란?  Dummy? 

 

듀얼은 본래 테이블로서, 데이터베이스 엔진은 DUAL을 SELECT FROM할 때 테이블 상의 디스크 입출력을 수행하였다.

이러한 디스크 입출력은 일반적으로 논리적인 입출력으로(물리적인 디스크 접근을 동반하지 않음) 디스크 블록들이 보통 메모리에 이미 캐시되어 있는 상태였다.

이로 말미암아 듀얼 테이블로의 논리적 입출력의 양이 매우 컸다.

10g 릴리즈 1을 기점으로 오라클 데이터베이스는 최적화되어, 데이터베이스는 듀얼 테이블이 실제로 존재하더라도 더 이상 듀얼 테이블에 물리적·논리적 입출력을 수행하지 않는다.

 

SELECT 1+1 FROM DUAL;
SELECT 1 FROM DUAL;
SELECT USER FROM DUAL;
select sysdate from dual;

ex) SELECT 시퀀스.NEXTVAL FROM DUAL;
ex) SELECT SYSDATE FROM DUAL;
ex) SELECT CURRENT_DATE FROM DUAL;
ex) Merge into 내부에서 사용
    MERGE INTO 테이블명  별칭
    USING 대상테이블/뷰  별칭
    ON 조인조건
    WHEN MATCHED THEN
      UPDATE SET
       컬럼1=값1
       컬럼2=값2
    WHEN NOT MATCHED THEN
      INSERT (컬럼1,컬럼2,...)
           VALUES(값1,값2,...);

 

 

반응형
반응형

Oracle SQL Developer 에서 출력시 그리드(Grid) 나오게 하는 것. 

 

F5로 실행시 출력시트에 그냥 스크립트로 나와서 보기에 불편하다. 

F9 또는 Ctrl + Enter 를 하면 출력시 그리드(Grid)로 나온다. 

select * from dual;
select sysdate from dual;

 

 

반응형

+ Recent posts