테이블명이 아리까리해서 해당 유저의 전체 테이블을 보고 싶었다. 그런데 쿼리가 뭐지? 데이터 조회 쿼리만 했지 테이블 관련은 해보질 않아서리... 결론은 아래처럼 하면 되었다. -- 테이블 목록조회SELECT *FROM all_all_tables 해당 유저의 테이블 조회SELECT *FROM all_all_tablesWHERE owner='오너명' 예제SELECT *FROM all_all_tablesWHERE owner='AAA' ========================================== -- 유저가 소유한 전체 테이블 코멘트 보기SELECT *FROM ALL_TAB_COMMENTSWHERE OWNER='오너명' -- 유저가 소유한 전체 테이블 코멘트 보기 예제SELECT *FROM A..
오라클 쿼리를 짜다보면 계층적으로 정렬해야 될 때가 있다. 예를 들어 메뉴(navigation) 출력. 그럴때 유용하게 사용할 수 있는것이 start with connect by prior order siblings by 이다. order by 로 sort할 경우 모든 데이터를 가지고 정렬을 하지만 order siblings by 각 계층별로 정렬을 한다. 그냥 정렬하면 계층구조가 흐트러지기 때문에 계층구조는 그대로 유지하면서 동일 부모를 가진 자식들끼리의 정렬 기준을 주는 것이다. 예를 들어 아래와 같이 있다고 하면start with a.parent_id='0'connect by prior a.menu_id=a.parent_idorder by siblings by a.sort asc 이러면 부모컬럼인 ..
웹 개발을 하다보면 게시판 목록을 만들일이 생긴다. 게시판 목록개발에서 빠질 수 없는게 페이징(paging) 이다. 요새는 페이징 없이도 많이들 하는데 그래도 페이징을 하는데도 있으니 배워보자. 우선 페이징 하다보면 floor(row_number() over (order by emp desc)-1)/10+1) 이렇게 생긴것을 보게될 것이다. 이게 뭔지 풀어보면 select row_number() over (order by emp desc),(row_number() over (order by emp desc)-1),(row_number() over (order by emp desc)-1)/10,(row_number() over (order by emp desc)-1)/10+1,floor(row_number..
오라클의 날짜 필드가 yyyy-mm-dd hh24:mi:ss 로 되어 있었다. 년월일 만 가지고 group by 해서 해달 날짜의 count를 세서 가장 큰 수를 얻고 싶었다. 그래서.. group by 절에 group by to_char(regdate,'yyyy-mm-dd') 를 했는데 "ora-00979: GROUP BY 표현식이 아닙니다." 라고 떳다. 흠.. 그럼 어떻게 하란 말이지? 알고 봤더니 select 절에 한번 더 써주니까 되었다. 즉, select regdate, count(*)group by to_char(regdate,'yyyy-mm-dd') 이렇게 되었던것을 select to_char(regdate,'yyyy-mm-dd'), count(*)group by to_char(regdat..
instr()오라클에서 내가 원하는 컬럼의 값에 내가 원하는 구문이 포함되어 있는지 여부를 확인할때 사용. 포함되어 있고, 포함되어 있는 위치가 어디인지 알고 싶을때 사용. instr('비교할 대상', '비교하고자하는 값', 비교를 시작할 위치, 검색된 결과의 순번) select instr('TEST SAMPLE CODE', 'S', 1, 1) FROM DUAL; -'TEST SAMPLE CODE'라는 구분에서 'S'를 찾는데 1부터 시작해서 1번째 찾아지는 'S'의 위치는 어디인가? RESULT : 3 이렇게도 사용이 가능 하다. -1을 하면 맨 뒤부터 시작한다. select instr('c:\aa\bb\cc.html', '\', -1) from dual; RESULT : 9 응용을 하면 경로에서 파일..
오라클을 사용하다 보면 원래 설계할때 컬럼 사이즈를 지정했는데 사용하다 보니 더 커져야할 경우가 생긴다. 대개 설계할때는 이정도면 되겠지.. 하고 create 를 하는데 사용하다 보면 크기가 작아서 데이터가 안들어갈 경우가 종종 생긴다. ALTER TABLE 테이블이름 MODIFY(컬럼명 데이터타입(사이즈)); 즉,ALTER TABLE WEB MODIFY(URL VARCHAR2(200)); WEB 테이블의 URL 컬럼 크기를 200으로 변경함.
나참 어처구니가 없는 일이 발생했다. 그 이유는 아래에서 설명 하겠다. 일단 오라클의 exists에 대해 살펴보면 가장 기본적으로 select * from A where not exists (select * from B where A.c1 = B.c1) => A가 B에 존재하지 않는 것을 조회 select * from A where exists (select * from B where A.c1 = B.c1) => A가 B에 존재하는 것을 조회 select 도 되고 exists를 이용하여 삭제도 가능 하다.DELETE FROM EMP A WHERE EXISTS ( SELECT 1 FROM DEPT B WHERE A.DEPTNO = B.DEPTNO AND B.DEPTNO = '20' ); 그 밖의 삭제 방법..
컬럼 추가. ALTER TABLE 테이블이름 ADD 새로 추가된 컬럼은 테이블 맨 마지막에 추가되며 NULL 값으로 입력됩니다. ALTER TABLE EMP ADD (email VARCHAR2(10)); 추가를 했으면 추가만 하지 말고 추후를 위해 주석을 다는 습관도 들이는게 좋겠죠^^ 주석은 습관이듯 합니다.. 주석을 안다는 습관을 들이면 습관적으로 안다는 거고.. 그럼 다른사람이 보기 힘들겠죠.. 시간이 걸리더라도 주석을 다는 습관을 들이면 본인도 편하고 다른사람도 편할듯.. 테이블 및 컬럼 주석 생성 COMMENT 명령으로 주석을 생성 할 수 있다. -- 테이블 주석 생성SQL> COMMENT ON TABLE emp IS '사원'; -- 컬럼 주석 생성SQL> COMMENT ON COLUMN emp..
DB는 유저(사용자) 기반이다.그냥 개인적으로 오라클 설치해서 쓸때는 유저(사용자) 하나 만들어서 사용하기 때문에 테이블을 만들든 함수를 만들든 시퀀스를 만들든 해당유저에 만들어지기 때문에 그냥 사용하면 되었었다. 그러나.. 하나의 DB를 여러명이 사용하는 경우에는 얘기가 달라진다. 즉, 유저가 여러명인 것이다. 그래서 하나의 유저에서 테이블도 만들고 함수, 시퀀스를 만들었다면 다른 유저가 사용하려면 사용할 수 없고 권한을 받아야 한다. 이렇게 되면 함수 뿐만 아니라 테이블 생성등도 마찬가지로 생성도 하고 권한도 새로 받은 유저에다가 따로 줘야 한다.. 항상 혼자 DB만들고 사용해서 이렇게 권한을 일일히 주는것이 조금 적응이 안된다. 그냥 생성하고 바로 쓰기만 해서리.. 그래서 권한을 주는 쿼리를 만들어..
sql 작성하다보면 select 한 데이타에 순번 채번이 필요한 경우가 생깁니다. 저 같은 경우는 select insert를 하는데 insert 하는 테이블에 키가 2개 있어서 어쩔 수 없이 사용하지 않는 한개의 키에는 다른 값을 넣어줘야 했습니다. 오라클에 row_number()가 있으니 이걸 사용하면 됩니다. select row_number() over(order by dummy desc) as seq from dual; 이렇게 쿼리를 날리면SEQ 1 이라고 출력될 것입니다. dual 테이블에는 한건만 있어서 저렇게 나오는데 여러건이 있는 테이블을 사용해서 해보면 순서대로 나옵니다. 그룹화할때는 partition by를 사용한다고 하는데 이것은 아직 사용안해봤다^^
- Total
- Today
- Yesterday
- KG
- 문자열
- EC
- 자바 셀레니움
- xe애드온
- 이클립스
- JDBC
- ocpjp
- xe addon
- C언어
- MySQL
- 자바
- 파싱
- 스크래핑
- XE
- 인포믹스
- proc
- 오라클
- 파이썬
- XE3
- C
- webix
- php
- ocajp
- Python
- esql
- 포인터
- ocjap
- 프로씨
- 자바 smtp
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |