반응형

# 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 조건;

  • FROM 생략 가능.

# 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 사용자;

반응형

+ Recent posts