INSERT Statement
테이블에 tuple을 추가하기 위해 사용된다. 하나의 tuple을 추가하거나, 여러 개의 tuple을 추가할 수도 있다.
value들은 대응되는 CREATE TABLE에서 명시된 attribute의 순서와 같은 순서여야 한다.
넣고싶은 Attribute value만 넣을 수도 있는데, 지정되지 않은 attribute의 값들은 NULL이 되거나, DEFAULT 값을 갖는다.
SELECT Statement의 결과인 tuple의 집합도 table에 추가할 수 있다.
DELETE Statement
테이블에서 tuple을 제거하기 위해 사용된다.
WHERE 절이 없다면 무조건적으로 tuple들을 제거하는 것이기 때문에 테이블에서 모든 tuple들이 삭제된다.
UPDATE Statement
하나 또는 다수의 tuple에 있는 attribute value들을 수정하기 위해 사용된다.
condition을 만족하는 tuple에 한하여, attribute의 값을 value로 바꾼다는 의미이다. WHERE 절이 없다면 무조건적으로 tuple에 있는 attribute의 값을 변경하는 것이므로, 테이블에서 모든 tuple들의 attribute가 수정된다.
Views
- 물리적으로 저장되지 않는 가상의 Table이다. 다른 table들을 바탕으로 유도되며, Base table들의 변화를 자동적으로 반영한다.
- View는 Querying이 가능하지만, Update는 제한적이다.
- 일반적인 Table에 SELECT 절로 Querying 하는 방법과 동일하다.
View의 장점
1. 쿼리를 간소화할 수 있다.
2. 보안, 권한 메커니즘으로 사용된다
3. 최신의 tuple을 조회할 수 있다.
View의 단점
1. 쿼리를 통해 정의되기 때문에 성능 이슈 발생 가능
2. 제한된 업데이트
DROP TABLE 하듯이 DROP VIEW 하면 된다.
- View에 대한 update는 제한적인데, 그 이유는 View 업데이트는 View에 대한 업데이트 인지, Base table에 대한 업데이트 인지 모호하게 보일 수 있기 때문에 아예 View에 대한 Update는 통상적으로 할 수 없도록 막혀있다.
- 위의 예로는 다음의 두 의미로 해석될 수 있다.
1. Project 테이블에서 Pname이 ProductX인 tuple들의 Pname을 ProductY로 바꿔라.
2. 참조되는 tuple을 Project 테이블에서 Pname이 ProductX인 tuple에서 Pname이 ProductY인 tuple로 바꿔라.
이런 애매함이 있기 때문에 View에 대한 Update문은 통상적으로 금지된다.
- View에 대한 Update가 금지되는 또 하나의 이유는 View가 aggregate function의 결과를 가지고 있다면 그것은 변경될 수 없는 것이기 때문에 Update를 허용하지 않는다.
- 다만 View가 하나의 Base table만 사용하여 만들어 졌고, Aggregate function 적용 결과도 없으며, PK를 가진다면 Update가 가능하다.
Indexes
B-Tree와 같이 Indexing attribute가 사용된다면, index를 저장하기 위한 공간과 반영하는 시간적 오버헤드가 있긴해도, 쿼리가 매우 빨라질 수 있다.
table에 존재하는 attribute list에 index를 만들 수 있다.
기본적으로 오름차순 (ASC)로 인덱스가 설정되지만, DESC로 역순으로 설정할 수도 있다.
UNIQUE 키워드를 사용해서 테이블에 이미 존재하는 attribute value를 갖는 tuple이 추가되지 못하도록 할 수도 있다.
CLUSTER 키워드를 사용해서 데이터가 특정 Key를 기준으로 물리적으로 정렬된 테이블인 Cluster table에서 해당 Attribute를 기준으로 인덱스를 생성할 수 있다.
DROP TABLE 하듯이 DROP INDEX 하면 된다.
'Computer Science > Database Systems' 카테고리의 다른 글
[Database Systems] Normalization (0) | 2025.02.07 |
---|---|
[Database Systems] Database Design, Functional Dependencies (0) | 2025.02.05 |
[Database Systems] SQL (2) (0) | 2025.02.01 |
[Database Systems] SQL (1) (0) | 2025.01.30 |
[Database Systems] Relational algebra (0) | 2025.01.28 |