# DDL (데이터 정의어)
## CREATE
CREATE TABLE 테이블명 (
컬럼명 데이터 유형 [NOT NULL],
컬럼명 데이터 유형 [NOT NULL} ... ,
CONSTRAINT 기본키명 PRIMARY KEY (컬럼명),
CONSTRAINT 고유키명 UNIQUE (컬럼명), ... ,
REFERENCES 참조테이블 (참조테이블_기본키),
CONSTRAINT 제약조건명 CHECK (조건식)
);
- 데이터 유형 : CHAR, VARCHAR 등..
- NOT NULL : NULL 값 허용 여부
- PRIMARY KEY : 기본키 선언
- UNIQUE : 고유키 설정
- FOREIGN kEY : 외래키 선언
- CONSTRAINT : 제약조건 설정
- CTAS (오라클) : CREATE TABLE 테이블명 AS SELECT * FROM 복사할테이블명;
- CTAS (SQL Server) : SELECT * INTO 복사할테이블명 FROM 테이블명;
- 테이블 생성 시 주의사항
1. 적절한 이름
2. 테이블 이름 중복
3. 컬럼 이름 중복
4. 데이터 유형
5. 문자로 시작
6. 예약어
## ALTER
1. 컬럼 추가 (ADD)
ALTER TABLE 테이블명 ADD 컬럼명 데이터 유형 [기본값] [NOT NULL];
2. 컬럼 수정 (MODIFY) : 데이터 유형, 기본값, NOT NULL 등 제약조건 수정
ALTER TABLE 테이블명 MODIFY 컬럼명 데이터 유형 [기본값] [NOT NULL];
3. 컬럼 삭제 (DROP COLUMN)
ALTER TABLE 테이블명 DROP COLUMN 삭제할 컬럼명;
4. 컬럼명 수정 (RENAME COLUMN)
ALTER TABLE 테이블명 RENAME COLUMN 기존_컬럼명 TO 새로운_컬럼명;
5. 제약조건 삭제 (DROP CONSTRAINT)
ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건명;
6. 제약조건 추가 (ADD CONSTRAINT)
ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 제약조건 (컬럼명);
## RENAME : 테이블 이름 변경
RENAME 변경전_테이블명 TO 변경후_테이블명;
SQL Server : sp_rename 변경전_테이블명 , 변경후_테이블명;
## DROP TABLE : 테이블 삭제 (모든 데이터, 구조 완전 삭제)
DROP TABLE 테이블명 [CASCADE CONSTRAINT];
- CASCADE CONSTRAINT 테이블의 PRIMARY KEY, UNIQUE KEY, 참조하는 다른 테이블의 참조 무결성 제약도 함께 삭제. (SQL Server는 없음, 그러므로 테이블 삭제 전 먼저 삭제 해야 함)
## TRUNCATE TABLE : 테이블 저장공간 재 사용 (모든 행 제거_초기상태로)
TRUNCATE TABLE 테이블명;
# DML (데이터 조작어)
## SELECT : 데이터 조회
SELECT [ALL / DISTINCT]
컬럼명 AS 별명
FROM 테이블명;
- SELECT 절에 명시한 컬럼을 FROM 절의 테이블에서 조회
- ALL, DISTINCT 생략 가능하나, 생략 시 기본은 ALL로 인식
- ALL : 중복 데이터가 있어도 모두 조회 (Default)
- DISTINCT : 중복 데이터가 있는 경우 중복 제거하여 1건만 조회
## INSERT : 데이터의 내용 입력
1. INSERT INTO 테이블명 (컬럼명) VALUES (입력 값);
- 데이터를 입력하고자 하는 테이블의 컬럼을 정의하여 입력.
- 컬럼과 입력값 1:1 매핑, 정의하지 않은 컬럼은 디폴트로 NULL 입력.
2. INSERT INTO 테이블명 VALUES (입력 값);
- 컬럼을 생략하는 경우 모든 컬럼 대상으로 데이터 입력.
- 입력값은 테이블의컬럼수와 같아야 함.
## UPDATE : 데이터 내용 수정
UPDATE 테이블명
SET 컬럼명 = 입력 값
WHERE 조건;
## DELETE : 데이터 내용 삭제
DELETE [FROM] 테이블명 WHERE 조건;
# TCL (트랜잭션 제어어)
## COMMIT : 하나의 트랜잭션을 정상적으로 완료하고, 결과를 데이터베이스에 반영
예) INSERT INTO 테이블명 VALUES (입력 값);
COMMIT;
## ROLLBACK : 트랜잭션을 취소
예) UPDATE 테이블명 SET 컬럼명 = 입력 값 WHERE 조건;
ROLLBACK;
## SAVEPOINT : 하나의 트랜잭션을 작게 분할하여 저장
지정 : SAVEPOINT 저장점명;
롤백 : ROLLBACK TO 저장점명;
예) SAVEPOINT SP1;
INSERT INTO 테이블명 VALUES (입력 값);
SAVEPOINT SP2;
UPDATE 테이블명 SET 컬럼명 = 입력값 WHERE 조건;
# DCL (데이터 제어어)
- 사용자 액세스 권한 제어에 사용하는 언어.
- 유형 : 시스템 권한, 오브젝트 권한
## GRANT : 권한 부여 시 사용.
1. 시스템 권한 부여
GRANT 시스템 권한
TO 사용자
[WITH ADMIN OPTION];
- GRANT : 시스템 권한을 지정
- TO : 권한을 부여하려는 대상 지정
- WITH ADMIN OPTION : 부여받은 권한을 다른 사용자에게 부여할 수 있는 권한
2. 오브젝트 권한 부여
GRANT 시스템 권한
ON 오브젝트
TO 사용자
[WITH GRANT OPTION];
- GRANT : 오브젝트 권한 지정, 콤마를 이용하여 다수의 오브젝트 지정 가능
- ON : 대상 오브젝트 지정
- TO : 권한을 부여하려는 대상 지정
- WITH GRANT OPTION : 부여받은 권한을 다른 사용자에게 부여 할 수 있는 권한
## REVOKE : 권한 석제 시 사용.
1. 시스템 권한 취소
REVOKE 시스템권한
FROM 사용자;
- REVOKE : 권한을 취소하려는 시스템 권한 지정
- FROM : 권한을 취소하려는 대상 지정
2. 오브젝트 권한 취소
REVOKE 오브젝트권한
ON 오브젝트
FROM 사용자;
- REVOKE : 권한을 취소하려는 오브젝트 권한 지정
- ON : 권한을 취소하려는 오브젝트 지정
- FROM : 권한을 취소하려는 대상 지정
# 역할 (Role)
- 사용자와 권한 사이에서 중개 역할을 하는 논리적인 권한 그룹.
- 사용자별로 다수의 권한을 부여하는 경우 권한을 역할로 묶어 관리 가능
## 역할의 권한 관리
1. 역할 생성
CREATE ROLE 역할;
2. 시스템 권한 부여
GRANT 시스템 권한 TO 역할;
3. 오브젝트 권한 부여
GRANT 오브젝트 권한 ON 오브젝트 TO 역할;
4. 사용자 역할 부여
GRANT 역할 TO 사용자;