SQL 32

[ORACLE] Pseudo-column 의사컬럼

테이블의 컬럼처럼 동작하지만, 실제로 테이블에 저장되지는 않는 컬럼SELECT문에서 사용 가능사용자가 INSERT, UPDATE, DELETE는 불가능오라클 객체설명ROWNUM행 번호ROWID데이터가 저장된 주소 Q. ROWNUM은 INSERT 순서대로 쌓일까?CREATE TABLE TEST_EMP2 ASSELECT * FROM EMPLOYEES;SELECT ROWNUM, EMPLOYEE_IDFROM TEST_EMP2WHERE ROWNUM DELETE FROM TEST_EMP2 WHERE EMPLOYEE_ID = 202;-- 1 행 이(가) 삭제되었습니다.SELECT ROWNUM, EMPLOYEE_IDFROM TEST_EMP2WHERE ROWNUM 데이터가 수정/삭제/추가 될 때 ROWNUM은 계속해서 ..

SQL 2025.07.16

[SQL] TCL - COMMIT, ROLLBACK, SAVEPOINT

SQL 트랜젝션 언어TCL설명COMMIT변경한 데이터를 DB에 마지막으로 반영ROLLBACK변경한 데이터를 이전 상태로 되돌리기위해 사용. COMMIT의 반대.SAVEPOINTCOMMIT 전 특정시점까지 반영하거나, ROLLBACK 하겠다는 POINT보통 DBMS에서는 자동으로 커밋을 제공하곤 한다.※ 참고 ※DDL설명TRUNCATE데이터를 영구적으로 삭제DELETE는 COMMIT해야 데이터가 완전히 제거되지만, TRUNCATE는 ROLLBACK을 해도 복구 불가

SQL 2025.07.16

[ORACLE] SEQUENCE 시퀀스

자동 순번을 반환하는 DB 객체CREATE SEQUENCE MY_SEQ1INCREMENT BY 1START WITH 1MINVALUE 1MAXVALUE 1000NOCYCLENOCACHE;INSERT INTO EX2_8 (COL1,COL2) VALUES(MY_SEQ1.NEXTVAL, 'AA');-- 둘 다 NN이 걸려있어서 값을 둘 다 넣어줘야함-- 현재 시퀀스가 궁금할 땐SELECT MY_SEQ1.CURRVAL FROM DUAL;-- 시퀀스 초기화SELECT MY_SEQ1.CURRVAL FROM DUAL; -- 현재 값을 확인ALTER SEQUENCE MY_SEQ1 INCREMENT BY -1; -- INCREMENT BY - (현재 값 - 1);SELECT MY_SEQ1.NEXTVAL FROM DUAL..

SQL 2025.07.15

[ORACLE] SYNONYM 시노님

- 스키마 명 없이 간편하게 쿼리문을 작성하고 싶을 때 사용 EX) SELECT * FROM USER01.EMP -> SELECT * FROM EMP- 테이블 이름을 공개하고싶지 않을 때 사용EX) 성이 "홍"씨인 사람들을 V_FAMILYNM_HONG이라는 뷰로 관리하고있었는데, 이를 숨기고 싶을 때 V_FAMILYNM_XXX로 시노님 생성또는 간편성을 위하여 사용하기도 함!CREATE OR REPLACE SYNONYM SYN_CHANNELFOR CHANNELS;-- CHANNELS 오브젝트를 위한 시노님 생성삭제는 DROPDROP SYNONYM SYN_CHANNEL;-- Synonym SYN_CHANNEL이(가) 삭제되었습니다.

SQL 2025.07.15

[SQL] INDEX 인덱스

DB에서 데이터를 빨리 찾기 위한 용도의 객체인덱스 생성CREATE INDEX EX2_10_IX01ON EX2_10(COL11);-- Index EX2_10_IX01이(가) 생성되었습니다.인덱스 조회 SELECT * FROM USER_INDEXESWHERE TABLE_NAME = 'EX2_10';-- 여러개의 칼럼으로 인덱스 생성도 가능CREATE INDEX EX2_10_IX02ON EX2_10(COL11,COL2);-- 삭제DROP INDEX EX2_10_IX02INDEX는 SEARCH를 빠르게 해준다. 하지만..INDEX를 많이 걸어 놓으면 새로운 데이터가 INSERT 될 때마다 인덱스를 다시 계산함. -> 오히려 성능 부하 대체적으로~INDEX가 유용할 때 - 테이블 전체의 ROW 수의 15% ..

SQL 2025.07.15

[SQL] VIEW 생성, 삭제

- 하나 이상의 테이블이나 다른 뷰의 데이터를 볼 수 있게 하는 DB 객체 (논리 테이블)- 원본 데이터테이블을 숨길 수 있어 보안성있음 - VIEW의 이름은 고유해야함 - VIEW는 인덱스를 사용할 수 없음CREATE OR REPLACE VIEW EMP_DEPT_V1 ASSELECT A.EMPLOYEE_ID, A.EMP_NAME, A.DEPARTMENT_ID, B.DEPARTMENT_NAMEFROM EMPLOYEES A, DEPARTMENTS BWHERE A.DEPARTMENT_ID = B.DEPARTMENT_ID;-- View EMP_DEPT_V1이(가) 생성되었습니다.반복적으로 사용되는 SQL문이라면 재사용이 용이해진다. CREATE OR REPLACE VIEW EMP_DEPT_V2 ..

SQL 2025.07.15

[SQL] FOREIGN KEY

-- INSERT 문제 없음INSERT INTO TEST_EMP(EMPLOYEE_ID, EMP_NAME, HIRE_DATE, DEPARTMENT_ID) VALUES(500,'HONG GIL DONG', '2025/07/15',100);-- 무결성 제약조건(FK_EMP)이 위배되었습니다- 부모 키가 없습니다(레퍼런스에 이 데이터가 없어서 ERR)INSERT INTO TEST_EMP(EMPLOYEE_ID, EMP_NAME, HIRE_DATE, DEPARTMENT_ID) VALUES(501,'HONG GIL DON2', '2025/07/15',700);​CONSTRAINT 외래키명 FOREIGN KEY(칼럼명, , ,...)REFERENCE 참조테이블(참조테이블 컬럼명, , ...)외래키는 테이블 ..

SQL 2025.07.14
반응형