본문 바로가기
반응형

SQL/Oracle91

오라클 테이블 컬럼 추가/삭제/변경 방법 정리(ALTER TABLE) 오라클에서 ALTER를 사용해 테이블에 컬럼 추가 삭제 변경을 할 경우 혹은 컬럼명을 변경을 할 경우에 사용하는 쿼리를 정리해 놨는데 바로 복사 붙여넣기해서 사용하려면 글 맨 아래로 스크롤을 내린 뒤 쿼리를 복사 붙여넣기 해주면 되겠다 주의할 점은 컬럼 추가, 변경 시 컬럼명과 데이터타입까지는 필수지만 그 뒤에는 생략을 해도 상관이 없고 NOT NULL 조건을 사용할 시에는 반드시 DEFAULT로 기본값을 설정해 줘야 에러가 발생하지 않는다 -- 테이블 컬럼 추가 ALTER TABLE 테이블명 ADD(컬럼명 데이터타입(크기) NOT NULL 등 ); ALTER TABLE TEST2 ADD(TEST VARCHAR2(10) DEFAULT 'ASD' NOT NULL); -- 테이블 컬럼 삭제 ALTER TAB.. 2022. 1. 4.
ORA-01758: 테이블은 필수 열을 추가하기 위해 (NOT NULL) 비어 있어야 합니다. 에러 해결방법 오라클에서 ALTER를 이용하여 테이블을 수정하던 도중 ORA-01758: 테이블은 필수 열을 추가하기 위해 (NOT NULL) 비어 있어야 합니다. 이런 에러가 발생하는 것이 보이는데 이게 NOT NULL 조건을 걸어 컬럼을 추가하는데 DEFAULT 값이 없어서 이런 에러가 발생하는 것이다 해결방법은 DEFAULT 값을 지정해주면 간단히 해결되는데 ALTER TABLE TEST2 ADD(TEST VARCHAR2(10)NOT NULL); 으로 사용하던 것을 ALTER TABLE TEST2 ADD(TEST VARCHAR2(10) DEFAULT '' NOT NULL); 이렇게 DEFAULT 값을 지정해주면 된다 2022. 1. 4.
오라클 조회 시 NULL 값 기준으로 정렬방법 오라클에서 특정 컬럼의 값이 NULL인 값을 먼저/나중에 정렬해 주려면 ORDER BY 컬럼명 NULLS FIRST/LAST를 사용해주면 되는데 위 두 스크린샷을 보면 NULLS FIRST를 사용한 경우 NULL인 값이 먼저 정렬되고 NULLS LAST를 사용한 경우 NULL인 값이 나중에 정렬되는 것이 보인다 예제에 사용한 쿼리는 아래와 같다 -- NULL 먼저 나오게 정렬 SELECT * FROM EMP ORDER BY COMM NULLS FIRST -- NULL 나중에 나오게 정렬 SELECT * FROM EMP ORDER BY COMM NULLS LAST 2021. 5. 21.
오라클 WM_CONCAT / LISTAGG 으로 여러 행을 한 행으로 합치는 방법 오라클에서 WM_CONCAT / LISTAGG를 사용해 여러 행의 내용을 한 행으로 합쳐줄 수 있는데 이미지에 사용한 예제들은 타이핑할 필요 없이 스크롤을 쭉 내리면 쿼리를 복사 붙여넣기 해서 사용해주면 된다 먼저 WM_CONCAT의 경우에는 WM_CONCAT(컬럼명) 을 사용해주면 테이블 여러 행의 값이 한 컬럼 안으로 들어온다 중복 제거를 위해서는 WM_CONCAT(DISTINCT 컬럼명) 으로 사용해주면 된다 WM_CONCAT의 경우에는 구분자가 ,로 고정이기 때문에 구분자를 콤마에서 다른 것으로 바꿔주려면 REPLACE(WM_CONCAT(컬럼명), ',', '구분자'); 으로 사용해주면 된다 다음으로는 LISTAGG를 사용하는 경우인데 WM_CONCAT은 정렬해서 합치기가 불가능하고 구분자 변경 .. 2021. 5. 19.
오라클 인덱스 타는지 확인방법 오라클에서 특정 쿼리 수행 시 인덱스(INDEX)를 타는지 확인하려면 쿼리문 위에 EXPLAIN PLAN FOR를 작성한 후 쿼리를 돌려주면 되는데 돌려주면 아무것도 뜨는 것이 없지만 SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY) 이 쿼리를 수행해주면 아까 EXPLAIN PLAN FOR를 사용했던 쿼리를 가지고 수행했을 경우 어떻게 수행할지 보여주는데 여기서 Operation / Name 부분을 보면 TABLE ACCESS FULL / TEST2 가 보이는데 Operation 부분이 FULL 이거나 Name에 인덱스 명이 들어오지 않으면 인덱스를 타지 않는 상태고 위와 같이 Operation 부분에 INDEX가 들어있거나 Name에 인덱스 명이 들어오면 인덱스를 타는 상태가 되겠.. 2021. 4. 14.
오라클 모든 테이블 이름 검색방법 오라클의 DBA_TABLES 테이블 안에 모든 테이블에 대한 정보가 들어있는데 SELECT * FROM DBA_TABLES WHERE OWNER = '스키마명' 위 쿼리를 사용해주면 스키마별로 모든 테이블 이름을 검색 가능하다 WHERE을 사용하지 않을 시에는 모든 스키마가 다 걸려서 조회되는 테이블이 너무 많아 검색하기 힘드므로 ONWER = '스키마명' 이렇게 사용해주면 간단하게 테이블을 검색할 수 있다 2021. 4. 12.

반응형