본문 바로가기
DB/DBMS

DML-SELECT, INSERT, UPDATE, DELETE

by 코딩하는 랄로 2023. 8. 13.
728x90

DML이란

DML = Data Manipulation Language

DML은 이름 그대로 데이터 조작어이다. 저번 시간까지 배운 DDL로 테이블을 정의해 주었으면 이번 시간에 배울 DML로 데이터를 다루고 조적한다.

 

DDL에도 테이블 추가, 삭제, 수정이 있었듯이 DML에도 데이터 추가, 삭제, 수정이 있고 추가로 조회도 있다. DDL은 constraints를 통해 제약 조건을 걸었다면 DML에서는 where절을 통해 조건식을 걸 수 있는데 where절에 대해서는 다음 글에서 다루겠다.

 

 

SELECT - 조회

SELECT * FROM [테이블명];

select는 조회할 때 쓰이는 DML 문법으로 FROM을 통해 어떤 테이블에서 무엇을 조회할 지를 선택할 수 있다. 위의 예시에서 *는 all을 뜻하는 문자로 모든 칼럼을 의미하기 때문에 sql문을 실행하면 해당 테이블에 모든 정보를 조회하게 되는 것이다.

 

SELECT COL1, COL2, COL3, ... FROM [TABLE명] WHERE [조건식];

기본 적인 SELECT문법의 구조이다. 원하는 칼럼명과 WHERE절을 통해 조건식에 해당하는 데이터만 조회하여 보여준다.

 

 

INSERT

INSERT INTO [테이블명] (COL1, COL2, COL3, ...) VALUES ( VAL1, VAL2, VAL3, ... );

INSERT는 테이블에 값을 추가하는 문법이다. 원하는 테이블에 DDL을 통해 정의한 구조로 값을 집어넣어야 하기 때문에 테이블이 어떻게 정의되어있는지, 제약 사항은 무엇인지를 먼저 알고 추가하여야 한다.

 

Default가 있는 컬럼의 경우는 생략하여 작성이 가능하다. 위의 예시에서 COL2가 DEFAULT 값이 설정되어 있다면 COL2, VAL2를 생략하여 작성할 경우 자동으로 defualt값이 들어간다.

 

INSERT INTO [테이블명] VALUES (VAL1, VAL2, VAL3, ... );

뒤에 컬럼명을 생략할 수 도 있다. 생략할 시, 모든 칼럼에 대한 값을 집어넣어야 한다.

 

INSERT 문은 테이블간의 관계도를 생각하여야 한다. 특정 테이블(부모)의 PK값을 참조(자식)한 FK값은 없는 값을 참조할 수 없기 때문에 무조건 부모 테이블에 값이 먼저 추가된 뒤 자식 테이블의 값이 추가가 되어야 한다.

 

 

UPDATE

UPDATE [테이블명] SET [컬럼명 = 새로운값] WHERE [조건식];

UPDATE는 수정을 위한 DML 문법이다. 조건식을 통해 특정 컬럼에서도 해당 조건식에 부합하는 컬럼만 값을 변경할 수 있다.

 

 

DELETE

DELETE FROM [테이블명] WHERE [조건식];

DELETE 문법은 조건식에 해당하는 모든 데이터를 삭제한다. 조건식에 해당하는 데이터를 하나 하나 삭제하는 것이기 때문에 DDL에서 배운 TRUNCATE문과는 차이가 있다. 자세한 차이점에 대해서는 이 후에 TCL 부분에서 다루겠다.

 

DELETE문의 경우에도, 테이블간의 관계에 대해 주의하면서 사용하여야 한다. 다른 테이블에 참조(자식)되어 있는 PK(부모)값을 먼저 지울 경우, FK가 없는 값을 참조해버리는 상황에 놓이게 된다.

 

그렇기 때문에 DELETE문에서는 INSERT문과는 다르게, 자식 테이블의 FK값을 먼저 지운 후 부모 테이블의 값을 삭제하여야 한다.

 

 

 

2023.08.13 - [Programming 공부/DBMS] - DML - WHERE조건식

 

DML - WHERE조건식

조건식이란 조건식은 조건문을 만족하는 식이라고 표현할 수 있다. 조건문이란, 참 또는 거짓 두가지 결과 중 하나로만 표현할 수 있는 문장을 일컫는데 조건식은 문장을 식으로 표현한 형태라

codingralro.tistory.com

 

728x90

'DB > DBMS' 카테고리의 다른 글

TCL - 트랜젝션 제어 언어  (0) 2023.08.13
DML - WHERE조건식  (0) 2023.08.13
DBMS 모델링  (0) 2023.08.13
제약조건과 무결성  (0) 2023.08.12
DDL과 제약조건2  (0) 2023.08.12