중요

번역은 여러분이 참여할 수 있는 커뮤니티 활동입니다. 이 페이지는 현재 100.00% 번역되었습니다.

15.3. 수업: 모델에 데이터 추가하기

이제 우리가 생성한 모델을, 원래 담으려던 데이터로 채워야 합니다.

이 수업의 목표: 데이터베이스 모델에 새 데이터를 삽입하는 방법을 배우기.

15.3.1. 삽입 선언문

테이블에 데이터를 어떻게 추가할까요? SQL INSERT 를 선언하면 해당 기능을 사용할 수 있습니다:

insert into streets (name) values ('High street');

다음 사항을 기억하십시오:

  • 테이블 이름(streets) 뒤에 사용자가 채우려고 하는 열 이름들을 나열하십시오. (이 경우에는 name 열뿐입니다.)

  • values 키워드 뒤에 필드 값 목록을 넣으십시오.

  • 문자열은 작은따옴표로 감싸야 합니다.

  • id 열을 위한 값을 삽입하지 않았다는 사실을 주목하십시오. id 는 시퀀스로 자동 생성되기 때문입니다.

  • id 를 수동으로 직접 설정하면, 데이터베이스의 무결성을 심각하게 해칠 수도 있습니다.

선언문이 성공했다면 INSERT 0 1 을 볼 수 있을 것입니다.

테이블의 모든 데이터를 선택하면 삽입 선언문의 결과를 볼 수 있습니다:

select * from streets;

결과:

select * from streets;
 id |    name
----+-------------
  1 | High street
(1 row)

혼자서 해보세요: ★☆☆

INSERT 명령어를 사용해서 streets 테이블에 새 도로를 추가하십시오.

15.3.2. 제약 조건에 따라 데이터를 연속 추가하기

15.3.3. 혼자서 해보세요: ★★☆

people 테이블에 다음 세부 사항을 가진 사람 객체를 추가해보십시오:

Name: Joe Smith
House Number: 55
Street: Main Street
Phone: 072 882 33 21

참고

이 예제에서 전화번호를 정수가 아니라 문자열로 정의한 것을 기억하십니까?

이 시점에서 streets 테이블에 ‘Main Street’에 대한 레코드를 먼저 생성하지 않고 데이터를 추가하려 하면 오류 보고를 받게 될 것입니다.

다음 사항에 대해서도 알게 됐을 것입니다:

  • 도로 이름으로는 추가할 수 없습니다.

  • ‘streets’ 테이블에 도로 레코드를 먼저 생성하지 않으면 도로 id 를 이용해서 도로를 추가할 수 없습니다.

여러분의 두 테이블이 기본 키/외래 키 쌍으로 연결되어 있다는 사실을 기억하십시오. 다시 말해 상응하는 무결한 도로 레코드 없이는 무결한 사람 레코드를 생성할 수 없다는 뜻입니다.

이런 지식을 사용해서 데이터베이스에 새 인물을 추가해보십시오.

15.3.4. 데이터 선택하기

앞에서 데이터를 선택할 수 있는 문법을 배웠습니다. 몇 가지 예를 더 들어보겠습니다:

select name from streets;
select * from streets;
select * from streets where name='Main Road';

다음 절들에서 데이터를 선택하고 필터링하는 방법에 대해 더 자세히 알아볼 것입니다.

15.3.5. 데이터 업데이트하기

어떤 기존 데이터를 변경하고자 할 경우 어떻게 해야 할까요? 예를 들어 도로 이름이 변경됐다고 해봅시다:

update streets set name='New Main Road' where name='Main Road';

이런 업데이트 선언문을 사용할 때는 매우 주의해야 합니다. WHERE 구문과 일치하는 레코드가 하나 이상일 경우 모두 업데이트될 겁니다!

다음과 같이 변경할 레코드를 참조하는 테이블 기본 키를 사용하는 방법이 더 낫습니다:

update streets set name='New Main Road' where id=2;

UPDATE 1 을 반환할 것입니다.

참고

WHERE 선언문 규범은 대소문자를 구분합니다. 즉 Main RoadMain road 를 서로 다르게 인식합니다.

15.3.6. 데이터 삭제하기

테이블에서 객체를 삭제하려면, DELETE 명령어를 사용하십시오:

delete from people where name = 'Joe Smith';

‘people’ 테이블이 어떻게 변경됐는지 살펴봅시다:

address=# select * from people;

  id | name | house_no | street_id | phone_no
 ----+------+----------+-----------+----------
(0 rows)

15.3.7. 혼자서 해보세요: ★★★

지금까지 배운 기술을 이용해서 여러분의 데이터베이스에 새 친구들 몇 명을 추가해보십시오:

      name       | house_no | street_id |   phone_no
-----------------+----------+-----------+--------------
Joe Bloggs       |        3 |         2 | 072 887 23 45
Jane Smith       |       55 |         3 | 072 837 33 35
Roger Jones      |       33 |         1 | 072 832 31 38
Sally Norman     |       83 |         1 | 072 932 31 32

15.3.8. 결론

이제 이전 단계에서 생성했던 기존 모델에 새 데이터를 추가하는 방법을 배웠습니다. 새로운 유형의 데이터를 추가하려면 기존 모델을 수정하거나, 해당 데이터를 담을 수 있는 새 모델을 생성해야 할 수도 있다는 사실을 기억하십시오.

15.3.9. 다음은 무엇을 배우게 될까요?

이제 데이터를 추가했으니, 쿼리를 통해 이 데이터에 다양한 방식으로 접근하는 방법에 대해 배워보겠습니다.