
안녕하세요 성조입니다.
잘못된 지식 전달 사항이 있다면 언제든지 댓글로 피드백 주시면 감사드리겠습니다!
이 포스팅은 MySQL을 기준으로 작성되었습니다.
DML(Data Manipulation Language)이란?
데이터 조작 언어의 약자로, 데이터베이스에서 데이터를 조작하는 데 사용되는 언어이다.
DML은 [SELECT, INSERT, UPDATE, DELETE] 등의 명령어를 쉽게 접할 수 있으며, 4개가 주로 활용된다.
DML의 구성 요소 간단 설명
간단하게 어떻게 활용되는지 얘기만 하고 자세한 설명은 'DML 사용법'에서 작성한다.
1. SELECT
테이블에서 데이터를 검색하는데 사용한다.
2. INSERT
테이블에 새로운 데이터를 추가하는 데 사용된다.
3. UPDATE
테이블의 기존 데이터를 수정하는 데 사용된다.
4. DELETE
테이블에서 조건의 데이터를 삭제하는 데 사용된다.
DML 사용법
이 포스팅에서는 DML의 [Select, Insert, Update, Delete]에 대해서 다룰 예정이다.
(CALL, LOCK 등은 향후 포스팅에서 다뤄보려고 한다.)
SELECT 사용법
1. 모든 열의 데이터를 선택하는 경우.
SELECT * FROM 테이블;
테이블의 모든 열을 가져오는 것을 말한다.
[예시]
SELECT * FROM Students;
'Students'라는 테이블이 있다면 '*'는 테이블의 모든 열을 가져오는 것을 말한다.
2. 특정 열의 데이터만 선택하는 경우.
SELECT 열, 열 FROM 테이블;
SELECT 원하는 열을 작성 원하는(FROM) 테이블을 작성하면 테이블에서 원하는 열 값을 가져올 수 있다.
[예시]
SELECT Name, Age, Phone FROM Students;
'Students' 테이블에서 이름, 나이, 전화번호를 가져오겠다는 의미이다.
3. 조건에 따라 데이터를 선택하는 경우.
SELECT 열 FROM 테이블 WHERE 조건;
테이블에서 원하는 조건에 해당하는 열만 가져오겠다는 의미이다.
[예시]
SELECT * FROM Students WHERE Age < 20;
'Students' 테이블에서 나이가 20 미만인 값만 가져오겠다는 의미이다.
4. 여러 테이블을 조인하여 데이터를 선택하는 경우.
SELECT A테이블.A열, A테이블.B열, B테이블.A열
FROM A테이블
JOIN B테이블 ON A테이블.C열 = B테이블.B열;
원하는 A 테이블의 값과 B 테이블의 값을 비교하여 조회하는 방법이다. 순수 SELECT만 있는 것이 아닌 JOIN 개념이 같이 들어갔으므로 같이 숙지하거나, 향후 본인 포스팅에서 확인하면 좋을 것 같다.
[예시]
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
JOIN Customers ON Orders.CustomerID = Customers.CustomerID;
주문 테이블(Orders)과 고객 테이블(Customer)을 조인하여 각 주문의 ID, 주문한 고객의 이름, 주문 일자를 선택할 때. 활용된다.
5. 데이터를 그룹화하고 집계 함수를 활용할 때 적용하는 경우.
SELECT 열, 함수
FROM 테이블
GROUP BY 그룹화할 열;
[예시]
SELECT Country, COUNT(*) as Total
FROM Customers
GROUP BY Country;
'Customers' 테이블에서 'Country' 열을 기준으로 그룹화하며, 각 그룹에 속하는 행들의 수를 Count 함수를 통하여 세어낸 뒤 그 결과를 반환한다. 정리하면 위 SQL문은 나라별로 고객 수를 산출하는 예시이다.
6. 정렬된 데이터를 선택하는 경우.
SELECT 열, 열
FROM 테이블
ORDER BY 정렬하려는 기준 열 DESC;
테이블에서 값을 선택한 후. 정렬하기 원하는 기준 열에 대해서 정렬하는 문법이다. SELECT 옆 열은 하나 이상만 오면 된다.
[예시]
SELECT ProductName, UnitPrice
FROM Products
ORDER BY UnitPrice DESC;
상품(Products) 테이블에서 단가(UnitPrice)를 기준으로 내림차순(DESC) 하여 정렬하는 예시이다.
INSERT 사용법
1. INSERT 문에 디폴트 값을 사용하는 경우.
INSERT INTO 테이블 (열, 열, 열) VALUES
(값, DEFAULT, 값),
(값, 값, DEFAULT);
DEFAULT 키워드를 활용해서 디폴트 값을 사용하는 방법이다.
[예시]
INSERT INTO Students (ID, Name, Age, Gender) VALUES
(1, 'John', 20, DEFAULT),
(2, 'Jane', DEFAULT, 'Female');
첫 INSERT 문에서는 DEFAULT 키워드로 지정했는데 다음 값에 Female의 값이 나오면서 키워드가 명시적으로 지정하고, 디폴트 값이 들어간다.
2. 여러 개의 데이터를 동시에 삽입하는 경우.
INSERT INTO 테이블 (열, 열, 열) VALUES
(값, 값, 값),
(값, 값, 값),
(값, 값, 값);
[예시]
INSERT INTO Students (ID, Name, Age) VALUES
(1, '김아무개', 20),
(2, '이아무개', 21),
(3, '박아무개', 22);
컬럼(열)에 맞게 데이터 여러 개를 Insert 할 수 있다.
3. 특정 데이터를 조건에 따라 선택적으로 삽입하는 경우.
INSERT INTO 테이블 (열, 열, 열)
SELECT 열, 열, 열 FROM 테이블
WHERE 조건을 넣을 기준 열 >= 값;
[예시]
INSERT INTO Students (ID, Name, Age)
SELECT ID, Name, Age FROM TempStudents
WHERE Age >= 22;
학생의 나이가 22세 이상인 학생만 선택적으로 삽입될 수 있게 하는 예제이다.
4. 삽입할 데이터를 서브쿼리를 통해 가져오는 경우.
INSERT INTO 테이블 (열, 열, 열)
SELECT 열, 열, 열 FROM 테이블 WHERE 열 = '조건';
[예시]
INSERT INTO Students (ID, Name, Age)
SELECT ID, Name, Age FROM AnotherTable WHERE Condition = 'some_condition';
다른 테이블(Another Table)은 삽입할 데이터를 포함하는 다른 테이블이며, 조건('Condition')은 데이터를 선택하기 위한 열을 얘기하며, = 'some_condition'은 지정하는 조건을 의미한다.
UPDATE 사용법
1. 조건에 따라 특정 행의 데이터를 업데이트하는 경우.
UPDATE 테이블 SET 변경 열 = 변경 값 WHERE 조건 열 = 조건 값;
테이블 기준으로 조건이 충족되는 값을 변경 열의 칼럼에 변경 값으로 업데이트하는 것이다.
[예시]
UPDATE Students SET Age = 21 WHERE ID = 1;
2. 여러 열의 데이터를 한 번에 업데이트하는 경우.
UPDATE 테이블 SET 변경 열 = 변경 조건, 변경 열 = 변경 조건 WHERE 조건 = 조건 값;
[예시]
UPDATE Students SET Age = 22, Name = '조조' WHERE ID = 1;
학생 테이블의 아이디가 1인 학생을 나이는 22 값으로, 이름은 조조로 동시에 변경 업데이트 한다.
3. 업데이트할 값을 다른 열의 값으로 설정하는 경우.
UPDATE 테이블 SET A.행 = A.행 + 값;
Java에서 활용되는 Date += 1과 Date = Date + 1 방법과 같다.
[예시]
UPDATE Students SET Age = Age + 1;
학생 테이블에 기존 Age 행을 기준으로 업데이트 하는업데이트하는 것이 아닌. 현재 값에 1행 더한 값으로 업데이트하는 것.
4. 서브쿼리를 사용하여 업데이트할 값을 가져오는 경우.
UPDATE 테이블 SET 열 = (SELECT 함수(열) FROM 테이블);
[예시]
UPDATE Students SET Age = (SELECT MAX(Age) FROM Students);
학생 테이블의 모든 행의 나이 값을 학생 테이블 내에서 가장 큰 나이 값으로 업데이트 한다.
5. 다른 테이블과 조인하여 업데이트할 값을 가져오는 경우.
UPDATE A.테이블
JOIN B.테이블 ON A테이블.A열 = B테이블.A열
SET A테이블.B열 = 조건
WHERE B테이블.B열 = 조건;
[예시]
UPDATE Students
JOIN Enrollments ON Students.ID = Enrollments.StudentID
SET Students.Grade = 'A'
WHERE Enrollments.CourseID = 1;
학생 테이블과 등록 테이블을 조인하고 'CourseID'가 1인 학생들의 학점을 A로 업데이트한다.
DELETE 사용법
1. 조건에 따라 특정 행을 삭제하는 경우.
DELETE FROM 테이블 WHERE 열 = 조건;
열에서 조건에 맞는 값을 테이블에서 삭제한다.
[예시]
DELETE FROM Students WHERE ID = 1;
학생 테이블에서 아이디 값이 1인 값을 삭제한다.
2. 모든 행을 삭제하는 경우.
DELETE FROM 테이블;
테이블의 모든 행 값을 삭제한다.
DROP 명령어의 경우 테이블의 스키마 전체를 삭제하는 것이므로 DELETE와 DROP을 테이블에 적용할 때 주의해야 한다.
[예시]
DELETE FROM Students;
학생 테이블의 행 데이터 값을 모두 삭제한다.
3. 여러 조건을 결합하여 행을 삭제하는 경우.
DELETE FROM 테이블 WHERE 조건 열 >= 23 AND 조건 열 = '아무개';
[예시]
DELETE FROM Students WHERE Age >= 23 AND Name = '김땡땡';
학생 테이블에서 나이가 23세 이상이며, 이름이 김땡땡인 학생들의 행을 삭제한다.
4. 서브 쿼리를 사용하여 특정 조건을 충족하는 행을 삭제하는 경우.
DELETE FROM 테이블 WHERE 열 IN (SELECT 열 FROM 테이블 WHERE 조건 열 = 값);
[예시]
DELETE FROM Students WHERE ID IN (SELECT StudentID FROM Enrollments WHERE CourseID = 1);
등록 요소(Enrollments) 테이블에서 'CourseID'가 1인 학생들의 'StudentID'를 학생 테이블에서 삭제한다.
5. 다른 테이블과 조인하여 특정 조건을 충족하는 행을 삭제하는 경우.
DELETE 테이블
FROM 테이블
JOIN 조인할 테이블 ON 테이블.ID = 조인할 테이블.StudentID
WHERE 조인할 테이블.CourseID = 1;
[예시]
DELETE Students
FROM Students
JOIN Enrollments ON Students.ID = Enrollments.StudentID
WHERE Enrollments.CourseID = 1;
등록 요소(Enrollement) 테이블과 조인하고, CourseID 값이 1인 학생들은 학생 테이블에서 삭제한다.
오타나 궁금한 부분이 있다면 언제든지 댓글 남겨주시면 감사드리겠습니다.
다음 포스팅 때 뵙겠습니다!
'Database > Database' 카테고리의 다른 글
[Database] 이상 현상(Anomaly)이란? (0) | 2022.04.29 |
---|---|
[Database] 정규화란? (0) | 2022.04.28 |
[Database] SQL vs NoSQL (0) | 2022.04.11 |
[Database] 함수적 종속성 FD (Funcional Dependency) (2) | 2022.04.04 |
[Project]pet and pet, Database[MySQL], schema (0) | 2022.03.05 |

