본문 바로가기

DataBase/Oracle

(9)
[Oracle] ESCAPE - LIKE 연산자에서 '%' 와 '_' 를 검색하기 ESCAPE - LIKE로 특수문자를 포함하여 검색하기 '_'은 보통 하나의 임의의 문자를 의미하고, '%'는 0개 이상의 문자를 의미한다. 종종 '_' 또는 '%'를 포함한 데이터를 구해야 할 때가 있는데, 이 때 ESCAPE를 사용할 수 있다. ESCAPE SELECT last_name FROM employees WHERE last_name LIKE '%A\_B%' ESCAPE '\'; '%' 또는 '_' 앞에 임의의 특수문자 둔 후 ESCPAE로 해당 문자를 지정하면 검색이 가능하다. 예시 SELECT NAME FROM STUDENT WHERE NAME LIKE '%_%'; -- 1문자 이상의 모든 데이터를 SELECT SELECT NAME FROM STUDENT WHERE NAME LIKE '%%..
[Oracle] 테이블수정 - DDL / ALTER DDL (데이터 정의 언어 : Data Definition Language) 테이블이나 관계의 구조를 생성하는데 사용 CREATE : 데이터베이스, 테이블 등을 생성한다. DROP : 데이터베이스, 테이블 등을 삭제한다. ALTER : 데이터베이스, 테이블 등을 수정한다. TRUNCATE : 테이블의 데이터를 전부 삭제하고 사용하고 있던 공간을 반납한다. 즉 테이블을 초기화한다. 테이블 수정 (ALTER) 1. 테이블에 컬럼 추가 (ADD) ALTER TABLE 테이블명 ADD(컬럼명 데이터타입(사이즈)) - 예시 -- USER테이블에 나이, 성명 컬럼 추가 ALTER TABLE USER ADD(AGE INT(2)) ALTER TABLE USER ADD(NAME VARCHAR2(20)) 2. 컬럼 타입,..
[Oracle] 테이블 삭제, 완전삭제(Purge) - DROP Drop - 테이블 삭제 DROP TABLE 테이블명 DDL 중 하나로 (CREATE, ALTER, DROP, TRUNCATE) 자동 COMMIT 되며 로그를 남기지 않는다. Oracle(10g 이상의 버전부터)에는 휴지통(recyclebin)이라는 것이 존재하며, DROP한 테이블은 바로 지워지는 것이 아니라 이곳으로 들어가게 된다. 즉 해당 테이블에서 쓰고 있던 공간은 바로 재활용되지 않는다. 테이블 완전 삭제 DROP TABLE 테이블명 PURGE; PURGE명령어를 사용하면 휴지통에 테이블을 보내지 않고 바로 삭제할 수 있다. 휴지통에서 테이블은 완전히 사라지게 되고 사용하던 공간은 재활용된다. 휴지통에 있는 테이블을 조회 SHOW RECYCLEBIN 휴지통에 있는 테이블을 복원 FLASHBACK..
[Oracle] 자릿수 채우기, 공백 채우기 - LPAD, RPAD 숫자형 문자의 경우 문자의 길이를 특정한 값으로 맞춰야 하는 경우가 있는데, 이때 LPAD, RPAD를 사용할 수 있다. LPAD는 왼쪽, RPAD는 오른쪽부터 총 문자길이 만큼 지정한 문자를 채운다. LPAD LPAD(값, 총 문자 길이, 문자) LPAD 함수는 지정한 길이 만큼 왼쪽부터 특정문자로 채워진다. 문자를 지정하지 않을 경우 공백(Space)으로 문자가 채워진다 문자 수 : 총 문자길이 - 값의 length 예시 --Space를 . 으로 표현하였다. LPAD('123', 5) -- ..123 LPAD('123', 5, ' ') -- ..123 LPAD('123', 5, '0') -- 00123 LPAD('123', 5, 'x') -- xx123 RPAD RPAD(값, 총 문자 길이, 문자) ..
[Oracle] 조회 순번 매기기 - ROWNUM, ROW_NUMBER() ROWNUM SELECT 해온 데이터에 일련번호를 매기며, 무조건 1번부터 차례대로 붙여진다. 특정 집합에서 원하는 만큼의 행만 가져오고 싶을 때 활용할 수 있다. 순서가 결정 된 후 ORDER BY로 정렬되므로 ROUNUM과 ORDER BY를 함께 사용하면 순서가 뒤섞일 수 있다. 원하는 결과를 얻기 위해선, 서브 쿼리 결과(ORDER BY)에 ROWNUM을 매겨야 한다. 예시 SELECT * FROM TABLE WHERE ROUNUM = 20 -- 20살 이상인 사람의 데이터를 ROUNUM을 붙여 추출 SELECT ROWNUM, T1.* FROM ( SELECT * FROM TABLE ORDER BT AGE) T1 -- 나이순으로 ROWNUM을 붙여서 데이터 추출 ROW_NUMBER() ROW_NUM..
[Oracle] NULL값을 치환해주는 함수 - NVL, NVL2, NULLIF NVL, NVL2, NULLIF는 NULL값을 치환할 때 사용할 수 있는 함수이다. 이 셋은 Oracle에서만 지원하는 함수이기 때문에 MySQL 등에서는 사용할 수 없다. NVL NVL(Column, Value) NULL값을 다른값으로 변경할 때 사용한다. Column의 값이 NULL일경우 Value의 값을 반환하고, Column의 값이 NULL이 아닐 경우 Column의 값을 반환한다. 예시 NVL(Column, NULL일 경우 반환값) NVL(컬럼, 'IS NULL') -- 컬럼의 값이 NULL 인 경우 'IS NULL' 로 치환 NUL(컬럼, 9999) -- 컬럼의 값이 NULL인경우 9999로 치환 NVL2 NVL2(Column, Value1, Value2) Decode 와 NVL을 합쳐놓은 형..
[Oracle] Pro*C - 간단정리 실무에서 사용하고 있는 Pro*C! C의 확장자는. c이고, Pro*C의 확장자는. pc이다. Pro*C라는 건 일하게 되면서 처음 접하게 되었는데.. 다음 프로젝트를 진행할때 참고할 수 있도록 제대로 정리를 해두어야겠다! 여러 사이트 정보를 참고하여 정리했지만, 틀린 정보일수 있음! > 틀린정보는 수정할예정! Pro*C Pro*C는 오라클 데이터베이스와 연동할 수 있는 C 프로그램이며, C 프로그램으로 처리할 수 있는 모든 기능을 Pro*C로도 구현할 수 있다 SQL 문은 절차형 언어가 아니기 때문에 오라클을 포함한 많은 데이터베이스는 PL/SQL이라는 절차형 언어를 제공한다. PL/SQL은 오라클 내부라는 한정된 공간에서 실행되는 도구인데, 이런 고민을 해결하기 위해서 대부분의 DBMS 벤더는 외부 ..
[Oracle] 문자열 관련 함수 - SUBSTR, INSRT, REPLACE, TRANSLATE, CONCAT SUBSTR - 문자열 자르기 SUBSTR(문자열, 시작위치, 추출위치) 시작 위치가 음수일 경우 : 마지막 위치부터 거슬러 올라간 위치에서 시작한다. 추출 길이를 생략 : 시작 위치부터 문자열 끝까지 반환한다. SUBSTR('대한호랑이', 1, 2) -- 결과 : 대한 SUBSTR('대한호랑이', -1, 2) -- 결과 : 이 SUBSTR('대한호랑이', 3) -- 결과 : 호랑이 SUBSTR('대한호랑이', -3, 3) -- 결과 : 호랑이 SUBSTR('대한호랑이', -1, 2) : 시작 위치가 음수이기 때문에, 뒤에서 첫 번째 글자부터 두 글자 출력 →이 (더 이상 문자가 없기에 '이'만 출력) INSTR - 특정 문자 위치 값 찾기 INSTR(문자열, 찾을문자, 시작위치, 찾을 순번) 문자열의 ..