15.3. Lesson: 모델에 데이터 추가

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

이 강의의 목표: 데이터베이스 모델에 새 데이터를 인서트하는 방법을 배우기.

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)

15.3.1.1. Try Yourself basic 초급

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

결과 확인

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

15.3.3. Try Yourself moderate 중급

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. Try Yourself hard 고급

지금까지 배운 기술을 이용해서 사용자 데이터베이스에 새 친구들 몇 명을 추가해보십시오.

      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. In Conclusion

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

15.3.9. What’s Next?

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