1. java로 개발 진행할떄 BEAN이나 Insert, update . insert 문구 만들때 쉽게 만들어주는 쿼리문

복사 해서 이용하면 된다.

1. 컬럼 추가 

 alter table 테이블 add(필드 number(10));

2. 컬럼명 변경 
alter table 테이블 rename column   현재이름  to 변경이름;


3.데이터 타입 변경 
alter table 테이블 modify(필드명 varchar(10));


4.컬럼삭제

alter table 테이블 drop(필드);


 오라클에서 랜덤으로 데이터를 가져올때 사용한다. 

 
SELECT ROUND(DBMS_RANDOM.VALUE(1, 45),0) AS N1,
ROUND(DBMS_RANDOM.VALUE(1, 45),0) AS N2,
ROUND(DBMS_RANDOM.VALUE(1, 45),0) AS N3,
ROUND(DBMS_RANDOM.VALUE(1, 45),0) AS N4,
ROUND(DBMS_RANDOM.VALUE(1, 45),0) AS N5,
ROUND(DBMS_RANDOM.VALUE(1, 45),0) AS N6
FROM DUAL

 

쿼리보기하여 릴레이션 이름을 찾은후  constrain_name에서 찾아본다. 

select CONSTRAINT_NAME, TABLE_NAME, R_CONSTRAINT_NAME

from user_constraints
where CONSTRAINT_NAME = 'R_101' /* 에러 코드에 나와있는 릴레이션  이름 */
-- DB 테이블 스키마 가져오기.
SELECT  B.COLUMN_NAME  AS 컬럼명
        , B.DATA_TYPE AS 테이터타입,
        B.DATA_LENGTH     AS 길이,
        B.NULLABLE AS NULL구분,
        B.COLUMN_ID AS 컬럼순서,
        A.COMMENTS AS 설명
FROM    USER_COL_COMMENTS A, USER_TAB_COLUMNS B
WHERE  B.TABLE_NAME = A.TABLE_NAME
    AND B.COLUMN_NAME = A.COLUMN_NAME
    AND B.TABLE_NAME LIKE '테이블명'
ORDER BY B.COLUMN_ID;
 

테스트용 테이블 만들때 유용하게 쓸수 있죠..

CREATE TABLE TEST_MEMBER AS SELECT * FROM MEMBER

 

검색을 걸어서 필요한 데이타만 복사할수도 있죠.

CREATE TABLE TEST_MEMBER AS SELECT * FROM MEMBER WHERE IDX<10000

 

테이블 구조만 복사하고 싶다면..

CREATE TABLE TEST_MEMBER AS SELECT * FROM MEMBER WHERE 1=2

검색조건을 이렇게 한다면 테이타는 복사가 안되겠죠..

 

테이블이 이미 만들어진 경우는

INSERT INTO TEST_MEMBER SELECT * FROM MEMBER


주의할점은 테이블구조만 복사된다는 것이다.

프라이머리키나 인덱스등은 복사가 안돼니 따로 설정해 주어야 한다.


-- 추가


테이블을 다른 테이블스페이스로 지정하고 미리 생성해 둡니다.
CREATE TABLE COPY_TB
(A NUMBER,
 B VARCHAR2(10))
TABLESPACE COPY_TBS

그리고 기존 테이블의 내용을 새로 생성한 테이블에 쑤셔 넣습니다.
INSERT INTO COPY_TB SELECT * FROM ORI

이게 이상해 보이지만... exp/imp로 하는 방법도 있습니다.
요기에 대해서는.. 패스 ㅡㅡ;

9i 이상에서는 단 한줄로 테이블이 속한 테이블스페이스를 옮길 수 있습니다.
요렇게

ALTER TABLE copy_tb MOVE TABLESPACE users;

인덱스도 옮길 수 있다. 테스트용 scott꺼를 옮겨 보기로 하자.

alter index PK_EMP rebuild tablespace users

--BEAN CLASS 만들기

select

    'private String ' || lower(SUBSTR(a.COLUMN_NAME, 1,1))||SUBSTR(replace(INITCAP(lower(a.COLUMN_NAME)), '_',''), 2) || ' = "";'

    || '    //' || NVL(b.COMMENTS, '')

    as 빈소스

FROM USER_TAB_COLS a

   , USER_COL_COMMENTS b

WHERE a.TABLE_NAME = b.TABLE_NAME

and a.COLUMN_NAME = b.COLUMN_NAME

AND a.TABLE_NAME=upper('ez_user');

 

 

 

--SELECT 만들기

select  decode(rownum, 1, 'SELECT ' ||  CHR(13))

     || '' || upper(COLUMN_NAME)     

     || ' as ' ||lower(SUBSTR(COLUMN_NAME, 1,1))||SUBSTR(replace(INITCAP(lower(COLUMN_NAME)), '_',''), 2)    

     || decode(rownum, (COUNT(*) OVER()), CHR(13)

            || ' FROM '|| TABLE_NAME ||'  ' ||'  ;', ',   ')

    as 조회쿼리

FrOm USER_TAB_COLS --ALL_TAB_COLS, USER_TAB_COLS

where  TABLE_NAME=upper('CORP_OPER_DAY');-- and OWNER='MYEZWEL';

 

 

 

--INSERT 쿼리 만들기

select

    TABLE_NAME,

    '          '||decode(rownum, 1,'',',')||COLUMN_NAME as 컬럼,

    '          '||decode(rownum, 1,'',',')||'#'||lower(SUBSTR(COLUMN_NAME, 1,1))||SUBSTR(replace(INITCAP(lower(COLUMN_NAME)), '_',''), 2) || '#' as 세팅부

