Notice
Recent Posts
Recent Comments
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Today
Total
관리 메뉴

차차로그

데이터베이스 언어 DDL, DML, DCL, TCL 본문

SQL

데이터베이스 언어 DDL, DML, DCL, TCL

차차한 2022. 7. 29. 13:10

DDL (Data Definition Language) : 데이터 정의어. 데이터 구조(테이블)과 관련된 명령어들

  • CREATE
CREATE TABLE TABLE_NM
(
	NAME VARCHAR2(10) PRIMARY KEY,
    AGE NUMBER (CONSTRAINT NN_AGE) NOT NULL,
    STATUS VARCHAR2(1),
    (CONSTRAINT CK_STATUS) CHECK(STATUS IN ('Y', 'N'));
);

--주석
COMMENT ON COLUMN TABLE_NM.NAME IS '이름';

--다른 테이블의 구조와 데이터를 그대로 복사해 새 테이블 생성이 가능하다.
CREATE TABLE EMP_DEPT_D1
AS 
SELECT EMP_ID, 
        EMP_NAME,
        DEPT_CODE,
        HIRE_DATE
    FROM EMPLOYEE
    WHERE 1=0; (1=0은 즉 FALSE이기 때문에 구조만 복사됨. 1=1로 하면 모든 데이터와 구조를 복사)
  • ALTER
--컬럼 추가
ALTER TABLE TABLE_NM ADD(GENDER VARCHAR2(1));
--컬럼 자료형 수정
ALTER TABLE TABLE_NM MODIFY GENDER VARCHAR(2);
--컬럼 제약조건 변경/추가
ALTER TABLE EMPLOYEE ADD FOREIGN KEY(JOB_CODE) REFERENCES JOB(JOB_CODE);
--제약조건 비활성화
ALTER TABLE EMPLOYEE DISABLE CONSTRAINT SYS_C007133 CASCADE;
<-> ALTER TABLE EMPLOYEE ABLE CONSTRAINT SYS_C007133;
  • DROP
--테이블 전체 삭제
DROP TABLE TABLE_NM;
--테이블 내 컬럼 삭제
ALTER TABLE TABLE_NM
DROP COLUMN AGE;
  • RENAME
RENAME TABLE TABLE_NM TO MEMBER;
  • TRUNCATE
TRUNCATE TABLE TABLE_NM;

 

DROP : 테이블 자체를 삭제. 자동 커밋이 되기 때문에 ROLLBACK 불가

TRUNCATE : 테이블의 구조는 두고 데이터만 모두 삭제. 자동커밋이 되기 때문에 ROLLBACK 불가

DELETE : WHERE 조건문을 써서 원하는 데이터만 삭제 가능. 커밋 전이면 ROLLBACK 가능


DML (Data Manipulation Language) : 데이터 조작어. 데이터를 조회하거나 데이터 자체를 변경, 삭제하는 명령어

  • SELECT
SELECT * FROM TABLE_NM
--*로 조회를 하면 테이블 내 모든 데이터를 조회해오기 때문에 
--시간이 오래 걸리기도 하고 불필요한 데이터를 가져오기 때문에 * 사용을 지양하는 것이 좋다
  • INSERT
INSERT INTO TABLE_NM (NAME, AGE) VALUES ('남나나', 10);
--인서트하는 데이터가 테이블 내 컬럼의 순서와 개수가 같다면 컬럼명을 생략해도 된다.
INSERT INTO TABLE_NM VALUES ('김가가', 20);
--인서트할 때 서브쿼리 이용이 가능하다.
INSERT INTO TABLE_2 VALUES (SELECT * FROM TABLE_1);
  • UPDATE
UPDATE TABLE_NM
SET AGE = 15
WHERE NAME = '김가가';
--WHERE 조건을 걸지 않으면 테이블 내 모든 데이터의 값이 변경된다
--UPDATE 시 변경할 값은 해당 컬럼에 대한 제약조건에 위배되지 않아야한다.
  • DELETE
DELETE FROM TABLE_NM WHERE NAME = '김가가';
--WHERE 조건을 걸지 않으면 모든 데이터가 삭제된다.
--테이블 내 전체 데이터 삭제를 원하면 DELETE 대신 TRUNCATE 사용 권장

DCL (Date Control Language) : 데이터 제어어. DB에 접근하도록 권한을 주거나 회수하는 명령어

  • GRANT
GRANT RESOURCE, CONNECT TO EMPLOYEE(계정이름)
--계정 생성 후 권한을 줘야 DB에 접근할 수 있다
  • REVOKE

TCL (Transaction Control Language) : 트랜잭션 제어어. 작업단위(트랜잭션) 별로 제어하는 명령어

  • COMMIT
  • ROLLBACK
  • SAVEPOINT
코드1;

SAVEPOINT SP1;

코드2;

ROLLBACK TO SP1;
--코드2의 내용만 롤백됨

 

'SQL' 카테고리의 다른 글

MSSQL 참고  (0) 2025.04.25
[ORACLE] PL/SQL  (0) 2024.04.05
[ORACLE] MERGE INTO  (0) 2024.04.04
프로시저  (0) 2022.08.05
Comments