본문 바로가기
DB

[SQL/ORACLE] DDL, DCL, DML

by SIXXXX_ 2021. 7. 17.
728x90

SQL : structed query language : 관계형 데이터베이스의 데이터를 조회하거나 조작하기 위해 사용하는 표준 검색 언어

 

DBMS(Database Management System) 에 따라 사용되는 SQL 문법이 다르다

일반적 DB 구조 : DBMS - DB - 테이블 - 데이터 형태

ORACLE : DBMS - DB - 테이블스페이스 - 테이블 - 데이터 형태

 

종류

 

1. 데이터 정의어 : DDL(Data Definition Language)

2. 데이터 조작어 : DML(Data Manipulation Language)

3. 데이터 제어어 DCL(Data Control Language)

4. 트랜젝션 제어어 : TCL(Transaction Control Language)

 

1.  DDL

- 데이터 베이스의 구조를 정의하거나 변경, 삭제하기 위해 사용하는 언어

- 객체를 만들고 수정하고 삭제하는 구문

- 주로 DB관리자(DB), 설계자(DBA)

- CREATE(개체생성), ALTER(개체수정), DROP(개체 삭제), TRUNCATE(개체 초기화)

- 종류 : 테이블(TABLE), 뷰(VIEW), 시퀀스(SEQUENCE), 인덱스(INDEX), 패키지(PACKAGE), 프로시저(PROCEDUAL), 함수(FUNCTION), 트리거(TRIGGER), 동의어(SYNONYM), 사용자(USER)

 1-a CREATE TABLE 테이블명(컬럼명 자료형(크기byte), 컬럼명 자료형(크기));

 

2. DML

- Data를 조작하기 위해 사용하는 언어

- Data의 삽입, 수정, 삭제, 조회 등의 동작을 제어함

- Data를 이용하려는 사용자와 시스템간의 인터페이스를 직접적으로 제공하는 언어

- INSERT(데이터 삽입), UPDATE(데이터 수정), DELETE(데이터 삭제)

 

2-1

DQL(Data Query Language)

- 데이터를 검색하기 위해 사용되는 언어

- SELECT(데이터 검색)

 

3. DCL

- 사용자의 권한이나 관리자 설정 등을 처리

- GRANT(유저 권한 생성), REVOKE(유저 권한 삭제), COMMIT(실행), ROLLBACK(복구)

ex. GRANT [ role ] TO [user | role | PUBLIC] WITH ADMIN OPTION

 

테이블 : 데이터를 담고 있는 개체, 기본적으로 행과 열을 이용해 데이터를 표현

Relation : 테이블명

Column(Domain) : 열

Row(Tuple) : 행

Field : 데이터

 

데이터 타입

 

a. 숫자 NUMBER

b. 문자 CHARACTER -1 CHAR 고정길이문자(최대 2000, 최소 1)

                           -2 VARCHAR2 가변길이문자(최대 4000, 최소 1) (*한글을 1글자당 3byte)

                           -3 NCHAR 유니코드문자

                           -4 NVARCHAR2 유니코드문자

                           -5 LONG 가변길이 문자(최대 2GByte)

c. 날짜

DATE

TIMESTAMP 시/분/초

 

d. 데이터

LOB

-1 CLOB : 가변길이 문자 (최대 4GByte)

-2 BLOB : Binary Data

 

Sql developer

워크시트에 작성, 대문자소문자 구분하기, 명령 끝에 ;

주석은  --

 

 

 

계정 생성

CREATE USER 계정명 IDENTIFIED BY 비밀번호;

 

권한 부여(sys 계정으로)

GRANT(부여) CONNECT TO 계정명;

 

GRANT RESOURCE TO 계정명;

 

비밀번호 변경

ALTER USER 계정명 IDENTIFIED BY 새비밀번호;

 

사용자 삭제

DROP USER 계정명;

 

 

-- 테이블 생성(DDL)

 

CREATE TABLE 테이블명 (

COLUMN_NAME DATA_TYPE  NULLABLE DATA_DEFAULT COLUMN_ID COMMENTS);

 

ex. CREATE TABLE EMPLOYEE (

    ENP_ID VARCHAR2(3),
    EMP_NAME VARCHAR2(20),
    EMP_NO CHAR(14),
    EMP_EMAIL VARCHAR2(25),
    EMP_PHONE VARCHAR2(12),
    DEPT_CODE CHAR(2),
    JOB_CODE CHAR(2),
    SAL_LEVEL CHAR(2),
    SALARY NUMBER,
    MANAGER_ID VARCHAR2(3),
    HIRE_DATE DATE,
    ENT_DATE DATE,
    ENT_YN CHAR(1) DEFAULT 'N'

    );

 

-- 테이블 삭제

DROP TABLE 테이블명;

 

-- 테이블 수정(칼럼 변경, 추가, 삭제, 이름변경, 칼럼주석)

-- 변경(추가한다면)

ALTER TABLE 테이블명;

MODIFY 칼럼명 변경데이터타입 

MODIFY 칼럼명 변경데이터타입2;

 

-- 테이블 이름변경

ALTER TABLE 원테이블명 RENAME TO 수정테이블명;  --1번

RENAME 원테이블명 TO 수정테이블명;  -- 2번

 

-- 추가

ADD 칼럼명 추가데이터타입;

 

-- 컬럼 삭제

ALTER TABLE 테이블명

DROP COLUMN 칼럼명;

 

-- 컬럼 이름변경

ALTER TABLE 테이블명

RENAME COLUMN 원컬럼명 TO 수정컬럼명; 

 

-- 테이블 컬럼 주석

COMMENT ON COLUMN 테이블명.COLUMN명 IS '주석내용';

 

ex.
COMMENT ON COLUMN EMPLOYEE.EMP_ID IS '사원번호';
COMMENT ON COLUMN EMPLOYEE.EMP_NAME IS '직원명';
COMMENT ON COLUMN EMPLOYEE.EMP_NO IS '주민번호';
COMMENT ON COLUMN EMPLOYEE.EMP_EMAIL IS '이메일';
COMMENT ON COLUMN EMPLOYEE.EMP_PHONE IS '폰번호';
COMMENT ON COLUMN EMPLOYEE.DEPT_CODE IS '부서코드';
COMMENT ON COLUMN EMPLOYEE.JOB_CODE IS '직급코드';
COMMENT ON COLUMN EMPLOYEE.SAL_LEVEL IS '급여등급';
COMMENT ON COLUMN EMPLOYEE.SALARY IS '급여';
COMMENT ON COLUMN EMPLOYEE.MANAGER_ID IS '관리자사번';
COMMENT ON COLUMN EMPLOYEE.HIRE_DATE IS '입사일';
COMMENT ON COLUMN EMPLOYEE.ENT_DATE IS '퇴사일';
COMMENT ON COLUMN EMPLOYEE.ENT_YN IS '재직여부';

 

-- 데이터 추가

INSERT INTO 테이블명(컬럼명,  .., ..., .., ..)

VALUES(데이터 순서대로, '문자열', 숫자);

 

INSERT INTO 테이블명

VALUES(데이터순서대로);

 

-- 데이터 수정

UPDATE 테이블명

SET 컬럼명 = '수정데이터' , 컬럼명2 = 숫자

WHERE 컬럼명 = '다른데이터'(*)

 

-- 데이터 삭제

DELETE FROM 테이블명

WHERE 컬럼명 = 데이터;

 

 

 

 

 

 

 

 

 

'DB' 카테고리의 다른 글

[SQL / Query] 쿼리 최적화와 튜닝방법론  (0) 2022.04.04