익명 사용자
로그인하지 않음
계정 만들기
로그인
youngwiki
검색
Modification of the Database 문서 원본 보기
youngwiki
이름공간
문서
토론
더 보기
더 보기
문서 행위
읽기
원본 보기
역사
←
Modification of the Database
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다:
사용자
.
문서의 원본을 보거나 복사할 수 있습니다.
상위 문서: [[SQL]] ==개요== 해당 문서에서는 SQL을 사용하여 데이터베이스의 정보를 '''delete, insertion, update'''하는 방법을 설명한다. ==Deletion== 튜플의 '''deletion'''는 query와 거의 비슷한 방식으로 작성된다. 이때 전체 튜플이 삭제되며, 특정 속성의 값만 삭제되지는 않는다. 이는 아래와 같이 표현된다: <syntaxhighlight lang="sql"> delete from r where P; </syntaxhighlight> 여기서 P는 조건(predicate)을, r은 릴레이션(relation)을 나타낸다. 이 delete 문은 먼저 r 릴레이션에서 P(t)가 참인 모든 튜플 t를 찾고, 그런 다음 해당 튜플들을 r로부터 삭제한다. 이때 where 절은 생략할 수 있으며, 이 경우 r에 있는 모든 튜플이 삭제된다. 또한 delete 명령은 한 번에 오직 하나의 릴레이션에만 작동하며, 이에 따라 여러 릴레이션에서 튜플을 삭제하려면 릴레이션마다 별도의 delete 명령을 사용해야 한다. 하지만 where 절 안의 서브쿼리에서는 여러 릴레이션을 참조할 수 있다. 예를 들어, 대학 평균 급여보다 낮은 급여를 가진 모든 교수의 정보를 삭제하고 싶다고 하자: <syntaxhighlight lang="sql"> delete from instructor where salary < (select avg(salary) from instructor); </syntaxhighlight> 위에서는 delete가 한 릴레이션에서만 동작하더라도, where절 안에서는 다른 릴레이션들을 자유롭게 참조할 수 있다는 것을 보여준다. 또한 위 예제는 <code>avg(salary)</code>를 고정된 값으로 사용해야 한다는 것을 보여준다. 만약 <code>avg(salary)</code>의 값이 튜플을 delete함에 따라 바뀐다면, 바뀐 평균값에 따라 원래는 지워지지 말아야 할 튜플이 delete될 수도 있다. ==Insertion== 릴레이션에 데이터를 삽입(insert)하기 위해서는 어떤 튜플을 삽입해야 할지 SQL에 알려주어야 한다. 이를 위해서 삽입할 튜플을 명시하거나, 삽입될 튜플 집합을 반환하는 쿼리를 사용할 수 있다. 이때, 삽입되는 튜플의 속성 값들은 각 속성의 도메인을 만족해야 하며, 튜플의 속성 수 또한 릴레이션의 스키마와 일치해야 한다. 이는 다음과 같은 두 예제를 통해서 알아볼 수 있다: <syntaxhighlight lang="sql"> insert into course values ('CS-437', 'Database Systems', 'Comp. Sci.', 4); --위와 동일한 작업을 수행하는 insert 코드 / 또한 속성 이름을 지정한다. insert into course (course_id, title, dept_name, credits) values ('CS-437', 'Database Systems', 'Comp. Sci.', 4); </syntaxhighlight> <syntaxhighlight lang="sql"> insert into instructor --튜플을 명시적으로 지정하지 않고 select 문을 사용해 튜플 집합을 구성하고 이를 릴레이션에 삽입한다. select ID, name, dept_name, 18000 --각 튜플은 ID, 이름, 학과(Music), 급여 $18,000을 가진다. from student where dept_name = 'Music' and tot_cred > 144; </syntaxhighlight> 이때 시스템은 insert 수행 전에 select 문을 완전히 실행해야 한다. 만약 select 실행 중에 insert가 병행되면, 예를 들어 다음 쿼리는 무한 루프처럼 동작할 수도 있다: <syntaxhighlight lang="sql"> insert into student select * from student; </syntaxhighlight> ==각주== [[분류:컴퓨터 네트워크]]
Modification of the Database
문서로 돌아갑니다.
둘러보기
둘러보기
대문
최근 바뀜
임의의 문서로
미디어위키 도움말
위키 도구
위키 도구
특수 문서 목록
문서 도구
문서 도구
사용자 문서 도구
더 보기
여기를 가리키는 문서
가리키는 글의 최근 바뀜
문서 정보
문서 기록