Skip to main content

Command Palette

Search for a command to run...

(3/3)SQL Database: Data Manipulation Language(DML) Explained

(3/3) SQL 데이터조작어, 데이터베이스시스템 12주차

Updated
7 min read
(3/3)SQL Database: Data Manipulation Language(DML) Explained

Goals

SQL의 데이터 조작어의 종류를 나열하고 기능을 설명할 수 있다.
(List the types of SQL Data Manipulation Language and describe their functions)

SQL 명령어를 사용하여 데이터를 삽입, 삭제, 수정할 수 있다.
(Use SQL commands to insert, delete, and update data)

SELECT 명령어를 이용하여 데이터를 검색할 수 있다.
(Use the SELECT command to query data)

Contents

1️⃣ 데이터 삽입하기 (Insert data)
2️⃣ 데이터 삭제/수정하기 (Remove, Edit data)
3️⃣ 데이터 검색하기 1 - 기본검색 (Search data 1 - Basic search)
4️⃣ 데이터 검색하기 2 - 조건검색 (Search data 2 - Condition search)


📍SQL의 데이터 조작어란?
(What is Data Manipulation Language in SQL)?

In the previous session, we modeled and designed a school database, created table structures, and actually built the school database using SQL, including tables for students, subjects, and enrollments. Today, we will learn how to manipulate data using Data Manipulation Language (DML) commands, specifically focusing on how to insert, delete, update, and query data in these tables.

지난시간까지 학교 데이터베이스에 대해 모델링, 설계를 하고 테이블 구조를 만들어 실제 SQL로 학교 데이터베이스를 만든 후 학생, 과목, 등록 테이블을 만들었다. 오늘은 이렇게 만들어진 테이블에 맞게 삽입/삭제/수정/검색하는 '데이터 조작어' 방법을 배워본다.


1️⃣ 데이터 삽입하기 (Insert data)

데이터 삽입 명령어 INSERT INTO
(Insert data command - INSERT INTO)

✅ INSERT INTO 명령어를 사용하여 데이터를 삽입한다.
데이터의 삽입은 행(로우, 튜플) 단위로 이루어 진다. (삭제, 검색도 마찬가지)
✅ 그 중에서 우리가 원하는 attribute만 뽑는거는 이전에 배운 project이다.
✅ DEFAULT 제약조건이 있는 경우, 삽입되는 값이 없을 때 DEFAULT 값이 들어간다.

형식 및 예제

(Formula and example)

  • 두개의 테이블은 삽입 불가, 1 row = 1 command

  • 컬럼 리스트는 순서대로 다 써주는게 좋다. 생략하게되면 전체 컬럼이 나오는데 순서가 상관없는 컬럼 특성상 결과물이 헷갈릴 수 있다.

  • 해당 컬럼에 대한 값을 1:1로 매핑해서 값 리스트에 써준다. (사진 참조)

  • INSERT만 하고나면 아무런 변화가 없기 때문에 SELECT 명령문을 통해 잘 입력되었는지 확인해야 한다.

명령어 실행 화면

(Command execution screen)

  • 1) USE academy 처음에 실습할 때 한번은 꼭 실행해야 한다. DBMS는 company, hospital 등 여러개의 데이터가 존재하기 때문에 어떤 데이터 베이스를 사용할지 명시해주는 명령어가 USE Database Name 이다.

    1. 동그라미 친 것처럼 Column List 순서는 바뀌어도 상관 없지만 Values와는 1:1 매핑을 해야한다.
    1. 명령어 실행 결과를 확인할 수 있다.

데이터 삽입 확인

(Data insertion confirmation)

SELECT 명령어를 사용해서 테이블에 입력된 데이터 확인한다.
형식 → SELECT FROM 테이블명 \= All column

기본적으로 10개의 데이터를 입력하고 싶다면, 위의 문장을 10번써준다.

큰 데이터는 엑셀파일에서 한꺼번에 넣을 때도 있지만 그것은 별도의 툴을 사용한다.


초기데이터 입력 - 학생 테이블

(Initial data entry - Student table )

