_대문 | 방명록 | 최근글 | 홈피소개 | 주인놈
FrontPage › PostgreSQL상속

Contents

[-]


CREATE TABLE capitals (
	name text,
	population real,
	altitude int, -- (in ft)
	state char(2)
);

CREATE TABLE non_capitals (
	name text,
	population real,
	altitude int -- (in ft)
);

두 테이블을 만들어 다음과 같은 뷰를 만들면 모든 결과를 볼 수 있다.

CREATE VIEW cities AS
	SELECT name, population, altitude FROM capitals
	UNION
	SELECT name, population, altitude FROM non_capitals;

PostgreSQL은 상속이 가능하다. 그러므로 다음과 같은 상속이 가능하다.

쩝...
생소하닷!!
메뉴얼의 예제는 도통 이해가 가지 않아 웹의 자료를 찾아보니 대충 이해가 간다.
SELECT name, altitude
FROM cities
WHERE altitude > 500;

which returns: 

   name    | altitude
-----------+----------
 Las Vegas |     2174
 Mariposa  |     1953
 Madison   |      845

(3 rows)

위의 쿼리는 altitude가 500보다 큰 것을 가져와라이다. 이것은 capitals 테이블의 것 까지 포함하여 모두 가져온다. 즉, WHERE altitude > 500 조건은 cities 테이블에서만 통한다는 것이다. 그러므로 capitals 테이블에는 조건이 없는 것이나 마찬가지 이므로 값이 나오는 것이다. 만약 cities 테이블의 것만 가져오고 싶다면 FROM 절에 Only 키워드를 사용하면 된다.

SELECT name, altitude
FROM ONLY cities
WHERE altitude > 500;

   name    | altitude
-----------+----------
 Las Vegas |     2174
 Mariposa  |     1953

(2 rows)

CREATE TABLE city (
	name text,
	population real,
	altitude int -- (in ft)
);

CREATE TABLE capitals (
	state char(2)
) INHERITS (city);


insert into capitals(name, population, altitude, state) values('Las Vegas', 1234, 2174, 'LA');
insert into capitals(name, population, altitude, state) values('Las Vegas', 1234, 1953, 'SA');
insert into capitals(name, population, altitude, state) values('Las Vegas', 1234, 845, 'SA');

Pervasive Demo DB=>  SELECT name, altitude
Pervasive Demo DB->    FROM city
Pervasive Demo DB->    WHERE altitude > 500;
   name    | altitude
-----------+----------
 Las Vegas |     2174
 Las Vegas |     1953
 Las Vegas |      845
(3 rows)

Pervasive Demo DB=> select name, altitude
Pervasive Demo DB-> from only city
Pervasive Demo DB-> where altitude > 500;
 name | altitude
------+----------
(0 rows)

Pervasive Demo DB=> select * from only city;
 name | population | altitude
------+------------+----------
(0 rows)

Pervasive Demo DB=> select * from city;
   name    | population | altitude
-----------+------------+----------
 Las Vegas |       1234 |     2174
 Las Vegas |       1234 |     1953
 Las Vegas |       1234 |      845
(3 rows)

Pervasive Demo DB=> select * from altitude;
ERROR:  relation "altitude" does not exist
Pervasive Demo DB=> select * from capitals;
   name    | population | altitude | state
-----------+------------+----------+-------
 Las Vegas |       1234 |     2174 | LA
 Las Vegas |       1234 |     1953 | SA
 Las Vegas |       1234 |      845 | SA
(3 rows)

Pervasive Demo DB=>

댓글 남기기..
이름: : 오른쪽의 새로고침을 클릭해 주세요. 새로고침
EditText : Print : Mobile : FindPage : DeletePage : LikePages : Powered by MoniWiki : Last modified 2018-04-13 23:12:53

보람 있게 보낸 하루가 편안한 잠을 가져다주듯이 값지게 쓰여진 인생은 편안한 죽음을 가져다준다. (레오나르도 다빈치)