✔️ INSERT
INSERT INTO 테이블명(컬럼명1, 컬럼명2, ...) VALUES(값1, 값2, ...); ✔️ 생성 컬럼 지정 INSERT INTO 테이블명 VALUES(값1, 값2,...); ✔️ 모든 컬럼에 값 입력
✔️ UPDATE
UPDATE 테이블명 SET 컬럼명 = 값 [WHERE 조건]; ✔️ 조건이 없으면 해당 컬럼 전체 값 수정 UPDATE 테이블명 SET 컬럼명1 = 값1, 컬럼명2 = 값2 [WHERE 조건]; ✔️ 여러 컬럼 수정시 컴마(,)로 구분
✔️ DELETE
DELETE FROM 테이블명 WHERE 조건; ✔️ 조건이 없으면 모든 행 삭제
TRUNCATE TABLE 테이블명; ✔️ 테이블의 전체 행 삭제 ✔️ DML(x), DDL ✔️ DELETE 보다 수행속도 빠름 ✔️ ROLLBACK을 통한 복구 불가
✔️ CREATE
CREATE TABLE 테이블명( 컬럼명 자료형(크기) [DEFAULT 값] 컬럼명 자료형(크기) ... ); CREATE TABLE 테이블명 AS SELECT * FROM 복사할 테이블; ✔️ 기존 테이블 복사하며 테이블 생성 CREATE TABLE 테이블명1 AS SELECT 컬럼명1 , 컬럼명2, 컬럼명3 FROM 테이블명2; ✔️ SUBQUERY를 이용한 CREATE
✔️ COMMENT
COMMENT ON COLUMN 테이블명.컬럼명 IS '주석내용';
✔️ USER_TABLES
SELECT * FROM USER_TABLES; ✔️ 사용자가 작성한 테이블을 확인 하는 뷰 ✔️ 데이터 딕셔너리에 저장
✔️ USER_CONSTRAINTS
SELECT * FROM USER_CONSTRAINTS; ✔️ 사용자가 작성한 제약조건을 확인하는 딕셔너리 뷰
✔️ CONSTRAINTS
CREATE TABLE USER_CONSTRAINTS( USER_NO NUMBER PRIMARY KEY, USER_ID VARCHAR2(30) UNIQUE, USER_PWD VARCHAR2(30) NOT NULL, GENDER VARCHAR2(10) CHECK (컬럼명 비교연산자 비교값), USER_GRADE NUMBER REFERENCES 참조할테이블명 );
CREATE TABLE USER_CONSTRAINTS( USER_NO NUMBER, USER_ID VARCHAR2(30), USER_PWD VARCHAR2(30) NOT NULL, GENDER VARCHAR2(10), USER_GRADE NUMBER, [CONSTRAINT USER_PK] PRIMARY KEY(USER_NO) [CONSTRAINT USER_UQ] UNIQUE(USER_ID) [CONSTRAINT GENDER_CH] CHECK(GENDER 비교연산자 비교값) [CONSTRAINT USER_FK] FOREIGN KEY(USER_GRADE) REFERENCES 참조테이블명 );
PRIMARY KEY ✔️ 한테이블당 한개만 설정 가능 ✔️ 중복 및 NULL 허용하지 않음 ✔️ 테이블에 대한 식별자 역할 ✔️ 컬럼레벨 : [CONSTRAINT 제약조건명] PRIMARY KEY ✔️ 테이블레벨 : [CONSTRAINT 제약조건명] PRIMARY KEY(컬럼명)
UNIQUE ✔️ 입력값에 대해서 중복을 제한 ✔️ NULL은 중복 삽입 가능 ✔️ 컬럼레벨 : [CONSTRAINT 제약조건명] UNIQUE ✔️ 테이블레벨 : [CONSTRAINT 제약조건명] UNIQUE(컬럼명) UNIQUE 복합키 ✔️ 두개 이상의 컬럼을 묶어서 하나의 UNIQUE 제약 조건을 설정 ✔️ 복합키는 지정된 모든 컬럼의 값이 같을 때 위배된다 ✔️ 테이블레벨 : [CONSTRAINT 제약조건명] UNIQUE(컬럼명1, 컬럼명2)
NOT NULL ✔️ 삽입 수정시 NULL 허용 하지 않음 ✔️ 컬럼레벨 : [CONSTRAINT 제약조건명] NOT NULL
FOREIGN KEY ✔️ 참조된 다른 테이블의 컬럼이 제공하는 값만 사용 가능 ✔️ 테이블 간의 관계가 형성 ✔️ 제공되는 값 + NULL을 사용할 수 있음 ✔️ 컬럼레벨 : [CONSTRAINT 제약조건명] REFERENCES 참조할테이블명 [(참조할컬럼)] [삭제룰] ✔️ 테이블레벨 : [CONSTRAINT 제약조건명] FOREIGN KEY(컬럼명) REFERENCES 참조할테이블명 [(참조할컬럼)] [삭제룰] [삭제룰] ✔️ ON DELETE RESTPICTED 삭제 제한. 기본값 ✔️ ON DELETE SET NULL 부모키 삭제시 자식키를 NULL로 변환 ✔️ ON DELETE CASCADE 부모키 삭제시 자식키도 함께 삭제
CHECK ✔️ 주의할 점 : 비교값은 리터럴만 사용가능(변하는 값(x), 함수(x)) ✔️ [CONSTRAINT 제약조건명] CHECK (컬럼명 비교연산자 비교값)
✔️ ALTER
[제약 조건(추가/삭제)] ALTER TABLE 테이블명 ADD [CONSTRAINT 제약조건명] 제약조건(지정할컬럼명) [REFERENCES 테이블명[(컬럼명)] ← FK인 경우 ✔️ 제약조건 추가 ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건명; ✔️ 제약조건 삭제
[컬럼(추가/수정/삭제)] ALTER TABLE 테이블명 ADD(컬럼명 데이터타입 [DEFAULT 값]); ✔️ 컬럼 추가 ALTER TABLE 테이블명 MODIFY 컬럼명 데이터타입; ALTER TABLE 테이블명 MODIFY 컬럼명 DEFAULT 값; ALTER TABLE 테이블명 MODIFY 컬럼명 NOT NULL / NULL; ✔️ 컬럼의 데이터타입, DEFAULT값, NULL/NOT NULL 수정 ALTER TABLE 테이블명 DROP(삭제할 컬럼명) ✔️ 컬럼 삭제. 최소 1개의 컬럼은 테이블에 존재해야 함
[이름변경(컬럼명, 제약조건명, 테이블명)] ALTER TABLE 테이블명 RENAME COLUMN 컬럼명 TO 바꿀이름; ALTER TABLE 테이블명 RENAME CONSTRAINT 제약조건명 TO 바꿀이름; ALTER TABLE 테이블명 RENAME TO 바꿀이름; ✔️ 컬럼명, 제약조건명, 테이블명 변경
✔️ DROP
DROP TABLE 테이블명 [CASCADE CONSTRAINTS]; ✔️ 테이블 삭제 [관계된 테이블 삭제 방법] (1) 자식 → 부모 순으로 테이블 삭제 (2) ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건명; 을 이용하여 제약조건 삭제 후, 부모 테이블 삭제 (3) DROP TABLE 테이블명 CASCADE CONSTRAINTS
✔️ COMMIT
COMMIT ✔️ 메모리 버퍼에 임시 저장된 데이터 변경사항을 DB에 반영
ROLLBACK ✔️ 메모리 버퍼에 임시 저장된 데이터 변경사항을 DB에 반영하지 않고 삭제
SAVEPOINT 포인트명1; SAVEPOINT 포인트명2; .. ROLLBACK 포인트명1; ✔️ ROLLBACK 수행 시 저장 지점까지만 일부 ROLLBACK