INSERT INTO 명령어를 이용해 위의 테이블의 나머지 내용을 입력해야 한다. 각 행을 하나씩 입력해보자
(참고) 전체 행삭제 → DELETE FROM student;

⬇️

사진에서 보듯이 단순하고 반복적이다.
입력한 데이터를 중복 입력하게 되면 오류가 나게된다. 이유: st_id (Primary key) 의 제조건은 중복값을 허용하지 않기 때문이다.

초기데이터 입력 - 과목 테이블

(Initial data entry - Course table)

INSERT INTO 명령어를 이용해 각 행을 하나씩 입력한다.
(참고) 전체 행삭제 → DELETE FROM course;

⬇️

하이라이트처럼 1:1로 매핑한다.

초기데이터 입력 - 외래키가 포함된 등록 테이블

(Initial data entry - Enroll table with Foreign Key)

등록테이블의 데이터를 학생 데이터보다 먼저 입력 불가능하다. 이유는 학생의 데이터가 있어야 등록이 가능하기 때문이다. 위와같은 이유로 외래키인 컬럼에 참조하지 않는 값이 들어오면 에러 발생한다. 기본키 값이 중복되는 경우 에러 발생한다.

⬇️

텍스트는 많지만 굉장히 단순하다.


2️⃣ 데이터 삭제/수정하기 (Remove, Edit data)

데이터 삭제 명령어 DELETE

(Remove data command - DELETE)

✅ DELETE 명령어를 사용하여 데이터를 삽입한다.
✅ 데이터의 삭제는 행(로우, 튜플) 단위로 이루어진다. DELETE FROM <테이블명>
✅ 삭제조건을 주어서 원하는 행만 삭제할 수 있다. WHERE <조건>

형식 및 예제

(Formula and example)

  • TRUNCATE TABLE은 테이블의 구조만 남겨두고 모두 삭제하는 명령어이다. Log가 남지않는다.

  • 데이터의 삽입, 삭제는 행(로우, 튜플)단위로 이루어지기 때문에 예를들어 A학생의 주소를 삭제하고 싶다면 UPDATE를 통해 주소를 Null로 바꿔줘야한다.

명령어 실행 화면

(Command execution screen)

데이터 삭제 확인

(Data deletion confirmation)

  • 위의 결과에서 보듯 'ST001' 이 사라진걸 확인할 수 있다.

  • 행(row, 튜플)단위로 데이터가 삭제된다.

데이터 삭제 연습 2

(Data deletion Practice 2 in SQL)

  • 첫번째 질의문은 외래키 때문에 삭제불가능이다.

  • 두번째 질의문은 실행 완료되었다.

2️⃣ 데이터 수정하기 (Edit data)

✅ UPDATE 명령어를 사용하여 데이터를 삽입한다.
✅ 데이터의 수정은 컬럼(열, 애트리뷰트) 단위로 이루어진다.
✅ 조건에 맞는 행(로우)들의 지정한 컬럼을 주어진 값으로 바꿔준다.

형식 및 예제

(Formula and example)

  • 조건이 없다면 컬럼 전체가 수정되므로 주의한다. (설명 2번째 줄 참조)

데이터 수정 연습

(Data Edit Practice in SQL)

  • 바뀐 것을 확인하기 위해선 SELECT명령문을 이용한다.


So far, we have learned how to insert, delete, and update data in SQL. SQL (Structured Query Language) is a powerful language used to manipulate, manage, and process data in databases. Databases allow for efficient storage, management, and utilization of data, enabling integration with various software applications.

지금까지 SQL에서 데이터 삽입, 삭제, 수정하는 법을 배웠다. SQL(Structured Query Language)은 데이터베이스에서 데이터를 조작, 관리, 처리하는 데 사용되는 강력한 언어이다. 데이터베이스는 데이터를 효율적으로 저장하고, 관리하고, 다양한 소프트웨어와 결합하여 활용할 수 있게 한다.


3️⃣ 데이터 검색하기 1

- 기본검색 (Search data 1 - Basic search)

