데이터 조작어 (Data Manipulation Language)는 데이터 삽입,조회, 수정, 삭제를 담당한다.

공책에 새로 이름을 적어 본다.
예: "손주 이름 추가하자!"
INSERT INTO 가족명단 (이름, 나이) VALUES ('영희', 25);
👉 영희, 25살이 가족 명단에 추가된다.
공책에서 이름을 찾아 본다.
예: "우리 가족 중에 누구 있지?"
SELECT * FROM 가족명단;
👉 가족명단에 있는 모든 내용을 보여준다.
공책에 잘못 적은 내용을 고치는 코드.
예: "철수가 30살인데 20살이라고 잘못 적었네!"
UPDATE 가족명단 SET 나이 = 30 WHERE 이름 = '철수';
👉 철수의 나이를 30살로 바꿔준다.
공책에서 이름을 지우는 거예요.
예: "이제 이 사람은 적을 필요 없네!"
DELETE FROM 가족명단 WHERE 이름 = '영희';
👉 영희를 명단에서 삭제한다.
INSERT : 새로 적는다.
SELECT : 적힌 걸 읽는다.
UPDATE : 잘못된 걸 고친다.
DELETE : 필요 없는 걸 지운다.
공책에서 특정 사람만 찾고 싶을 때
예: “30살 넘은 가족들만 보고 싶어!”
SELECT * FROM 가족명단 WHERE 나이 > 30;
👉 나이가 30살 넘는 사람들만 보여줘!
가족 명단을 나이 순서대로 정리하고 싶을 때
예: "나이 많은 사람부터 순서대로 보자!"
SELECT * FROM 가족명단 ORDER BY 나이 DESC;
👉 나이를 내림차순으로 정렬해!
중복된 데이터를 없애고 보고 싶을 때
예: “같은 나이가 여러 번 나오는 건 보기 싫어!”
SELECT DISTINCT 나이 FROM 가족명단;
👉 중복된 나이를 한 번만 보여줘!
가족 명단 중 일부만 보고 싶을 때
예: “앞에서부터 딱 3명만 보여줘!”
SELECT * FROM 가족명단 LIMIT 3;
👉 가장 앞의 3명만 보여줘!
새로운 손주들 이름을 한꺼번에 추가할 때
예: "영수, 철수, 미희 추가!"
INSERT INTO 가족명단 (이름, 나이)
VALUES ('영수', 15), ('철수', 20), ('미희', 25);
👉 한 번에 세 명 추가!
공책을 몽땅 비우고 싶을 때
예: "가족 명단 리셋하자!"
DELETE FROM 가족명단;
👉 명단에 있는 모든 사람 삭제!
공책의 내용을 다른 공책에 복사하고 싶을 때
예: "어른들만 다른 명단에 적어야겠다!"
INSERT INTO 어른명단 (이름, 나이)
SELECT 이름, 나이 FROM 가족명단 WHERE 나이 > 18;
👉 가족명단에서 어른들만 어른명단에 추가!
트랜잭션은 여러 작업을 한 묶음으로 처리하는 거다.
예: "명단을 고쳤다가 실수하면 다시 돌릴 수 있을까?"
BEGIN과 COMMIT 또는 ROLLBACK으로 처리해!
BEGIN; -- 트랜잭션 시작
UPDATE 가족명단 SET 나이 = 30 WHERE 이름 = '철수';
DELETE FROM 가족명단 WHERE 이름 = '영희';
COMMIT; -- 모든 작업 저장
👉 작업을 저장(Commit)하거나, 필요하면 취소(Rollback) 가능!
업데이트하거나, 없으면 추가하는 기능이다.
예: "철수가 명단에 없으면 추가하고, 있으면 나이를 고쳐!"
MySQL에서는 INSERT ... ON DUPLICATE KEY UPDATE를 써:
INSERT INTO 가족명단 (이름, 나이)
VALUES ('철수', 30)
ON DUPLICATE KEY UPDATE 나이 = 30;
👉 철수가 없으면 추가, 있으면 나이 업데이트!
다른 공책에 있는 정보를 가져와서 연결할 수 있다.
예: "가족명단과 주소를 같이 보고 싶어!"
SELECT 가족명단.이름, 가족명단.나이, 주소.주소
FROM 가족명단
JOIN 주소 ON 가족명단.이름 = 주소.이름;
👉 가족명단과 주소를 연결해서 보여줘!
몇 명이 있는지 세고 싶을 때
예: "우리 가족 몇 명이야?"
SELECT COUNT(*) FROM 가족명단;
👉 명단에 있는 사람 수를 세어줘!
데이터를 그룹으로 묶어서 통계 낼 수 있다.
예: "같은 나이인 사람 몇 명인지 알려줘!"
SELECT 나이, COUNT(*)
FROM 가족명단
GROUP BY 나이;
👉 나이별로 몇 명인지 보여줘!
GROUP BY로 묶은 결과에 조건을 걸고 싶을 때
예: "5명 이상인 나이만 보여줘!"
SELECT 나이, COUNT(*)
FROM 가족명단
GROUP BY 나이
HAVING COUNT(*) >= 5;
👉 나이별로 그룹화한 뒤 5명 이상인 나이만 보여줘!
명단 복사: "명단을 다른 테이블로 백업하자!"
INSERT INTO 백업명단 SELECT * FROM 가족명단;
👉 가족명단의 데이터를 백업명단으로 복사!
공책 내용을 다 지울 때 TRUNCATE는 DELETE보다 빠르다.
예: "가족명단 싹 비우기!"
TRUNCATE TABLE 가족명단;
👉 명단을 한 번에 싹 비우는 명령어!