oracle

    [Oracle] DML(3) - DELETE, TRUNCATE

    DELETE 테이블에 기록된 데이터를 삭제하는 구문 (한 행 단위로 삭제됨) [표현식] DELETE FROM 테이블명 [WHERE 조건;] --> WHERE 조건 제시 안하면 전체 행 다 사라짐 테이블에 있는 모든 데이터 지우기 DELETE FROM EMPLOYEE; 차은우 사원의 데이터 지우기 DELETE FROM EMPLOYEE WHERE EMP_NAME = '차은우'; 데이터를 삭제할때도 해당 컬럼이 부모데이로 사용되는 경우 삭제되지 않는다 -- DEPT_ID가 D1인 부서를 삭제 (DEPT_ID)는 부모키 DELETE FROM DEPARTMENT WHERE DEPT_ID = 'D1'; -- ORA-02292: integrity constraint (KH.SYS_C007215) violated - ..

    [Oracle] DML(2) - UPDATE

    UPDATE 테이블에 기록되어있는 기존의 데이터를 수정하는 구문 [표현식] UPDATE 테이블명 SET 컬럼명 = 바꿀값, 컬럼명 = 바꿀값, ... --> 여러개의 컬럼값 동시변경 가능(,로 나열해야됨!! AND 아님!!) [WHERE 조건]; --> 생략하면 전체 행의 모든 행의 데이터가 변경된다..!! 그래서 조건을 꼭 쓰자 SELECT * FROM DEPT_COPY; -- D9 부서의 부서명을 '전략기획팀'으로 수정 UPDATE DEPT_COPY SET DEPT_TITLE = '전략기획팀'; -- 총무부 -- 이러면 행이 다 바뀜;; ROLLBACK; -- 빠르게 롤백 UPDATE DEPT_COPY SET DEPT_TITLE = '전략기획팀' -- 총무부 WHERE DEPT_ID = 'D9'; -..

    [Oracle] 테이블 복사하기

    기존 테이블 SELECT EMP_ID, EMP_NAME, DEPT_CODE, HIRE_DATE FROM EMPLOYEE 구조만 복사하기 CREATE TABLE EMP_DEPT AS SELECT EMP_ID, EMP_NAME, DEPT_CODE, HIRE_DATE FROM EMPLOYEE WHERE 1 = 0 ; 데이터까지 복사하기 CREATE TABLE EMP_DEPT2 AS SELECT EMP_ID, EMP_NAME, DEPT_CODE, HIRE_DATE FROM EMPLOYEE WHERE 1 = 1 ;

    [Oracle] SUBQUERY를 이용한 테이블 생성

    테이블 복사 뜨는 개념 [ 표현식 ] CREATE TABLE 테이블명 AS 서브쿼리; -- EMPLOYEE 테이블을 복제한 새로운 테이블 생성 CREATE TABLE EMPLOYEE_COPY AS SELECT * FROM EMPLOYEE; SELECT * FROM EMPLOYEE_COPY; --> 컬럼, 데이터값은 잘 복사되지만, 제약조건 같은 경우 NOT NULL만 복사됨.. 테이블 구조만 복사 CREATE TABLE EMPLOYEE_COPY2 AS SELECT EMP_ID, EMP_NAME, SALARY, BONUS FROM EMPLOYEE -- 테이블 구조만 가져오고 싶다. 데이터 제외하고 WHERE 1 = 0; -- 무조건 FALSE인 조건 : 구조만을..

    [Oracle] DEFAULT 옵션

    ** 제약조건 아님 ** 컬럼을 선정하지 않고 INSERT시 NULL이 아닌 기본값을 INSERT 하고자 할 때 세팅해둘 수 있는 값 CREATE TABLE MEMBER( MEM_NO NUMBER PRIMARY KEY, MEM_NAME VARCHAR2(20) NOT NULL, MEM_AGE NUMBER, HOBBY VARCHAR2(20) DEFAULT '없음', ENROLL_DATE DATE DEFAULT SYSDATE ); -- INSERT INTO 테이블명 VALUES(값1, 값2, ...) INSERT INTO MEMBER VALUES(1, '손흥민', 20, '축구', '22/01/01'); INSERT INTO MEMBER VALUES(2, '이강인', NULL, N..

    [Oracle] CONSTRAINT(제약조건)_FOREIGN KEY(외래키)_삭제옵션

    자식 테이블 생성시 외래키 제약조건 부여할 때 삭제옵션 지정가능 * 삭제옵션 : 부모테이블의 데이터 삭제시 그 데이터를 사용하고 있는 자식테이블의 값을 어떻게 처리할껀지 - ON DELETE RESTRICTED (기본값) : 삭제제한옵션으로, 자식데이터로 쓰이는 부모테이터는 삭제 아예 안되게끔 - ON DELETE SET NULL : 부모데이터 삭제시 해당 데이터를 쓰고 있는 자식데이터의 값을 NULL로 변경 - ON DELETE CASCADE : 부모데이터 삭제시 해당 데이터를 쓰고 있는 자식데이터도 같이 삭제시킴 SET NULL 옵션 CREATE TABLE MEM( MEM_NO NUMBER PRIMARY KEY, MEM_ID VARCHAR2(20) NOT NULL UNIQUE, MEM_PWD VARC..

    [Oracle] CONSTRAINT(제약조건)_FOREIGN KEY(외래키)

    회원등급에 대한 데이터를 따로 보관하는 테이블 CREATE TABLE MEM_GRADE( GRADE_CODE NUMBER PRIMARY KEY, GRADE_NAME VARCHAR2(30) NOT NULL ); INSERT INTO MEM_GRADE VALUES(10, '일반회원'); INSERT INTO MEM_GRADE VALUES(20, '우수회원'); INSERT INTO MEM_GRADE VALUES(30, '특별회원'); CREATE TABLE MEM( MEM_NO NUMBER PRIMARY KEY, MEM_ID VARCHAR2(20) NOT NULL UNIQUE, MEM_PWD VARCHAR2(20) NOT NULL, MEM_NAME VARCHAR2(20) NOT NULL, GENDER CHA..

    [Oracle] CONSTRAINT(제약조건)_PRIMARY KEY

    * PRIMARY KEY(기본키) 제약조건 => PK 테이블에서 각 행들을 식별하기 위해 사용될 컬럼에 부여하는 제약조건 (식별자의 역할) EX) 회원번호, 학번, 사원번호, 부서코드, 직급코드, 주문번호, 예약번호, 운송장번호 PRIMARY KEY 제약조건을 부여하면 그 컬럼에 자동으로 NOT NULL + UNIQUE 제약조건 가진다. * 유의사항 : 한 테이블당 오로지 !!! 한개만 가능 CREATE TABLE MEM_PRI( MEM_NO NUMBER CONSTRAINT MEMNO_PK PRIMARY KEY, MEM_ID VARCHAR2(20) NOT NULL UNIQUE, MEM_PWD VARCHAR2(20) NOT NULL, MEM_NAME VARCHAR2(20) NOT NULL, GENDER C..