✅ 관계형데이터베이스는 데이터를 가져오기 위해 SELECT 명령어를 사용한다.
✅데이터의 검색은 행(로우, 튜플, 레코드) 단위로 이루어진다.
✅ 가져오는 것은 행단위로 다 가져오고 그중에서 화면에 보여줄때는 내가 지정한 해당하는 컬럼만 보여줄 수 있다. (관계대수의 프로젝트 연산)
✅ 원하는 행 또는 원하는 열의 데이터만 가져올 수 있다.

형식 및 예제

(Formula and example)

예제 - 1 모든 컬럼에 대한 데이터를 보여줄 경우

(Example 1 - Show all data in all column

예제 - 2 컬럼의 일부를 검색하는 경우

(Example 2 - Search part of column)

예제 - 3 중복된 로우(레코드)를 제거할 경우

(Example 3 - Delete duplicate rows)

  • 첫번째 결과엔 중복된 값이 존재한다. (SE, BZ) SELECT 명령문은 알아서 중복된 값을 삭제하고 보여주지 않는다.

  • SELECT DISTINCT는 이러한 상황에서 필요하다. 중복안된 값만 표현하기 위한 명령어이다. 많이 사용된다.

예제 - 4 검색 결과를 정렬해서 보여주기

(Example 4 - Show search result in column sorted order)

SQL의 ORDER BY 절은 쿼리 결과를 특정 열(column)의 값에 따라 정렬하는 데 사용된다. ASCDESC는 각각 오름차순(ascending)과 내림차순(descending)으로 정렬할 때 사용한다.

예제 - 5 검색 결과를 계산해서 보여주기

(Example 5 - Display calculated search result)

  • * 은 전체 칼럼이라는 뜻

4️⃣ 데이터 검색하기 2

조건검색 (Search data 2 - Condition search)

WHERE 절(clause)

✅ 원하는 조건을 만족하는 행만을 검색하고자 할 경우 WHERE절에 조건을 명시한다. ✅ WHERE절에는 조건식이 들어간다.
✅ 조건식은 비교연산자(=, <, >)와 논리연산자(Conjunctive operators, AND, OR, NOT)를 사용하여 구성된다.

형식 및 예제

(Formula and example)

  • 보여지는 것은 이름, 연락처이지만 보이지 않는 부분엔 경영학과의 조건이 붙는다.

조건식의 연결 - 1 논리연산자

(Combining condition - 1 Conjunctive operators)

논리연산자(**Conjunctive operators)**를 이용해서 두 개 이상의 컬럼에 대해 조건을 적용

  • NOT 논리적 부정

  • AND 논리곱, 연산 대상이 모두 참이어야 참

  • OR 논리합, 연산 대상 중 하나라도 참이면 참

조건식의 연결 - 2

(Combining condition - 2 Conjunctive operators)


4️⃣ 데이터 검색하기 3 - 집계함수

(Search data 3 - Aggregate functions)

✅통계나 집계 목적으로 사용되는 함수

형식 및 예제

(Formula and example)

예제 1 - 시험 점수 평균

(Example of Aggregate functions 1 - Average score)

4️⃣ 데이터 검색하기 4 - 그룹별 집계

(Search data 4 - Aggregate by group)

✅ 검색 결과를 일정한 기준에 의해 그룹으로 묶어주는 역할을 한다.
✅ 집계함수와 함께 사용되는 경우가 많다.
✅ 여러 그룹별 집계자료를 만드는 경우 유용하게 사용된다.

형식 및 예제

(Formula and example)

예제 1 - HAVING 절

(Example of Aggregated by group 1 - HAVING clause)


Summary(학습정리)

나중에 추가할 외래키 제약 조건들

ALTER TABLE Manufacture ADD FOREIGN KEY (ProdID) REFERENCES Product(ProdID);

ALTER TABLE Manufacture ADD FOREIGN KEY (ManuSup) REFERENCES Employee(EmpID);

ALTER TABLE Product ADD FOREIGN KEY (ManufID) REFERENCES Manufacturer(ManufID);

ALTER TABLE Order ADD FOREIGN KEY (CusID) REFERENCES Customer(CusID);

ALTER TABLE Order ADD FOREIGN KEY (ProdID) REFERENCES Product(ProdID);

ALTER TABLE Manufacturer ADD FOREIGN KEY (EmpID) REFERENCES Employee(EmpID);