본문 바로가기

IT

2. DML/DDL/DCL 차이

 

DDL ( Data Definition Language ) 데이터 정의어 : create / alter / drop / ADD/ MODIFY / RENAME / TRUNCATE

DML ( Data Manipulation Language ) 데이버 조작어 : insert / update / delete

DCL ( Data control Language ) 데이터 제의어 : grant /revoke

 

 

오라클 객체는 테이블(TABLE) 뷰(VIEW), 시퀀스(SEQUENCE), 인덱스(INDEX), 패키지(PACKAGE), 프로시저(PROCEDUAL), 함수(FUNCTION), 트리거(TRIGGER), 동의어(SYNONTM), 사용자(USER)가 있다.

 


DDL  (COMMIT을 해주지않아도 데이터베이스에 즉각 반영된다.)

 

CREATE

CREATE TABLE tablename ( 
  column1 datatype,
  column2 datatype,
  ...
  );
    
-- 예시
CREATE TABLE sample_product (
  product_id INT,
  product_name VARCHAR(20),
  manu_date DATE
  );

만든 테이블 확인하기

SHOW COLUMNS FROM sample_product;

 

ALTER

 

ADD (추가)

ALTER TABLE tablename
  ADD column1 datatype,
      column2 datatype,
    ...
  ;
  
-- 예시
ALTER TABLE sample_product
  ADD factory VARCHAR(10);

 

실행결과

SHOW COLUMNS 
  FROM sample_product;

 

추가된 칼럼은 기본적으로 NULL값으로 초기화된다.

 

MODIFY(열의 정의를 수정할때 사용)

ALTER TABLE tablename
  MODIFY column1 datatype,
         column2 datatype,
    …
  );
  
-- 예시
ALTER TABLE sample_product 
  MODIFY factory CHAR(10);

 

RENAME (테이블이름 또는 열의 이름을 수정할때 사용)

--테이블 이름 수정
ALTER TABLE old_table RENAME new_table;

-- 또는
RENAME TABLE
  tbl_name TO new_tbl_name
--열이름 수정
ALTER TABLE tablename RENAME COLUMN b TO a;

-- 예시
ALTER TABLE sample_product RENAME COLUMN factory TO factory_name;

 

DROP

DROP TABLE tablename;

-- 예시
DROP TABLE sample_product;

 

TRUNCATE

TRUNCATE TABLE [ { database_name.[ schema_name ]. | schema_name . } ] table_name [ ; ]

-- 예시
TRUNCATE TABLE test;
/* 테이블의 모든 행을 삭제하여 테이블용량이 줄어들고 인덱스등도 삭제된다. 
테이블이 사용하던 스토리지 중 데이블 생성시 할당된 공간만 남기고 전부 반환된다.
RollBACK이 불가능하다, 삭제된 행수를 반환하지 않는다.*/

DML  ( COMMIT을 해줘야 데이터베이스에 영구적으로 반영된다. )

 

SELECT

SELECT [조회할 열이름]
FROM [조회할 테이블]
WHERE [조건식]
GROUP BY [그룹화할 열지정]
HAVING [그룹 제한 조건식]
ORDER BY [정렬하는 열 지정];

--예제
SELECT NAME, JOB, AVG(SAL)
FORM TEST_TABLE
WHERE AVG(SAL) >=2000
GROUP BY JOB
OROER BY JOB;

 

 

INSERT

INSERT INTO table_name [(column1, column2, …)]
  VALUES (val1, val2, …);

-- 예시
INSERT INTO departments (department_id, department_name, manager_id, location_id)
  VALUES (271, 'Sample_Dept', 200, 1700);

 

UPDATE

UPDATE table_name
SET column1 = value1, [column2 = value2, ...]
WHERE 조건식;

-- 예시
UPDATE departments 
SET manager_id = 201, location_id = 1800
WHERE department_name = 'Sample_Dept';

 

--서브쿼리를 이용한 갱신
UPDATE table_name
SET column1 = (
  SELECT column1
  FROM (
    SELECT column1
    FROM table_name
    WHERE 조건식
    ) alias
  ),
[column2 = (
  SELECT column1
  FROM (
    SELECT column1
    FROM table_name
    WHERE 조건식
    ) alias
  ), ...
]
WHERE 조건식;


-- 예시
UPDATE departments 
SET manager_id = (
  SELECT a.manager_id
  FROM ( SELECT manager_id
    FROM departments
    WHERE department_id = 40
    ) a
  ), 
  location_id = (
  SELECT b.location_id
  FROM ( SELECT location_id
    FROM departments
    WHERE department_id = 40
    ) b
  )
WHERE department_name = 'Sample_Dept';

 

 

DELETE

DELETE FROM table_name
[WHERE 조건식;]

-- 예시
DELETE FROM departments 
WHERE department_name = 'Sample_Dept';

 


 

DCL ( Grant / Revoke )

 

Grant ( 데이터베이스에 대한 일련권한 부여 )

--관리자모드로 jaja 에 권한 부여
grant connect, resource, dba to jaja;
/* 접속권한, 오브젝트생성권한, dba 권한부여 */
-- jaja 유저가 table_test 를 사용할 수 있도록 객체권한부여
grnat select, insert, delete, update on table_test to jaja;

 

REVOKE (데이터베이스에 대한 일렬권한 취소)

REVOKE SELECT ON TABLE_TEST FORM JAJA;

REVOKE CREATE TABLE FORM JAJA

 

 

 

출처 : [MySQL] DDL (CREATE, ALTER, DROP, TRUNCATE) (tistory.com)

 

'IT' 카테고리의 다른 글

jsp - <%@ page>  (0) 2022.07.07
IMAP과 POP3의 의미와 차이점  (0) 2022.07.04
1. SQL 기본구조 & 기초명령어  (0) 2022.06.28
허브/스위치/라우터/공유기 차이  (0) 2022.06.27
오라클에 대해서 알아보자  (0) 2022.06.23