즐겁게 배우는 SQL 6. CRUD 연산

jiffydev·2021년 7월 10일
0

즐겁게 배우는 SQL

목록 보기
6/13

본 포스트는 박재호님의 유튜브 강의(링크)를 보고 일부 발췌하여 정리한 내용입니다.
사용된 자료, 샘플 데이터 등은 모두 SQLite Tutorial에서 확인할 수 있습니다.

1. Create

CRUD연산의 처음은 create, 데이터 생성이다.
sql에 대해 조금이라도 알고 있다면 너무 쉽겠지만, 그래도 기본적인 형태는 다음과 같다.

INSERT INTO table (column1,column2 ,..)
VALUES( value1,	value2 ,...);

테이블의 컬럼에 values의 값을 새로운 행으로 넣게 된다.


위 테이블에 데이터를 넣게 되면 다음과 같을 것이다.

INSERT INTO artists (name)
VALUES('Bud Powell');

한편 이 테이블의 ArtistId는 자동으로 증가(auto increment)하는 컬럼이기 때문에 건드리지 않는 것이 좋다.

한 번에 여러 행을 넣기 위해서는 values의 값을 필요한 만큼 넣어주면 된다.

INSERT INTO artists (name)
VALUES
	("Buddy Rich"),
	("Candido"),
	("Charlie Byrd");

테이블의 기본값(default value)을 넣어줄 수도 있다.
만약 컬럼에서 설정한 기본값이 없다면 NULL이 자동으로 들어간다.(NOT NULL제한이 없다면)

INSERT INTO artists DEFAULT VALUES;

또한 데이터를 단순히 직접 입력해서 행을 추가하는 것이 아니라
쿼리해온 결괏값을 테이블에 입력하는 것도 가능하다.
이를 위해서는 우선 테이블을 하나 생성한다.

CREATE TABLE artists_backup(
   ArtistId INTEGER PRIMARY KEY AUTOINCREMENT,
   Name NVARCHAR
);

그리고 artists_backup 테이블에 artists 테이블의 데이터를 다음과 같이 넣을 수 있다.

INSERT INTO artists_backup 
SELECT ArtistId, Name
FROM artists;

기존 artists테이블의 모든 데이터가 그대로 들어와 있는 것을 확인할 수 있다.

2. Update

이미 create를 해 봤다면 update는 크게 어렵지 않을 것이다.
다만 주의할 점은 update의 경우 되돌리는 것이 불가능하기 때문에, 항상 where조건이 내가 설저한 조건이 맞는지 확인해야 한다.

update문의 기본적 형태는 다음과 같다.

UPDATE table
SET column_1 = new_value_1,
    column_2 = new_value_2
WHERE
    search_condition 

UPDATE 테이블명 SET 업데이트할 컬럼=값의 형태이다.

우선 간단하게 한 행의 한 컬럼 데이터만 변경해 보자.
employeeId가 3인 직원의 성을 변경하는 예제이다.

UPDATE employees
SET lastname = 'Smith'
WHERE employeeid = 3;

이번에는 여러 컬럼을 변경해 보자.
employeeId가 4인 직원의 주소(city, state, postalcode)를 변경하는 예제이다.

UPDATE employees
SET city = 'Toronto',
    state = 'ON',
    postalcode = 'M5P 2N7'
WHERE
    employeeid = 4;

마지막으로 여러 행을 한 번에 업데이트 하는 것도 가능하다.
기존의 직원 이메일은 firstname@chinookcorp.com 과 같은 형식이었는데, 이를 firstname.lastname@~처럼 변경하고자 한다.

UPDATE employees
SET email = LOWER(
	firstname || "." || lastname || "@chinookcorp.com"
);

3. Delete

CRUD의 마지막인 delete이다.
기본적인 형태는 아래와 같다.

DELETE FROM table
WHERE search_condition;

여기서 where조건이 없으면 모든 행이 지워지게 되므로 delete문을 수행하기 전에는 항상 조건을 확인해야 한다.

예제로 들어가기 전에, 테이블을 먼저 생성하고 데이터를 넣어야 한다.

-- create artists backup table
CREATE TABLE artists_backup(
   artistid INTEGER PRIMARY KEY AUTOINCREMENT,
   name NVARCHAR
);
-- populate data from the artists table
INSERT INTO artists_backup 
SELECT artistid,name
FROM artists;

생성한 테이블 데이터의 일부는 다음과 같다.

DELETE FROM artists_backup
WHERE artistid = 1;

쿼리문과 같이 artistid=1인 행만 삭제할 수 있다.

profile
잘 & 열심히 살고싶은 개발자

0개의 댓글