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라는 컬럼을 추가하여 데이터를 물리적으로 삭제하지 않고 데이터가 삭제된 것처럼 처리한다던가 정보를 복사하여 별도의 삭제 관리 테이블에 저장해놓는 등으로 데이터를 처리하는 것이 좋다.
'Database > MariaDB' 카테고리의 다른 글
MariaDB : 데이터 무결성을 위한 제약 조건 (1) | 2024.10.17 |
---|---|
MariaDB : JSON 데이터 사용하기 (0) | 2024.10.17 |
MariaDB : DCL (Data Control Language)과 TCL(Transaction Control Language)에 데해서 (0) | 2024.10.17 |
MariaDB : DDL(Data Definition Language)에 대해서 (0) | 2024.10.16 |
MariaDB : 서브쿼리에 대해서 (0) | 2024.10.15 |
MariaDB: JOIN절에 대해서 (0) | 2024.10.15 |
MariaDB : 그룹함수, GROUP BY, HAVING절에 대해서 (0) | 2024.10.14 |
MariaDB : SQL 주요함수에 대해서 (0) | 2024.10.14 |