10. DB정리
DML
INSERT
1 2 3 4 5 6 7
INSERT INTO '테이블명'('컬럼명1', '컬럼명2', ...) VALUES('값1', '값2', ...); -- 생성 컬럼 지정 INSERT INTO '테이블명' VALUES('값1', '값2',...); -- 모든 컬럼에 값 입력
UPDATE
1 2 3 4 5 6 7
UPDATE '테이블명' SET '컬럼명' = '값' [WHERE '조건']; -- 조건이 없으면 해당 컬럼 전체 값 수정 UPDATE '테이블명' SET '컬럼명1' = '값1', '컬럼명2' = '값2' [WHERE '조건']; -- 여러 컬럼 수정시 컴마(,)로 구분
DELETE
1 2 3
DELETE FROM '테이블명' WHERE '조건'; -- 조건이 없으면 모든 행 삭제
1 2 3 4 5
TRUNCATE TABLE '테이블명'; -- 테이블의 전체 행 삭제 -- DML(x), DDL -- DELETE 보다 수행속도 빠름 -- ROLLBACK을 통한 복구 불가
DDL
CREATE
1 2 3 4 5 6 7 8 9 10 11 12 13
CREATE TABLE '테이블명'( '컬럼명' '자료형'(`크기`) [DEFAULT '값'] '컬럼명' '자료형'(`크기`) ... ); CREATE TABLE '테이블명' AS SELECT * FROM '복사할 테이블'; -- 기존 테이블 복사하며 테이블 생성 CREATE TABLE '테이블명1' AS SELECT '컬럼명1' , '컬럼명2', '컬럼명3' FROM '테이블명2'; -- SUBQUERY를 이용한 CREATE
COMMENT
1
COMMENT ON COLUMN '테이블명.컬럼명' IS '주석내용';
USER_TABLES
1 2 3
SELECT * FROM USER_TABLES; -- 사용자가 작성한 테이블을 확인 하는 뷰 -- 데이터 딕셔너리에 저장
USER_CONSTRAINTS
1 2
SELECT * FROM USER_CONSTRAINTS; -- 사용자가 작성한 제약조건을 확인하는 딕셔너리 뷰
CONSTRAINTS
1 2 3 4 5 6 7
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 '참조할테이블명' );
1 2 3 4 5 6 7 8 9 10 11 12
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 '참조테이블명' );
1 2 3 4 5 6
PRIMARY KEY -- 한테이블당 한개만 설정 가능 -- 중복 및 NULL 허용하지 않음 -- 테이블에 대한 식별자 역할 `컬럼레벨` : [CONSTRAINT '제약조건명'] PRIMARY KEY `테이블레벨` : [CONSTRAINT '제약조건명'] PRIMARY KEY('컬럼명')
1 2 3 4 5 6 7 8 9 10
UNIQUE -- 입력값에 대해서 중복을 제한 -- NULL은 중복 삽입 가능 `컬럼레벨` : [CONSTRAINT '제약조건명'] UNIQUE `테이블레벨` : [CONSTRAINT '제약조건명'] UNIQUE('컬럼명') UNIQUE `복합키` -- 두개 이상의 컬럼을 묶어서 하나의 UNIQUE 제약 조건을 설정 -- 복합키는 지정된 모든 컬럼의 값이 같을 때 위배된다 `테이블레벨` : [CONSTRAINT '제약조건명'] UNIQUE('컬럼명1', '컬럼명2')
1 2 3
NOT NULL -- 삽입 수정시 NULL 허용 하지 않음 -- 컬럼레벨 : [CONSTRAINT 제약조건명] NOT NULL
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
FOREIGN KEY -- 참조된 다른 테이블의 컬럼이 제공하는 값만 사용 가능 -- 테이블 간의 관계가 형성 -- 제공되는 값 + NULL을 사용할 수 있음 `컬럼레벨` : [CONSTRAINT '제약조건명'] REFERENCES '참조할테이블명' [('참조할컬럼')] ['삭제룰'] `테이블레벨` : [CONSTRAINT '제약조건명'] FOREIGN KEY('컬럼명') REFERENCES '참조할테이블명' [('참조할컬럼')] ['삭제룰'] -- [삭제룰] ON DELETE RESTPICTED `삭제 제한. 기본값` ON DELETE SET NULL `부모키 삭제시 자식키를 NULL로 변환` ON DELETE CASCADE `부모키 삭제시 자식키도 함께 삭제`
1 2 3
CHECK -- 주의할 점 : 비교값은 리터럴만 사용가능(변하는 값(x), 함수(x)) [CONSTRAINT '제약조건명'] CHECK ('컬럼명' '비교연산자' '비교값')
ALTER
1 2 3 4 5 6 7 8
-- [제약 조건(추가/삭제)] ALTER TABLE '테이블명' ADD [CONSTRAINT '제약조건명'] '제약조건'('지정할컬럼명') [REFERENCES '테이블명'[('컬럼명')] ← `FK인 경우` -- 제약조건 추가 ALTER TABLE '테이블명' DROP CONSTRAINT '제약조건명'; -- 제약조건 삭제
1 2 3 4 5 6 7 8 9 10 11 12
-- [컬럼(추가/수정/삭제)] 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개의 컬럼은 테이블에 존재해야 함
1 2 3 4 5 6
-- [이름변경(컬럼명, 제약조건명, 테이블명)] ALTER TABLE '테이블명' RENAME COLUMN '컬럼명' TO '바꿀이름'; ALTER TABLE '테이블명' RENAME CONSTRAINT '제약조건명' TO '바꿀이름'; ALTER TABLE '테이블명' RENAME TO '바꿀이름'; -- 컬럼명, 제약조건명, 테이블명 변경
DROP
1 2 3 4 5 6 7 8 9 10
DROP TABLE '테이블명' [CASCADE CONSTRAINTS]; -- 테이블 삭제 -- [관계된 테이블 삭제 방법] (1) `자식 → 부모 순으로 테이블 삭제` (2) ALTER TABLE '테이블명' DROP CONSTRAINT '제약조건명'; `을 이용하여 제약조건 삭제 후, 부모 테이블 삭제` (3) DROP TABLE '테이블명' CASCADE CONSTRAINTS