delete from r
where P
P: 조건문 r: relation >> 특정 조건을 만족하는 튜플을 찾아 삭제
만약 모든 튜플을 삭제하고 싶다면?: delete from r 을 사용하자.
계좌 정보를 삭제해야 하므로 최종적으론 account 에서 삭제해야 하므로 delete from account 이다. where 절에는 brnach_city 이 브루클린인 branch_name 을 찾아야 한다.
만약 삭제가 아니라 검색하라 였으면 from 에 account, branch 를 넣고 곱하면 될 것인데, 지금은 삭제 연산이므로 where 뒤에서 찾아줘야 함. delete 는 from 절에 테이블을 무조건 하나만 쓰자는 것이 결론
이자 지급의 비율 조정을 생각하면 된다.(bal) 특정 어트리뷰트의 값을 일괄적으로 업데이트 하는 것!
set 다음에는 어떤 att 를 어떻게 업데이트할 지 쓴다.
set 부분의 = 는 할당이다. SQL 에서 = 등장하는 경우는 이 말고도 where 에서의 = 도 있는데, 여기서 = 는 비교이다. where 절까지 추가한 문제를 보자.
updata account
set balance = balance * 1.05
where balance < 10000
순서가 중요하다. 예컨대 아래가 먼저 오면 1.05 적용 후 만이 넘어가서 또다시 1.06 을 곱할 수 있는데, 이런 일은 없어야
select sum(amount)
from loan
: 널 값 무시. (모든 amount 가 null이면 null 을 반환한다.)
메인 쿼리 중 select 로 포함되는 쿼리.
아래가 Set membership 을 통해 해결한 것.예금 고객 이름을 가져와서 대출 고객의 이름과 교집합을 출력.
not in 썼음에 주의.
연산의 결과는 트루, 펄스
False
True
False
True
Brooklyn 시에 위치한 어떤 지점보다 많은 자산을 가지고 있는 모든 지점의 이름을 찾으시오.
이렇게 풀 수도 있지만 some 을 쓰면 더 간단하게 푼다.
select branch_name
from branch
where assets > some
(select assets
from branch
where branch_city = 'Brooklyn')
가상의 relation 이다. (select from where 은 가상이면서 저장이 안되는 것, View 는 가상이면서 저장이 되는 것.)
실제 relation 처럼 쿼리를 처리할 수 있음(서치, 삽입 삭제 업데이트 모두 가능)
View 는 부분집합인데 어떻게 추가한다는 말인가? 기존 테이블이 A,B,C att 이고 뷰가 A,B이어서 추가할 경우 C는 널값으로 들어감.
만약 View 가 두 개 이상의 테이블로 구성된 경우 추가시 널 값이 범람할 수 있다, 따라서
원래 relation 의 not null 속성이 있을 경우 또는 두 테이블로부터 구성된 뷰는 불가능하다. (추가와 삭제, 갱신이 안되고 서치만 가능)
View 생성 방법: create view v as < query >
< query > 는 select from where 이다. 간단히 말해 select from where 의 값을 저장하고 싶을 때 view 를 쓴다.
View 의 삭제 방법: drop view V
연산의 결과를 all_customer 에 저장한다. 이 테이블을 사용한 문제를 풀어보자.
문제 10. delete cascade / refrential integrity