본문 바로가기

전체 글123

[Oracle] 데이터 삭제 (DELETE, TRUNCATE, DROP) 데이터 삭제 (DELETE, TRUNCATE, DROP) DELETE DELETE FROM tablename WHERE column1='KOREA'; : 특정 행 삭제 - WHERE절을 사용하지 않으면 모든 행이 삭제되므로 주의 - ROLLBACK, FLASHBACK 가능 TRUNCATE TRUNCATE TABLE tablename; : tablename의 모든 행 삭제 - ROLLBACK, FLASHBACK 불가 DROP DROP TABLE tablename; : tablename 테이블 전체(테이블자체) 삭제 - ROLLBACK 불가, FLASHBACK 가능 * ROLLBACK = 취소 * FLASHBACK = 복구 2020. 9. 17.
[Oracle] 데이터 수정 (UPDATE), LOCK 데이터 수정 (UPDATE) 기본 UPDATE tablename SET column1=50000, column2=300 WHERE column3='KOREA'; : COLUMN명 별로 ,(콤마)로 구분해서 입력 - WHERE절을 쓰지 않으면 해당 COLUMN의 모든 행이 변경되므로 WHERE절을 사용하지 않을 때 주의 서브쿼리 사용 UPDATE tablename SET column1=(SELECT column2 FROM tablename WHERE column3='KO') WHERE column3='KOREA'; : UPDATE 구문은 모든 절에서 서브쿼리를 작성할 수 있음 LOCK : 데이터 일관성 유지 - 같은 데이터를 동시에 갱신할 수 없음 - UPDATE 실행 시 COMMIT을 하기 전까지 해당 .. 2020. 9. 17.
[Oracle] 데이터 입력 (INSERT) 데이터 입력 (INSERT) 기본 INSERT INTO tablename (column1,column2,column3) VALUES(column1data1,column2data2,column3data3); : COLUMN 순서대로 데이터 입력 공백입력 - NULL, '' --NULL입력 INSERT INTO tablename(column1, column2, column3, column4) VALUES (한국, 1945, TO_DATE('1945/08/15', 'RRRR/MM/DD'), NULL); --''입력 INSERT INTO tablename(column1, column2, column3, column4) VALUES (한국, 1945, TO_DATE('1945/08/15', 'RRRR/MM/DD'.. 2020. 9. 17.
[Oracle] 서브쿼리 (SELECT절 서브쿼리) 서브쿼리 (SELECT절 서브쿼리) : 서브쿼리로 단일 값 조회 * 스칼라 서브쿼리 - SELECT절로 확장된 서브쿼리 - 출력되는 행 수 만큼 반복 실행 - 서브쿼리캐싱 : 첫 행 실행 시 결과를 메모리에 올려놓고, 다음 행부터 메모리에 올려놓은 결과를 출력 SELECT column1, column2, (SELECT MAX(column2) FROM table1 WHERE column3='KOREA') as maxnickname, (SELECT MIN(column2) FROM table1 WHERE column3='KOREA') as minnickname FROM table1 WHERE column3='KOREA'; : column3가 'KOREA'인 경우 column1,column2를 출력하되, col.. 2020. 9. 16.
[Oracle] 서브쿼리 (FROM절 서브쿼리) 서브쿼리 (FROM절 서브쿼리) : 쿼리 결과로 새로운 결과 집합을 만듬 SELECT t1.column1, t1.column2, t1.nickname FROM (SELECT column1, column2, RANK() OVER(ORDER BY column2 DESC) as nickname FROM table1) t1 WHERE t1.nickname=1; : column1, column2를 출력하되 nickname이 1인 경우만 출력 - WHERE절에는 분석함수를 사용할 수 없으므로 FROM절에서 분석함수 서브쿼리를 실행 2020. 9. 16.
[Oracle] 서브쿼리 (HAVING절 서브쿼리) 서브쿼리 (HAVING절 서브쿼리) : 그룹 함수로 검색된 데이터간의 비교 SELECT column1, SUM(column2) FROM table1 GROUP BY column1 HAVING SUM(column2) > (SELECT SUM(column2) FROM table1 WHERE column1="KOREA"); : column1, column2를 column1으로 묶어 출력하되, column1이 KOREA일 때의 column2 보다 큰 경우만 출력 * 그룹함수의 조건은 HAVING절 사용 2020. 9. 16.
[Oracle] 서브쿼리 (EXISTS, NOT EXISTS) 서브쿼리 (EXISTS, NOT EXISTS) : 특정 테이블의 결과가 다른 테이블에도 존재하는지 확인 EXISTS SELECT * FROM table1 t1 WHERE EXISTS (SELECT * FROM table2 t2 WHERE t2.column1 = t1.column1); : t1의 column1 중 t2의 column1에도 존재하는 t1의 데이터를 출력 - t1의 column1을 기준으로 t2의 column1을 검색 - 존재 확인 시 더 이상 데이터를 읽지 않음 NOT EXISTS SELECT * FROM table1 t1 WHERE NOT EXISTS (SELECT * FROM table2 t2 WHERE t2.column1 = t1.column1); : t1의 column1 중 t2의 c.. 2020. 9. 16.
[Oracle] 서브쿼리 (NOT IN) 서브쿼리 (NOT IN) : 특정 쿼리에서 검색한 결과 중 다른 쿼리에 없는 데이터를 검색 SELECT column1, column2, column3 FROM table1 WHERE column3 NOT IN (SELECT column4 FROM table1 WHERE column4 IS NOT NULL); : 서브쿼리 결과(column4)가 아닌 column3일 때, column1, column2, column3 출력 *IS NOT NULL : 서브쿼리에서 메인 쿼리로 NULL값이 넘아가지 않게 처리해야함 2020. 9. 16.
[Oracle] 서브 쿼리 (단일행, 다중행) 서브 쿼리 (단일행) : 특정 쿼리에서 검색한 결과를 다른 쿼리에서 받아 검색 - , =, !=, = 연산자 사용 : 서브쿼리의 검색 결과가 하나이기 때문 단일행 SELECT column1, column2 FROM table1 WHERE column2 >(SELECT column2 FROM table1 WHERE column1='KOREA'); : ()안 서브쿼리의 검색 결과가 table1 검색 조건으로 대입 서브쿼리 (다중행) : 특정 쿼리에서 검색한 여러개의 결과를 다른 쿼리에서 받아 검색 - IN, NOT IN, >ANY, ALL, 2020. 9. 16.