[SQLD] 4. 관리 구문
SQLD를 취득하기 위해 공부하는 과정에 작성한 ‘관리 구문’ 관련 정리이다.
DML (Data Manipulation Language) : 데이터를 입력·수정·삭제·조회하는 명령어
INSERT : 테이블에 데이터를 입력하는 명령어
INSERT INTO 테이블명 (컬럼명1, 컬럼명2, ...) VALUES (데이터1, 데이터2, ...);
INSERT INTO 테이블명 VALUES (전체 컬럼에 입력될 데이터 리스트);
UPDATE : 테이블에 이미 저장된 데이터를 수정하는 명령어
UPDATE 테이블명 SET 컬럼명 = 새로운 데이터 (WHERE 수정할 데이터에 대한 조건);
DELETE : 테이블에 이미 저장된 데이터를 삭제하는 명령어
DELETE FROM 테이블명 (WHERE 삭제할 데이터에 대한 조건);
MERGE : 테이블에 새로운 데이터를 입력하거나, 이미 저장된 데이터에 대한 변경 작업을 한번에 처리하는 명령어
MERGE
INTO 타겟테이블명
USING 비교테이블명
ON 조건
WHEN MATCHED THEN
UPDATE
SET 컬럼명 = 새로운 데이터 [, 컬럼명 = 새로운 데이터...]
WHEN NOT MATCHED THEN
INSERT [(컬럼명1, 컬럼명2...)]
VALUES [(데이터1, 데이터2...)]
TCL (Transaction Control Language) : 트랜잭션을 제어하는 명령어
트랜잭션 (Transaction) : 쪼개질 수 없는 업무 처리의 논리적인 단위
- 원자성 (
Atomicity) : 트랜잭션으로 묶인 일련의 동작들은 모두 성공하거나 모두 실패해야 한다. - 일관성 (
Consistency) : 트랜잭션이 완료된 후에도 데이터베이스가 가진 데이터에 일관성이 있어야 한다. - 고립성 (
Isolation) : 하나의 트랜잭션은 고립된어 수행되어야 한다. - 지속성 (
Durability) : 트랜잭션이 성공적일때 트랜잭션이 변경한 데이터가 영구적으로 저장되어야 함을 의미한다.
COMMIT : INSERT, DELETE, UPDATE 후 변경된 내용을 확정·반영하는 명령어
COMMIT;
ROLLBACK : INSERT, DELETE, UPDATE 후 변경된 내용을 취소하는 명령어
ROLLBACK TO A;
SAVEPOINT : ROLLBACK을 수행할 때 전체 작업을 되돌리는 대신 일부만 되돌리는 명령어
SAVEPOINT A;
DDL (Data Definition Language) : 데이터를 정의하는 명령어
- 문자 :
CHAR,VARCHAR,CLOB - 숫자 :
NUMBER - 날짜 :
DATE
CREATE : 테이블을 생성하는 명령어
- 테이블 생성 시 반드시 지켜야 하는 규칙 : 지키지 않으면, 에러 발생!
- 테이블명은 고유해야 함
- 한 테이블 내에서 컬럼명은 고유해야 함
- 컬럼명 뒤에 데이터 유형과 데이터 크기가 명시되어야 함
- 컬럼에 대한 정의는 괄호
()안에 기술되어야 함 - 각 컬럼들은 콤마
,로 구분됨 - 테이블명과 컬럼명은 숫자로 시작될 수 없음
- 마지막은 세미콜론
;으로 끝남
CREATE TABLE 테이블명 (
컬럼1 데이터타입 (NULL|DEFAULT 옵션)
...
)
CREATE TABLE 테이블명 AS SELECT * FROM 복사대상테이블명;
제약조건 (CONSTRAINT) : 테이블에 저장될 데이터의 무결성 (정확성·일관성)을 유지하고, 데이터의 결함이 없음을 보증
CREATE로 테이블을 생성할 때, 향후 테이블에 저장될 데이터에 대해 일정 제한을 걸 수 있음
기본 키 (PRIMARY KEY) : 테이블에 저장된 각각의 ROW에 대한 고유성 보장 (NULL 값 불가)
고유 키 (UNIQUE KEY) : 테이블에 저장된 각각의 ROW에 대한 고유성 보장 (NULL 값 허용)
NOT NULL : 해당 컬럼에 NULL 값이 입력되는 것을 금지
CHECK : 컬럼에 저장될 수 있는 값의 범위를 제한
외래 키 (FOREIGN KEY) : 하나의 테이블이 다른 테이블ㅇ르 참조할 때 정의
CASCADE: 부모 값을 삭제할 때, 자식 값도 같이 삭제SET NULL: 부모 값을 삭제할 때, 자식의 컬럼을NULL로 처리SET DEFAULT: 부모 값을 삭제할 때, 자식의 해당 컬럼을DEFAULT값으로 변경RESTRICT: 자식 테이블에 해당 데이터가PK로 존재하지 않는 경우에만 부모 값 삭제·수정 가능NO ACTION: 참조 무결성 제악이 걸린 경우 삭제·수정 불가
ALTER : 테이블의 구조를 변경하는 명령어
ADD COLUMN : 새로운 컬럼을 추가하는 명령어
ALTER TABLE 테이블명 ADD 컬럼명 데이터유형;
DROP COLUMN : 기존에 있는 컬럼을 삭제하는 명령어
ALTER TABLE 테이블명 DROP COLUMN 컬럼명;
MODIFY COLUMN : 기존에 있는 컬럼을 변경하는 명령어
ALTER TABLE 테이블명 MODIFY (컬럼명1 데이터유형 [DEFAULT 옵션] [NOT NULL 옵션]...);
RENAME COLUMN : 기존에 있는 컬럼의 이름을 변경하는 명령어
ALTER TABLE 테이블명 RENAME COLUMN 기존컬럼명 TO 변경컬럼명;
ADD CONSTRAINT : 제약조건을 추가하는 명령어
ADD TABLE 테이블명 ADD CONSTRAINT 제약조건명 제약조건 (컬럼명);
DROP TABLE : 테이블을 삭제하는 명령어
DROP TABLE 테이블명 [CASCADE CONSTRAINT];
RENAME TABLE : 테이블을 변경하는 명령어
RENAME 기존테이블명 TO 변경테이블명;
TRUNCATE TABLE : 테이블에 저장된 데이터를 모두 제거하는 명령어
TRUNCATE TABLE 테이블명;
DCL (Data Control Language) : 사용자 (USER)를 생성하고 권한 및 역할을 부여하는 명령어
- 하나의 데이터베이스는 여러 사용자들을 가질 수 있음
사용자 관련 명령어
CREATE USER : 사용자를 생성하는 명령어
CREATE USER 사용자명 IDENTIFIED BY 패스워드;
ALTER USER : 사용자를 변경하는 명령어
ALTER USER 사용자명 IDENTIFIED BY 패스워드;
DROP USER : 사용자를 삭제하는 명령어
DROP USER 사용자명;
권한 관련 명령어
GRANT : 사용자에 권한을 부여하는 명렁어
GRANT 권한 TO 사용자명;
REVOKE : 사용자에 권한을 회수하는 명렁어
REVOKE 권한 FROM 사용자명;
역할 관련 명령어
ROLE을 이용한 권한 부여
CREATE ROLE 역할명;
GRANT 권한 TO 역할명;
GRANT 역할명 TO 사용자명;