안녕하세요 성조입니다.
잘못된 지식 전달 사항이 있다면 언제든지 댓글로 피드백 주시면 감사드리겠습니다!
이 포스팅은 MySQL을 기준으로 작성되었습니다.
DML(Data Manipulation Language)이란?
데이터 조작 언어의 약자로, 데이터베이스에서 데이터를 조작하는 데 사용되는 언어이다.
DML은 [SELECT, INSERT, UPDATE, DELETE] 등의 명령어를 쉽게 접할 수 있으며, 4개가 주로 활용된다.
DML의 구성 요소 간단 설명
간단하게 어떻게 활용되는지 얘기만 하고 자세한 설명은 'DML 사용법'에서 작성한다.
1. SELECT
테이블에서 데이터를 검색하는데 사용한다.
2. INSERT
테이블에 새로운 데이터를 추가하는 데 사용된다.
3. UPDATE
테이블의 기존 데이터를 수정하는 데 사용된다.
4. DELETE
테이블에서 조건의 데이터를 삭제하는 데 사용된다.
DML 사용법
이 포스팅에서는 DML의 [Select, Insert, Update, Delete]에 대해서 다룰 예정이다.
(CALL, LOCK 등은 향후 포스팅에서 다뤄보려고 한다.)
SELECT 사용법
1. 모든 열의 데이터를 선택하는 경우.
SELECT * FROM 테이블;
테이블의 모든 열을 가져오는 것을 말한다.
[예시]
SELECT * FROM Students;
'Students'라는 테이블이 있다면 '*'는 테이블의 모든 열을 가져오는 것을 말한다.
2. 특정 열의 데이터만 선택하는 경우.
SELECT 열, 열 FROM 테이블;
SELECT 원하는 열을 작성 원하는(FROM) 테이블을 작성하면 테이블에서 원하는 열 값을 가져올 수 있다.
[예시]
SELECT Name, Age, Phone FROM Students;
'Students' 테이블에서 이름, 나이, 전화번호를 가져오겠다는 의미이다.
3. 조건에 따라 데이터를 선택하는 경우.
SELECT 열 FROM 테이블 WHERE 조건;
테이블에서 원하는 조건에 해당하는 열만 가져오겠다는 의미이다.
[예시]
SELECT * FROM Students WHERE Age < 20;
'Students' 테이블에서 나이가 20 미만인 값만 가져오겠다는 의미이다.
4. 여러 테이블을 조인하여 데이터를 선택하는 경우.
SELECT A테이블.A열, A테이블.B열, B테이블.A열
FROM A테이블
JOIN B테이블 ON A테이블.C열 = B테이블.B열;
원하는 A 테이블의 값과 B 테이블의 값을 비교하여 조회하는 방법이다. 순수 SELECT만 있는 것이 아닌 JOIN 개념이 같이 들어갔으므로 같이 숙지하거나, 향후 본인 포스팅에서 확인하면 좋을 것 같다.
[예시]
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
JOIN Customers ON Orders.CustomerID = Customers.CustomerID;
주문 테이블(Orders)과 고객 테이블(Customer)을 조인하여 각 주문의 ID, 주문한 고객의 이름, 주문 일자를 선택할 때. 활용된다.
5. 데이터를 그룹화하고 집계 함수를 활용할 때 적용하는 경우.
SELECT 열, 함수
FROM 테이블
GROUP BY 그룹화할 열;
[예시]
SELECT Country, COUNT(*) as Total
FROM Customers
GROUP BY Country;
'Customers' 테이블에서 'Country' 열을 기준으로 그룹화하며, 각 그룹에 속하는 행들의 수를 Count 함수를 통하여 세어낸 뒤 그 결과를 반환한다. 정리하면 위 SQL문은 나라별로 고객 수를 산출하는 예시이다.
6. 정렬된 데이터를 선택하는 경우.
SELECT 열, 열
FROM 테이블
ORDER BY 정렬하려는 기준 열 DESC;
테이블에서 값을 선택한 후. 정렬하기 원하는 기준 열에 대해서 정렬하는 문법이다. SELECT 옆 열은 하나 이상만 오면 된다.
[예시]
SELECT ProductName, UnitPrice
FROM Products
ORDER BY UnitPrice DESC;
상품(Products) 테이블에서 단가(UnitPrice)를 기준으로 내림차순(DESC) 하여 정렬하는 예시이다.
INSERT 사용법
1. INSERT 문에 디폴트 값을 사용하는 경우.
INSERT INTO 테이블 (열, 열, 열) VALUES
(값, DEFAULT, 값),
(값, 값, DEFAULT);
DEFAULT 키워드를 활용해서 디폴트 값을 사용하는 방법이다.
[예시]
INSERT INTO Students (ID, Name, Age, Gender) VALUES
(1, 'John', 20, DEFAULT),
(2, 'Jane', DEFAULT, 'Female');
첫 INSERT 문에서는 DEFAULT 키워드로 지정했는데 다음 값에 Female의 값이 나오면서 키워드가 명시적으로 지정하고, 디폴트 값이 들어간다.
2. 여러 개의 데이터를 동시에 삽입하는 경우.
INSERT INTO 테이블 (열, 열, 열) VALUES
(값, 값, 값),
(값, 값, 값),
(값, 값, 값);
[예시]
INSERT INTO Students (ID, Name, Age) VALUES
(1, '김아무개', 20),
(2, '이아무개', 21),
(3, '박아무개', 22);
컬럼(열)에 맞게 데이터 여러 개를 Insert 할 수 있다.
3. 특정 데이터를 조건에 따라 선택적으로 삽입하는 경우.
INSERT INTO 테이블 (열, 열, 열)
SELECT 열, 열, 열 FROM 테이블
WHERE 조건을 넣을 기준 열 >= 값;
[예시]
INSERT INTO Students (ID, Name, Age)
SELECT ID, Name, Age FROM TempStudents
WHERE Age >= 22;
학생의 나이가 22세 이상인 학생만 선택적으로 삽입될 수 있게 하는 예제이다.
4. 삽입할 데이터를 서브쿼리를 통해 가져오는 경우.
INSERT INTO 테이블 (열, 열, 열)
SELECT 열, 열, 열 FROM 테이블 WHERE 열 = '조건';
[예시]
INSERT INTO Students (ID, Name, Age)
SELECT ID, Name, Age FROM AnotherTable WHERE Condition = 'some_condition';
다른 테이블(Another Table)은 삽입할 데이터를 포함하는 다른 테이블이며, 조건('Condition')은 데이터를 선택하기 위한 열을 얘기하며, = 'some_condition'은 지정하는 조건을 의미한다.
UPDATE 사용법
1. 조건에 따라 특정 행의 데이터를 업데이트하는 경우.
UPDATE 테이블 SET 변경 열 = 변경 값 WHERE 조건 열 = 조건 값;
테이블 기준으로 조건이 충족되는 값을 변경 열의 칼럼에 변경 값으로 업데이트하는 것이다.
[예시]
UPDATE Students SET Age = 21 WHERE ID = 1;
2. 여러 열의 데이터를 한 번에 업데이트하는 경우.
UPDATE 테이블 SET 변경 열 = 변경 조건, 변경 열 = 변경 조건 WHERE 조건 = 조건 값;
[예시]
UPDATE Students SET Age = 22, Name = '조조' WHERE ID = 1;
학생 테이블의 아이디가 1인 학생을 나이는 22 값으로, 이름은 조조로 동시에 변경 업데이트 한다.
3. 업데이트할 값을 다른 열의 값으로 설정하는 경우.
UPDATE 테이블 SET A.행 = A.행 + 값;
Java에서 활용되는 Date += 1과 Date = Date + 1 방법과 같다.
[예시]
UPDATE Students SET Age = Age + 1;
학생 테이블에 기존 Age 행을 기준으로 업데이트 하는업데이트하는 것이 아닌. 현재 값에 1행 더한 값으로 업데이트하는 것.
4. 서브쿼리를 사용하여 업데이트할 값을 가져오는 경우.
UPDATE 테이블 SET 열 = (SELECT 함수(열) FROM 테이블);
[예시]
UPDATE Students SET Age = (SELECT MAX(Age) FROM Students);
학생 테이블의 모든 행의 나이 값을 학생 테이블 내에서 가장 큰 나이 값으로 업데이트 한다.
5. 다른 테이블과 조인하여 업데이트할 값을 가져오는 경우.
UPDATE A.테이블
JOIN B.테이블 ON A테이블.A열 = B테이블.A열
SET A테이블.B열 = 조건
WHERE B테이블.B열 = 조건;
[예시]
UPDATE Students
JOIN Enrollments ON Students.ID = Enrollments.StudentID
SET Students.Grade = 'A'
WHERE Enrollments.CourseID = 1;
학생 테이블과 등록 테이블을 조인하고 'CourseID'가 1인 학생들의 학점을 A로 업데이트한다.
DELETE 사용법
1. 조건에 따라 특정 행을 삭제하는 경우.
DELETE FROM 테이블 WHERE 열 = 조건;
열에서 조건에 맞는 값을 테이블에서 삭제한다.
[예시]
DELETE FROM Students WHERE ID = 1;
학생 테이블에서 아이디 값이 1인 값을 삭제한다.
2. 모든 행을 삭제하는 경우.
DELETE FROM 테이블;
테이블의 모든 행 값을 삭제한다.
DROP 명령어의 경우 테이블의 스키마 전체를 삭제하는 것이므로 DELETE와 DROP을 테이블에 적용할 때 주의해야 한다.
[예시]
DELETE FROM Students;
학생 테이블의 행 데이터 값을 모두 삭제한다.
3. 여러 조건을 결합하여 행을 삭제하는 경우.
DELETE FROM 테이블 WHERE 조건 열 >= 23 AND 조건 열 = '아무개';
[예시]
DELETE FROM Students WHERE Age >= 23 AND Name = '김땡땡';
학생 테이블에서 나이가 23세 이상이며, 이름이 김땡땡인 학생들의 행을 삭제한다.
4. 서브 쿼리를 사용하여 특정 조건을 충족하는 행을 삭제하는 경우.
DELETE FROM 테이블 WHERE 열 IN (SELECT 열 FROM 테이블 WHERE 조건 열 = 값);
[예시]
DELETE FROM Students WHERE ID IN (SELECT StudentID FROM Enrollments WHERE CourseID = 1);
등록 요소(Enrollments) 테이블에서 'CourseID'가 1인 학생들의 'StudentID'를 학생 테이블에서 삭제한다.
5. 다른 테이블과 조인하여 특정 조건을 충족하는 행을 삭제하는 경우.
DELETE 테이블
FROM 테이블
JOIN 조인할 테이블 ON 테이블.ID = 조인할 테이블.StudentID
WHERE 조인할 테이블.CourseID = 1;
[예시]
DELETE Students
FROM Students
JOIN Enrollments ON Students.ID = Enrollments.StudentID
WHERE Enrollments.CourseID = 1;
등록 요소(Enrollement) 테이블과 조인하고, CourseID 값이 1인 학생들은 학생 테이블에서 삭제한다.
오타나 궁금한 부분이 있다면 언제든지 댓글 남겨주시면 감사드리겠습니다.
다음 포스팅 때 뵙겠습니다!
'Database > Database' 카테고리의 다른 글
[Database] 이상 현상(Anomaly)이란? (0) | 2022.04.29 |
---|---|
[Database] 정규화란? (0) | 2022.04.28 |
[Database] SQL vs NoSQL (0) | 2022.04.11 |
[Database] 함수적 종속성 FD (Funcional Dependency) (2) | 2022.04.04 |
[Project]pet and pet, Database[MySQL], schema (0) | 2022.03.05 |