관리 메뉴

TEAM EDA

[SQL 기초] 2장. 데이터를 제어하는 DML 본문

EDA Study/SQL

[SQL 기초] 2장. 데이터를 제어하는 DML

김현우 2020. 3. 19. 16:25

본 자료는 Elice Academy에서 진행한 SQL 기초라는 과목을 정리한 자료입니다. 

 

목차

 

  • 다양한 조건 - WHERE LIKE 
  • 데이터 정렬 - ORDER BY 
  • 데이터 삽입 - INSERT
  • 데이터 수정 - UPDATE 
  • 데이터 삭제 - DELETE 

1. 다양한 조건 - WHERE LIKE 

LIKE는 특정 문자가 포함된 문자열을 찾고 싶을 때 사용하는 명령어입니다. 예를 들어, 책 정보를 저장하는 book 테이블에서 제목에 '왕자'로 끝나는 책을 검색하고 싶을 때 사용할 수 있습니다. 

LIKE 조건의 기본 형태는 WHERE 조건절의 뒤에 들어가는 형태입니다. 구성은 아래와 같이 3가지가 있습니다. 

 

  • %문자열 : 문자열로 끝나는 값 조회 

  • 문자열% : 문자열로 시작하는 값 조회

  • %문자열% : 문자열이 포함된 값 조회 

book 테이블에서 제목(title)이 '왕자'로 끝나는 책 검색
book 테이블에서 제목(title)이 '어린'으로 시작하는 책 검색
book 테이블에서 제목(title)에 '린왕'이 포함되는 책 검색

실습 1. 데이터 다양하게 조회하기 

문제 : 영어단어 The로 시작하는 책과 영어단어 and가 포함돼 있는 책과 Rings로 끝나는 책을 빌리는 이용자들만 따로 추첨하는 이벤트를 진행하려고 합니다. 해당 이벤트를 시작하기 전에 먼저 The로 시작하는 책과 and가 포함돼 있는 책과 Rings로 끝나는 책만 공지하여 봅시다. 앞서 배운 select에 like문을 추가하여 책 제목에 여러 가지 조건을 넣어 원하는 책만 조회해 보세요.

-- 아래에 제목이 The로 시작하는 책만 조회하는 쿼리를 작성해주세요.
SELECT * FROM book WHERE title LIKE 'The%';

-- 아래에 제목에 and가 포함된 책만 조회하는 쿼리를 작성해주세요.
SELECT * FROM book WHERE title LIKE '%and%';

-- 아래에 제목이 Rings로 끝나는 책만 조회하는 쿼리를 작성해주세요.
SELECT * FROM book WHERE title LIKE '%Rings';

2. 데이터 정렬 - ORDER BY 

ORDER BY는 데이터를 정렬하여 검색하는 명령어입니다. 예를 들어, 성적을 저장하는 score 테이블에서 수학 점수가 높은 순서대로 정렬하여 검색할 때 사용할 수 있습니다. 

문법으로는 ORDER BY 컬럼명 정렬 조건을 삽입하게 되는데, 정렬 조건으로는 아래의 형태가 있습니다. 

 

  • DESC = 내림차순 (큰 값 부터 출력) 

  • ASC = 오름차순 (작은 값부터 출력) - Default 값 

실습 2. 데이터 정렬하기 

문제 : 책들을 정리해서 조회하기로 하였는데, 내부의 id를 기준으로 출력하니 이용자들이 혼란에 빠졌습니다. 이번에는 책 제목을 기준으로 오름차순 정렬로 조회해보고자 합니다. select문에 order by문을 추가하여 책 제목을 기준으로 오름차순 정렬로 조회해 봅시다.

-- book 테이블의 내용을 조회해 봅시다. 이때 책 제목을 기준으로 오름차순으로 조회해 봅시다.
SELECT * FROM book ORDER BY title ASC;

3. 데이터 삽입 - INSERT

INSERT는 테이블에 새로운 데이터를 삽입하는 명령어입니다. 예를 들어, 책 정보를 저장하는 book 테이블에 새로운 책에 대한 데이터를 추가하는 경우입니다. 

INSERT 문의 기본 문법은 INSERT INTO 테이블(컬럼) VALUES(데이터)으로 들어갑니다. 