FrOm USER_TAB_COLS

where  TABLE_NAME=upper('EZ_EC_ACTING');

 

 

 

--UPDATE 쿼리 만들기

select

    TABLE_NAME||' Z',

    '          '||'<isNotEmpty prepend="," property="'||lower(SUBSTR(COLUMN_NAME, 1,1))||SUBSTR(replace(INITCAP(lower(COLUMN_NAME)), '_',''), 2)||'">'||

    'Z.'||COLUMN_NAME || '='||

    '#'||lower(SUBSTR(COLUMN_NAME, 1,1))||SUBSTR(replace(INITCAP(lower(COLUMN_NAME)), '_',''), 2) || '#' ||

    '</isNotEmpty>'

     as 수정세팅부

FrOm USER_TAB_COLS

where  TABLE_NAME=upper('EZ_EC_ACTING');

-- 오브젝트 조회
SELECT *
FROM ALL_OBJECTS
WHERE OBJECT_NAME LIKE '명'

-- 테이블 조회
SELECT *
FROM ALL_TABLES
WHERE TABLE_NAME LIKE '명'


-- 시노님 조회
SELECT *
FROM ALL_SYNONYMS
WHERE SYNONYM_NAME = '명'


-- 테이블의 인덱스 정보
SELECT *
   FROM ALL_IND_COLUMNS
WHERE TABLE_NAME = '테이블명'


-- 테이블의 컬럼 정보
SELECT *
   FROM ALL_TAB_COLUMNS
WHERE TABLE_NAME = '테이블명'


-- TABEL COMMENT 쿼리
  SELECT *
    FROM ALL_TAB_COMMENTS
  WHERE TABLE_NAME = '테이블명'


-- COLUMN COMMENT 쿼리
  SELECT *
    FROM ALL_COL_COMMENTS
  WHERE TABLE_NAME = '테이블명'


-- 인덱스 정보
select * from all_indexes


[출처] [오라클] 테이블 인덱스, 컬럼, 커멘트 정보 얻는 쿼리|작성자 지혜
http://blog.naver.com/bluegriffin?Redirect=Log&logNo=40028654085


1) 문자형 함수

LOWER             모든 문자를 소문자로

UPPER              모든 문자를 대문자로

INITCAP            첫 글자는 대문자,나머지는 소문자로
CANCAT            첫 번째 문자와 두 번째 문자를 연결

SUBSTR            문자의 길이를 리턴할 때
LENGTH            문자의 길이를 리턴할 때
NVL                  널값을 다른 값으로 대체할 때
NVL2                조건에 의해 널값을 다른 값으로 대체할 때


SUBSTR            특정 문자의 문자열중 필요 부분만 선별하여 사용


RTRIM               서브 스트림의 정확한 위치와 길이를 요구(오른쪽)


LTRIM               서브 스트림의 정확한 위치와 길이를 요구(왼쪽)
RPAD                문자열을 제외한 공간에 지정한 문자열로 대체(오른쪽)


LPAD                문자열을 제외한 공간에 지정한 문자열로 대체(왼쪽)
TRANSLATE       첫 문자는 탐색집합의 첫 문자로 대체(2번째도 동일)
REPLACE          특정 문자열을 다른 문자열로 대체


SOUNDX            같은 단어 또는 유사한 사운드 단어를 음성학적으로
LENGTH            문자의 실제 길이를 변환할 때
LENGTHB          문자열의 실제 길이를 변환할 때
INTSTR             문자열 내의 특정 스트림의 위치
NULLIF             조건이 같으면 NULL,다르면 지정된 값을 리턴할 때


COALESCE       조건에 따라 여러 가지 값을 리턴할 때



2. 시스템 함수

USER               현재 DB 사용자
USERID            현재 DB 사용자에게 할당되는 사용자번호


3. 숫자형 함수

ROUND             해당 소수점 자리에서 반올림할 때
TRUNC             해당 소수점 자리에서 절삭할 때
MOD(m/n)        m을 n으로 나누고 남은 나머지를 리턴할 때
ABS                 숫자 값을 절대값으로 바꾼다
SIGN                숫자가 양수:+1, 음수:-1, 0:0
FLOOR             실수값을 정수값으로
CEIL                그 수보다 가장 크거나 작은값을 리턴
POWER            해당 수에 대한 지수값을 표현
LOG                로그값으로 변환
SIN                  SIN값
COS                COS값
TAN                 TAN값



4. 날짜형 함수

SYSDATE         현재 시스템 날짜를 보여줄 때
ADD_MONTHS   지정한 날짜에 몇 월을 추가한 결과의 월을 계산할 때
LAST_DAY        해당 월의 마지막 날짜를 알고자 할 때
NEW_TIME        해당 표준시로 시간을 변환할 때
NEXT_DAY        해당 날짜의 다음 지정한 날짜로 현환할 때
NONTH_BETWEEN   지정된 월 간의 월수를 알고자 할 때




5. 변환 함수

TO_CHAR       숫자,날짜 타입의 Data를 varchar2타입으로 변환
TO_NUMBER   숫자를 포함하는 문자 String을 number 타입으로 변환
TO_DATE        문자 String을 날짜 타입으로 변환


출처
http://wingh.egloos.com/4152294 

기타 다른거

오라클에서 인덱스 조회하기

SELECT
a.index_name,a.index_type,a.table_name,b.column_name
     FROM USER_INDEXES a,USER_IND_COLUMNS b
     WHERE a.index_name = b.index_name
                 AND a.table_name=upper('테이블명');