본문 바로가기
Database/MariaDB

MariaDB : DML(Data Manipulation Language)에 대해서

by 코딩쥐 2024. 10. 16.

DML은 Data Manipulation Language의 약어로, 데이터베이스에서 데이터를 조작하고 관리하는 데 사용되는 명령어이다. 데이터를 삽입, 수정, 삭제 및 조회할 수 있다. 

  • SELECT : 데이터베이스에 들어 있는 데이터를 조회하거나 검색한다.
  • INSERT : 새로운 데이터를 추가한다.
  • UPDATE : 기존 데이터를 수정한다.
  • DELETE : 데이터베이스에서 데이터를 삭제한다. 

 

INSERT 

INSERT 시에 칼럼명의 경우에는 테이블의 칼럼명 및 칼럼 갯수와 일치해야 하며, 삽입할 데이터의 수와 종류도 일치해야 한다. NULL 값의 경우 NULL 값이 허용되어 있어야만 삽입할 수 있다. 만약 NOT NULL 제약 조건이 있을 경우에는, 데이터 값을 반드시 제공해야 한다. 칼럼에 기본값이 설정되어 있다면, 해당 칼럼에 값을 제공하지 않아도 기본값이 자동으로 삽입된다. 

  • INSERT INTO 테이블명(칼럼명1, 칼럼명2, ... ) VALUES (값1, 값2, ... );
# userinfo에 데이터 추가 
INSERT INTO userinfo(ename, gender, age, uloc) VALUES
	('LIZ', 'WOMAN', 22, 'CANADA'),
	('DANIEL', 'MAN', 36, 'VIETNAM');

 

서브쿼리를 사용해서 테이블에 다른 데이터의 값을 삽입할 수 있다. 대신 테이블의 칼럼 갯수 및  삽입할 데이터의 수와 종류가 일치해야 삽입이 가능하다. 

# userinfo의 데이터를 userinfocopy에 삽입 
INSERT INTO userinfocopy 
SELECT * FROM userinfo;

 

NULL 값 및 기본 값 설정

NULL 허용에 체크되어 있을 경우에는 NULL 값을 사용할 수 있고, 기본값을 설정했을 경우 칼럼에 값을 제공하지 않아도 기본값이 자동으로 삽입된다. 

# userinfo에 NULL값 삽입 
INSERT INTO userinfo(ename, gender, age) VALUES
	('ROLES', 'WOMAN', NULL);

 

 

UPDATE

기존 데이터를 수정할 때 사용한다. WHERE문이 준필수로 작성되어야 한다. WHERE이 없을 경우에는 전체 데이터가 변경이 되므로 데이터에 대한 무결점이 깨질 수 있다. 이 경우 데이터베이스 시스템에서 경고를 발생시키기도 한다.

  • update 테이블 명 set  컬럼명 = 대치할 값, 컬럼명2 = 대치할 값 where 조건; 

# userinfo의 ROLES의 age를 22로 변경
UPDATE userinfo SET age=22 WHERE ename='ROLES';

 

DELETE

데이터베이스에서 데이터를 삭제하기 위해 사용된다. DELETE의 경우에도 WHERE이 없을 경우에는 전체 데이터가 삭제되기 때문에, WHERE문이 반드시 작성해야 한다. 또한 WHERE문 안에 있는 조건은 단일 키 값을 사용하는 것이 좋다.

  • DELETE FROM 테이블명 WHERE 조건;
# userinfo에 id 열 추가
ALTER TABLE userinfo ADD id INT AUTO_INCREMENT PRIMARY KEY;

# userinfo에서 id가 8인 데이터 삭제
DELETE FROM userinfo WHERE id = 8;

 

 

 

UPDATE나 DELETE의 경우에는 데이터의 무결성이 깨질 수 있기 때문에, 이를 방지 하기 위해서 데이터베이스에 isDelete라는 컬럼을 추가하여 데이터를 물리적으로 삭제하지 않고 데이터가 삭제된 것처럼 처리한다던가 정보를 복사하여 별도의 삭제 관리 테이블에 저장해놓는 등으로 데이터를 처리하는 것이 좋다.