데이터베이스 노트/SQL

connections 현재사용 중인 sessions, processes 수 SELECT * FROM v$resource_limit WHERE resource_name in ('processes', 'sessions', 'transactions') 현재 접속중인 세션 정보 SELECT username, program FROM v$session;
사용법 시간 더하기 DATE_ADD(기준 날짜, INTERVAL) 시간 빼기 DATE$_SUB(기준 날짜, INTERVAL) 예제 1 초 더하기 SELECT DATE_ADD(NOW(), INTERVAL 1 SECOND); 1 분 더하기 SELECT DATE_ADD(NOW(), INTERVAL 1 MINUTE); 1 시간 더하기 SELECT DATE_ADD(NOW(), INTERVAL 1 HOUR); 1 일 더하기 SELECT DATE_ADD(NOW(), INTERVAL 1 DAY); 1 달 더하기 SELECT DATE_ADD(NOW(), INTERVAL 1 MONTH); 1 년 더하기 SELECT DATE_ADD(NOW(), INTERVAL 1 YEAR); 빼기를 DATE_ADD를 사용할 수 있음 SEL..
SQL 에서 '%'같은 특수 문자는 검색이 불가능하다. 예를 들어 WHERE 조건 = '%bb' 를 하게 되면 %bb 와 일치하는 조건을 찾고 싶은거였지만, bb가 마지막에 오는 문자를 검색하게 된다. 이처럼 특수문자가 포함된 문자열은 우리가 의도한바와 다르게 작동할때가 있는데, 이럴때 사용하는 것이 ESCAPE이다. 아래와 같이 사용한다. SELECT PRODUCT_NAME FROM PROUDCT WHERE PRODUCT_NAME LIKE '%#_%' ESCAPE '#'; ESCAPE 문자를 지정한 후에, 특수 문자앞에 ESCAPE문자를 넣어준다. 이렇게 되면 ESCAPE문자 뒤에 있는 문자를 일반 문자로 인식하게되어, _(언더바)가 들어간 상품..
앞에서만든 백업테이블에 있는 데이터를 다시 기존테이블에 부어야할 경우, SELECT INSERT 문을 사용하면 쉽게 데이터를 넣을 수 있다.1INSERT INTO 기존테이블 SELECT * FROM 백업테이블cs 원하는 컬럼만 넣고 싶을 때는 아래와같이 하면 된다.12345INSERT INTO 기존테이블(column1, column2, column3 ...)SELECT column1, column2, column3FROM 백업테이블[WHERE ]cs 사용 예)1INSERT INTO STUDENT SELECT * FROM STUDENT_BACKcs
작업을 하다보면 테이블에 있는 데이터를 임시로 백업을 해야하는 경우가 생긴다.신규테이블을 생성하면서 기존테이블에 있는 데이터를 신규테이블로 옮기는 SQL이 존재한다. 1CREATE TABLE 신규테이블 AS SELECT * FROM 기존테이블 [WHERE 조건]cs 사용 예)1CREATE TABLE STUDENT_BACK AS SELECT * FROM STUDENT WHERE NAME LIKE '강%'cs
개발자라면 옵티마이저가 실행계획을 생성할 때, 최대한도로 성능을 발휘할 수 있도록 불필요한 로직을 타지 않게 쿼리를 작성해야 한다. 같은 결과를 산출하는 쿼리는 여러 가지 형태로 작성될 수 있으므로, 개발자는 SQL 문장 단에서 최대한 효율적인 문장을 작성해야 한다. "쿼리를 이렇게 작성하면 좋은 성능을 발휘한다"라는 일반적인 가이드 라인을 알아보자! 가급적 WHERE 조건에서는 인덱스 컬럼을 모두 사용한다. 인덱스를 만들어 놓더라도 WHERE 조건을 어떻게 명시하느냐에 따라 옵티마이저가 인덱스를 사용할 수도 있고 사용하지 않을 수도 있다. 예를 들어 A와 B라는 컬럼의 인덱스를 만들었는데, WHERE 조건에서 A 컬럼만 사용한다면 인덱스를 타지 않게 된다. 예) CONTRACT 테이블에서 CONTRAC..
깡냉쓰
'데이터베이스 노트/SQL' 카테고리의 글 목록