UPDATE 문장으로 기존의 행을 갱신합니다.
필요하다면 하나 이상의 행을 갱신할 수 있습니다.
Update 문장을 사용하여 기존의 행을 수정할 수 있습니다.
위의 구문형식에서
-table : 테이블의 이름
- column : 테이블의 열 이름입니다.
- value : 열에 대한 관련 값이나 서브쿼리입니다.
-condition: 갱신할 행을 명시하고, 열 이름, 표현식, 상수, 서브쿼리 그리고 비교 연산자로 구성됩니다.
이 구문은 UPDATE 구믄을 연습하기 위해 EMPLOYEES 테이블의 임시 사본을 생성합니다.
ALTER TABLE 구문은 제약조건을 추가합니다. 제약조건은 11장에서 설명합니다.
서브쿼리가 여러 개 열을 반환하는 다중 열 서브쿼리를 이용해서 UPDATE 구문을 작성한 예입니다.
delete 문장을 사용하여 테이블로부터 기존의 행을 제거할 수 있습니다.
참조 무결성 제약 조건에 주의해야 합니다. 다른 테이블에서 참조되고 있는 레코드가 존재할 경우를 주의해야 합니다.
DELETE 문장을 사용하여 기존의 행을 제거합니다.
구문형식에서
-table : 테이블의 이름입니다.
-condition : 삭제된 행을 명시하고, 열 이름, 표현식, 상수, 서브쿼리 그리고 비교 연산자로 구성됩니다.
다음 구문은 DELETE 구문을 연습하기 위해 EMPLOYEES 테이블의 임시 사본을 생성합니다.
ALTER TABLE 구문은 제약조건을 추가합니다. 제약조건은 11장에서 설명합니다. UPDATE 구문을 실습할 때 이미 테이블이 만들어져 있다면 실행할 필요 없습니다.
행 삭제는 실행하기 전에 받드시 확인하는 습관을 가져야합니다. ROLLBACK 명령으로 실행 취소가 가능하지만 그럴 경우 이전 트랜잭션 완료 이후 모든 변경 내용이 취소될 수 있습니다. 잘못된 DELETE 구문은 원치 않는 데이터를 삭제할 수 있으므로 주의하세요.
104번 사원의 정보를 삭제하고 싶을땐
다른 테이블의 값을 근거로 테이블로부터 행을 삭제하기 위해 서브쿼리를 사용할 수 있습니다.
실습을 위해 DEPARTMENTS 테이블의 사본 테이블을 생성합니다.
다음 구문은 부서이름이 Shipping 이 부서의 모든 사원 정보를 삭제합니다. 서브쿼리는 shipping 부서에 대해 부서 번호를 알기 이ㅜ해서 DEPTS 테이블을 검색합니다. 그런 다음에 서브쿼리는 이 부서 번호를 근거로 하는 EMPS 테이블로부터 데이터의 행을 삭제하는 메인 쿼리로 부서 번호를 넘겨줍니다.
모든 행이 삭제되지는 않습니다. 무결성 제약조건을 위반하도록 레코드를 삭제하고자 한다면 에러가 발생 할 것입니다.
다음 구문은 실행 시 에러가 발생합니다. EMPLOYEES_ID 열은 MANAGER_ID 열에서 참조하고 있습니다.
104번 사원의 매니저는 103 사원으로 지정되어 있기 때문에 103 사원은 삭제 되지 않습니다.
회원은 아주 중요한 테이블이 있다가
가정하자, 매번 탈퇴, 수정되는 데이터를 따로 저장하는 테이블을 ㅁ나들어 놓고, 일주일 단위로 업데이트 한다.
데이터베이스에 insert 또는 UPDATE 할 때에 데이터가 존재하는지 여부를 체크를 하고 존재한면 UPDATE를 하고, 존재하지 않으면 INSERT 를 수행할 수 있게 합니다.
1. 동일한 테이블 구조를 가지고 있는 emps_it 테이블로부터 데이터를 옮기는 merge 구문
2. 다른 테이블에서 데이터를 비교하여 가져오는 것이 아니라, 직접 값을 넣고자 한다면 DUAL 을 사용할 수 있습니다.
on 뒤에 나오는 매칭 조건은 주키를 사용해야 합니다. 그렇지 않으면 입력시에 중복이 발생하여 에러가 날 수 있습니다.
사본 테이블
테이블을 생성할때도 서브쿼리 문장을 사용할수 있습니다.
사본테이블 생서엥 사용.
CTAS(Creat Table AS Select) 구문은 현재 있는 테이블 복제시 Not null 제약조건을 제외한 다른 제약조건은 복사되지 않습니다.
CREAT TABLE talbe as SELECT statment
구문에서
-as select statment: 테이블이 만들어질 서브쿼리를 입력합니다. SELECT 문장의 WHERE 절이 항상 FALSE 일 경우 데이터는 포함하지 않고 구조만 갖는 테이블을 생성합니다. 서브쿼리이지만 괄호(())를 포함하지 않습니다.
'DB' 카테고리의 다른 글
SQUENCE INDEX(순차 적으로 증가하는 값) (0) | 2022.01.05 |
---|---|
뷰(View) (0) | 2022.01.05 |
DML(DATA MANIPULATION LANGUAGE) (0) | 2022.01.04 |
서브쿼리 (0) | 2022.01.01 |
SQL-JOIN이란? (0) | 2021.12.31 |