'햄릿' 책 데이터를 book 테이블에 추가

※참고 

컬럼의 자리에 컬럼을 명시하지 않으면 순서대로 값을 삽입합니다. 

실습 3. 새로운 데이터 삽입하기 

문제 : 방금 엘리스 도서관에 3권의 책이 도착했습니다. 이제 도서관의 데이터베이스에 책의 정보를 넣어봅시다. 오른쪽의 예시 코드를 보면 book테이블의 구조를 볼 수 있는 코드가 나와 있습니다. 이 결과를 참고해 아래의 3권의 책을 데이터베이스에 넣어 봅시다.

INSERT INTO book(id, title, author, publisher, date_received) VALUES (1000, 'Don Quixote', 'Miguel de Cervantes Saavedra', NULL, '2015-03-31');
INSERT INTO book(id, title, author, publisher, date_received) VALUES (1001, 'The Little Prince', 'Antoine de Saint-Exupery', NULL, '2018-12-21');
INSERT INTO book(id, title, author, publisher, date_received) VALUES (1002, 'Harry Potter and the Philosopher\'s Stone', 'Joanne Kathleen Rowling', 'Bloomsbury Publishing', '2017-06-26');

SELECT * FROM book;

4. 데이터 수정 - UPDATE

UPDATE는 데이터베이스에 저장된 값을 수정하는 명령어입니다. 예를 들어, 책 정보를 저장하는 book 테이블에 제목이 '돈키호테'인 책을 '돈키호테 1'로 수정하는 경우입니다. 

기본 문법은 아래와 같이 UPDATE 테이블 SET 변경할 값 WHERE 조건으로 이루어집니다. 

책 제목이 '돈키호테'인 데이터의 제목을 '돈키호테 1'로 변경

실습 4. 데이터 수정하기 

문제 : 도서관에서는 대출과 반납 현황 역시 DB를 이용해 관리합니다. 빌려 갈 때 rental 테이블에 값을 추가하는데 이때 반납 시간은 null로 두었다가 반납할 때, 반납 시간을 기록합니다. Elice 회원이 2019-04-05 12:00:30에 책을 반납하였습니다. 이에 맞게 반납 시간을 null에서 올바른 시간으로 변경해 봅시다. Elice회원의 id는 1000번입니다.

-- 반납 시간을 수정하는 쿼리를 작성해 보세요.
UPDATE rental 
SET rental_end_date = '2019-04-05 12:00:30' 
WHERE id = 1000;

-- 대출 반납 상태를 조회합니다. 반납시간이 올바르게 추가되었는지는 실행버튼을 통해 확인할 수 있습니다.
select * from rental;

5. 데이터 삭제 - DELETE 

DELETE는 테이블에 있는 데이터를 삭제하는 명령어입니다. 예를 들어, 책 정보를 저장하는 book 테이블에 제목이 '돈키호테 1'인 책을 삭제하는 경우입니다. 

DELETE 문의 기본 문법은 DELETE FROM 테이블 WHERE 조건으로 이루어집니다. 

제목이 '돈키호테 1'인 책 데이터를 book 테이블에서 삭제

※참고 

WHERE 조건이 없을 시 모든 데이터를 삭제합니다. (테이블이 삭제되는 것이 아니라 모든 행이 삭제됩니다.) 

실습 5. 데이터 삭제하기 

문제 : delete를 이용해 테이블의 데이터를 삭제해 봅시다. 현재 도서관에서 잃어버린 책이 몇 권 있습니다. 하지만 아직 도서관 DB에 남아있어 이용자들에게 혼란을 주는 상황입니다. 여러분이 book 테이블에서 아래 책들을 지워봅시다.

  • Harry Potter and the Philosopher's Stone

  • The Lord of the Rings

-- SQL에서 문자열 속에 '를 넣기 위해서는 \'로 넣어야 합니다.
DELETE FROM book WHERE title in ('Harry Potter and the Philosopher\'s Stone', 'The Lord of the Rings');

-- 전체 책의 정보와 회원정보를 조회합니다. 수정하실 필요는 없습니다.
select * from book;

※참고 

SQL에서 문자열 속에 '를 넣기 위해서는 \'로 넣어야 합니다. 

예) 'Harry Potter and the Philosopher\'s Stone'