단단히

DataBase_ DDL,DML,DCL 정리 본문

DataBase/개념 정리

DataBase_ DDL,DML,DCL 정리

이게아닌데 2022. 6. 27. 12:02

SQL 구문 유형 : DDL, DML, DCL

 

1. DDL : Data Definition Language, 데이터 정의

    CREATE, ALTER, DROP, TRUNCATE  (CADT)

    데이터를 정의하는 언어로 스키마의 구조를 생성, 수정, 삭제하여 스키마를 정의할 수 있다.


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

    INSERT, SELECT, UPDATE, DELETE  (ISUD)

    스키마에 있는 데이터를 입력, 조회, 수정, 삭제할 수 있다.


3. DCL : Data Control Language/ 데이터 제어어

    GRANT, REVOKE, COMMIT, ROLLBACK, SAVEPOINT

    스키마에 있는 데이터를 제어하는 명령어로 권한의 부여/ 회수 또는 실행 여부를 결정할 수 있다.

 

MySQL에서는 사용자에 따라서 DCL을 DCL과 TCL(COMMIT, ROLLBACK, SACEPOINT)로 구분하여 사용하기도 한다.


DDL : 스키마 구조를 생성, 수정, 삭제하여 스키마를 정의할 수 있다.

1) Database 관련 쿼리

더보기

- DB  생성

  create database D/N;

- DB 삭제

  drop database D/N;

- DB 사용

  use D/N;

2) Table 관련 쿼리

더보기

- Table 생성

  create table T/N (

 

  );

- Table 삭제

  drop table T/N; 

- Table 이름 변경

  alter table 기존 T/N rename 변경 T/N;

** 테이블 생성 시 형식 **

이 외에도 다양한 자료형이 있다. 참고로 UTC(세계 협정 시)는 영국 그리니치 천문대 기준 시간이다.

한국 시간은 9 시간 빠르므로 UTC+9를 써야 한다.

3) Table column 관리 ( 구조 ; alter table T/N... column... )

더보기

- 칼럼명 변경

  alter table T/N change column 기존 C/N 변경 C/ND/T [C];

- 자료형 변경

  alter table T/N change column 기존 C/NC/N 변경 D/T [C];

- 자료형 변경( modify 사용 )

  alter table T/N modify C/N 변경 D/T;

- 칼럼 추가

  alter table T/N add column 추가 C/ND/T [C];

- 칼럼 삭제

  alter table T/N drop column 삭제 C/N;

 


 

DML : 스키마 데이터를 CRUD(Create(생성), Read(읽기), Update(변경), Delete(제거)) 할 수 있다.

 

1) 종류

더보기

-입력 

  insert into T/N (C/N1, C/N2,..) values (Data1, Data2,..);

-조회

  select C/N1, C/N2,.. from T/N; 

-수정

  update T/N set C/N1=Data1, C/N2=Data2,.. ; 

-삭제

  delete from T/N;

2) insert (데이터 입력)

 

- 기본 쿼리

 insert into T/N (C/N1, C/N2,..) values (Data1, Data2,..);

  * C/N의 개수와 Data의 개수가 동일해야 한다.

  * ' ' 홀 따옴표를 사용하여 데이터를 입력한다. 단, int자료형이므로 홀따옴표 없이 숫자만 입력한다. 

 

- 어려 데이터 입력 시

 insert into T/N (C/N1, C/N2,..) values (Data1, Data2,..),

                                                              (Data1, Data2,..),

                                                              (Data1, Data2,..);

- 서브 쿼리를 사용하여 입력할 수 있다.

 insert into T/N (C/N1, C/N2,..) select C/N1, C/N2, C/N3, C/N4 from T/N [부속 절];

   

3) select (데이터 조회) 

# 조건 조회  - 부분 문자열 (like)

더보기

select   *    from     T/N    where     C/N     like    ' % 부분 문자 % ' ;

 

-참고) % 기호를 '대표 문자' 또는 와일드카드(wild Card)라고 한다.

이때 앞쪽에 있는 글자를 찾을 때는 '부분 문자%'로 표현하면 된다.

 

#조건 조회 - 숫자 범위 : 비교 연산자 또는 between A and B

더보기

select   *   from    T/N    where    C/N    >=  숫자 ;

이때, and연속 구간, or분산 구간에 사용한다.

ex) select * from memberList where age >= 10 and age <=30;

ex) select * from memberList where between 10 and 30; 

 

#그룹 조회(Group)

더보기

select    *     from    T/N    group by    C/N  ;

참고) distinct와 group by는 결과가 동일할 수 있다. 그러나 중복 출력 제거 기능을 하는 distinct는 출력으로 끝나지만 group by는 그룹으로 저장된 데이터가 남아있는 상태이다.

그래서 group by를 사용하면 데이터 처리 관련 함수를 사용할 수 있다.

 

#그룹 조건 지정(Having)

더보기

select    *   from   T/N     group   by   C/N    having   조건;

having은 group by에 대한 조건 설정이다. group by를 사용해야만 적용할 수 있다. group by를 사용하지 않은 상태로 조건을 지정하려면 where을 사용해야 한다. 

 


DCL : 스키마에 있는 데이터를 제어하는 명령어권한의 부여/회수 또는 실행 여부를 결정할 수 있다.

 

1) 수정 및 삭제 안전 모드 해제

더보기

set sql_safe_updates = 0;

2) 수정, 삭제 실행 최소 맟 실행 적용

더보기

set autocommit = 0; # 실행

savepoint L/N;

# L/N => Label Name 레이블명, 임의 명칭

...

원하는 쿼리 실행

...

점검 후 정상적으로 처리하기를 원할 경우 => commit; 쿼리 실행

점검 후 savepoint 시점까지 원래대로 복원 => rollback to L/N;

commit을 실행하고 나서는 rollback이 되지 않는다.

Comments