이제 마지막 단계인 데이터 삭제 방법을 알아보자.

1.단일 행 삭제
delete from student
where studno=1;
studno가 1인 학생의 데이터를 삭제한다. 여기서도 update와 마찬가지로 조건식을 꼭 써줘야 한다.
안그러면 student 테이블의 정보가 모두 날아가버린다.

2.서브쿼리를 이용한 삭제
자.. 먼저 서브쿼리를 이용한 삭제는 언제 쓰는지 한번 알아보자.
'학생 테이블에서 언론정보학과에 소속된 학생을 모두 삭제하라'는 예제가 있다.
여기서 문제는 학생 테이블에는 학과번호 컬럼은 있지만, 학과명 컬럼은 없다는 것이다.
대신 확과 테이블에는 학과명과, 학과번호가 모두 존재한다. 그렇다면 방법이 떠오르지 않는가? 이럴때 서브쿼리를 이용하면 된다.
delete from student
where deptno=(select deptno
                      from department
                      where dname='언론정보학과');
자, 이렇게 하면 서브쿼리에서
department테이블의
dname이 언론정보학과인 레코드의
deptno컬럼에 저장된 값이 조회되고, 이 값이 student의 deptno 컬럼 값에 들어가게 된다.
이렇게 다른 테이블의 내용과 join해서 값을 조회할 필요가 있을 때! 서브쿼리를 사용하는 것이다.
join이 무엇인지는 다음에 또 포스팅하기로 하고 일단 여기까지!


'SQL 언어 > 데이터 조작어(DML)' 카테고리의 다른 글

COMMIT과 ROLLBACK  (0) 2012.03.08
UPDATE  (0) 2012.03.08
INSERT-②  (0) 2012.03.08
데이터입력(INSERT)-①  (0) 2012.03.08
Posted by Engineer135
,
이번에는 입력된 데이터를 수정하는 update에 대해 알아보자.

1.단일행 데이터 수정 
 update student
 set studno=7
 where name='찰스';
간단하기도 하지.
update 테이블명 set 컬럼=원하는값 where 조건식!
업데이트문에서 중요한 거은 조건문을 꼭 써야한다는 거다.
만약 조건문을 쓰지 않으면? 모든 학생의 studno컬럼의 값이 7이 되는 불상사가 일어나겠지!?
그리고 set는 여러컬럼을 ,로 구분해서 계속 쓸 수 있다.
예를 들어 set studno=7, name='버블', ~ 이런 식으로 말이지.

2.서브쿼리를 이용한 데이터 수정
update student
set (grade,deptno)=(select grade,deptno
                           from student
                           where studno=1)
where studno=2;
studno가 1인 학생의 grade와 deptno를 조회해서 studno가 2인 학생의 grade와 deptno에 반영하라는 뜻이다.
즉 2번학생의 grade,deptno를 1번학생과 동일하게 수정하라는 말이다.
참 쉽죠~?

'SQL 언어 > 데이터 조작어(DML)' 카테고리의 다른 글

COMMIT과 ROLLBACK  (0) 2012.03.08
DELETE  (0) 2012.03.08
INSERT-②  (0) 2012.03.08
데이터입력(INSERT)-①  (0) 2012.03.08
Posted by Engineer135
,

NULL의 입력

데이터를 입력하는 시점에서 해당 컬럼의 값을 모르거나 확정되지 않았을 때는 null값을 입력해야 한다.
null을 입력하는 방법에는 두가지가 있다.

1.묵시적인 방법
 insert into절에 해당 칼럼의 이름과 값을 생략
 단, 해당 칼럼에 not null제약조건이 지정된 경우에는 불가능!

 insert into department(deptno,dname)
                     values(300,'컴퓨터공학과');
이와 같은 경우 deptno,dname 칼럼을 제외한 나머지 칼럼은 자연스럽게 null이 입력된다.

2.명시적인 방법
 values 절의 칼럼 값에 null 혹은 '' 라고 쓴다.
 insert into department
 values(301,'에너지절약학과','',null);
이 경우에는 '',null로 입력한 부분이 null값을 갖는다.


'SQL 언어 > 데이터 조작어(DML)' 카테고리의 다른 글

COMMIT과 ROLLBACK  (0) 2012.03.08
DELETE  (0) 2012.03.08
UPDATE  (0) 2012.03.08
데이터입력(INSERT)-①  (0) 2012.03.08
Posted by Engineer135
,