분류 | 용도 | 명령어 |
DQL | 데이터 검색 | SELECT |
DML | 데이터 조작 추가 삭제 수정 |
INSERT, UPDATE, DELETE |
DDL | 데이터 정의 데이터 키우거나 줄이거나 컬럼 이름을 바꾸는 것 |
CREATE, DROP, ALTER |
DCL | 데이터 제어 권한을 주는 것 |
GRANT, REVOKE |
TCL | 트랙젝션 제어 | COMMIT, ROLLBACK |
📌 DQL
데이터 검색 (조회)
[SELECT 컬럼명 FROM 테이블]
📌 DML
1) INSERT (데이터 추가)
INSERT INTO 테이블명 VALUES(데이터,데이터,...)
📝 테이블에 모든 컬럼에 대한 값을 INSERT 할때 사용
INSERT 하고자 하는 컬럼이 모든 컬럼인 경우 컬럼명 생략 가능
단, 컬럼의 순서를 지켜서 VALUES에 값을 기입해야함
INSERT INTO DEPARTMENT2 VALUES('D1','기획팀', 'L1');
INSERT INTO 테이블명 (컬럼명,컬럼명,컬럼명,....) VALUES(데이터,데이터,...)
📝 테이블에 내가 선택한 컬럼에 대한 값만 INISERT할때 사용
선택안된 컬럼값은 NULL이 됨
INSERT INTO DEPARTMENT2(DEPT_ID,DEPT_TITLE,LOCATION_ID)VALUES('D0','경리부','L2');
2) 데이터 수정 UPDATE
UPDATE 테이블명 SET 컬럼명 = 바꿀값 [WHERE 컬럼명 비교연산자 비교값];
📝 조건절을 설정하지 않고 UDPATE 구문 실행 시 모든 행의 컬럼 값이 변경
만일, UPDATE 할 때 컬럼 여러개를 동시에 변경할 경우에는 아래와 같이 작성해주면 된다.
UPDATE 테이블명SET (컬럼명, 컬럼명) = (SELECT 컬럼명, 컬럼명 FROM 테이블명 WHERE 조건)
3) 데이터 삭제 DELETE
DELETE FROM 테이블명 WHERE 조건 설정
📝WHWERE 조건을 설정하지 않으면 모든 행이 다 삭제됨
2개 이상 삭제 하고 싶다면, AND로 이어 주기!
📌 TCL(트랜젝션)
- 데이터 변경 사항을 묶어 하나의 트랜젝션에 담아 처리함
- 트렌젝션의 대상이 되는 데이터 변경 사항 : INSERT,UPDATE,DELETE (DML)
1) COMMIT
📝 메모리 버퍼(트랜젝션)에 입시 저장된 변경사항을 DB에 반영
2) ROLLBACK
📝 메모리 버퍼(트렌젝션)에 임시 저장된 데이터 변경 사항을 삭제하고
마지막 COMMIT 상태로 돌아간다.
2) SAVEPOINT
📝 메모리버퍼(트랜젝션)에 저장 지점을 정의 하여 ROLLBACK 수행 시
전체 작업을 삭제하는 것이 아닌 저장지점까지만 일부 ROLLBACK
[SAVEPOINT 사용법] SAVEPOINT 포인트명 1; ... SAVEPOINT 포인트명 2; ... ROLLBACK TO 포인트명 1; -> 포인트 1 지점까지 데이터 변경사항 삭제 |
📌 DCL ( ROLLBACK 대상 아님!)
1) CREATE
📝 테이블이나 인덱스, 뷰 등 다양한 데이터베이스 객체를 생성하는 구문
테이블로 생성된 객체는 DROP구문을 통해 제거할 수 있음
CREATE TABLE 테이블명 ( 컬럼명 자료형(크기), 컬럼명 자료형(크기), ...); |
[ 자료형 ] NUMBER : 숫자형(정수, 실수) CHAR(크기) : 고정길이 문자형 (2000BYTE) -> ex) CHAR(10) 컬럼에 'ABC' 3BYTE 문자열만 저장해도 10BYTE 저장공간을 모두 사용. VARCHAR2(크기) : 가변길이 문자형 (4000 BYTE) -> ex) VARCHAR2(10) 컬럼에 'ABC' 3BYTE 문자열만 저장하면 나머지 7BYTE를 반환함. DATE : 날짜 타입 BLOB : 대용량 이진 데이터 (4GB) CLOB : 대용량 문자 데이터 (4GB) ! 주민등록번호 데이터 타입은 NUMBER이 아닌 ! CHAR 형식으로 생성해야한다. ( 앞에 0이 있으면 사라지는 문제점 발생) |
1) CONSTRAINTS
📝 사용자가 원하는 조건의 데이터만 유지하기 위해서 특정 컬럼에 설정하는 제약
중복 최소화 / NULL 최소화 지향
🔎 1.NOT NULL
- 해당 컬럼에 반드시 값이 기록되어야 하는 경우 사용
- 삽입 / 수정 시 NULL값을 허용하지 않도록 컬럼레벨에서 제한
🔎 2. UNIQUE
① 제약조건
- 컬럼에 입력 값에 대해서 중복을 제한하는 제약조건
- 컬럼레벨에서 설정가능, 테이블 레벨에서 설정 가능
- 단, UNIQUE 제약조건이 설정된 컬럼에 NULL값은 중복 삽입 가능
② 복합키
- 두개 이상의 컬럼을 묶어서 하나의 UNIQUE 제약 조건을 설정함
- 모든 컬럼의 값이 같아야 중복으로 취급합 !
- 복합키는 테이블 레벨로만 지정할 수 있다.
🔎 3. PRIMARY KEY(기본키)
① 제약조건
- NOT NULL + UNIQUE (모든 컬럼이 같아야 중복! ) 제약조건을 의미
- 한 테이블당 한 개만 설정 할 수 있음
② 복합키
- 복합키는 테이블 레벨로만 지정할 수 있다.
🔎 3. FOREIGN KEY(외부키/외래키)
- 참조(REFERENCES)된 다른 테이블의 컬럼이 제공하는 값만 사용할 수 있음
- 참조될 수 있는 컬럼은 PRIMARY KEY컬럼과, UNIQUE 지정된 컬럼만 외래키로 사용할 수 있음
- [삭제롤] : ON DELETE SET NULL → 부모키 삭제 시 자식키를 NULL로 변경하는 옵션
* 참조할 테이블명 - 부모 !
1) 컬럼레벨일 경우
- 컬럼명 자료형(크기) [CONSTRAINT 이름] REFERENCES 참조할 테이블명 [(참조할컬럼)] [삭제룰]
2) 테이블레벨일 경우
- [CONSTRAINT 이름] FOREIGN KEY (적용할컬럼명) REFERENCES 참조할테이블명 [(참조할컬럼)] [삭제룰]
🔎 4. CHECK
- 컬럼에 기록되는 값에 조건 설정을 할 수 있음
CREATE TABLE USER_USED_CHECK(
USER_NO NUMBER PRIMARY KEY,
USER_ID VARCHAR2(20) UNIQUE,
USER_PWD VARCHAR2(30) NOT NULL,
USER_NAME VARCHAR2(30),
GENDER VARCHAR2(10) CONSTRAINT GENDER_CHECK CHECK(GENDER IN ('남','여')) ,
PHONE VARCHAR2(30),
EMAIL VARCHAR2(50)
);
INSERT INTO USER_USED_CHECK
VALUES(2, 'user02', 'pass02', '홍길동', '남자', '010-1234-5678', 'hong123@kh.or.kr');
성별을 남 / 여만 기록 가능하도록 설정했는데, '남자'라는 조건 이외 값이 들어와 에러 발생
'ON > Oracle' 카테고리의 다른 글
[Oracle] 자주 까먹는 것과 작성 구문 복습 (0) | 2023.06.15 |
---|---|
[Oracle] VIEW | SEQUENCE | INDEX (0) | 2023.05.24 |
[Oracle] DAY25_데이터 딕셔너리 | ALTER (0) | 2023.05.23 |
[Oracle] DAY25_데이터 딕셔너리 | 제약조건 (0) | 2023.05.23 |
[Oracle] DAY24_데이터 딕셔너리 | CREATE (0) | 2023.05.22 |