본문 바로가기
DB/MySQL

테이블의 변경

by 가므자 2012. 3. 19.
SQL은 테이블의 내용(행)을 갱신하기 위한 다양한 명령문을 가지고 있다.
행의 삽입, 열의 값 변경, 행의 삭제 

새로운 행의 삽입

<insert statement> ::= INSERT INTO <table specification>

                           [ <column list> ]
                               VALUES ( <expression> [ {, <expression >} ..])


예제)
교수코드 "6001"과 교수이름 "대조영"을 추가하라.
mysql> insert into professor(prof_code, prof_name_
> values ('6001','대조영')


위의 예제는 INSERT 명련문에서 지정하지 않는 모든 열은 NULL 값이 삽입된다. 
NOT NULL로 지정되어 있는 열은 반드시 데이터를 입력해야한다.
 
테이블에서 테이블로 행을 복사
각 핵은 한 테이블에서 다른 테이블로 이동시키는 명령문 
한 테이블에서 다른 테이블로 복사한다.

예제)
INSERT 명령문으로 STUDENT 테이블에 등록되어 있는 전라남도 여수시(현주소 우편번호 3자리가 550으로 시작하는)의 학생에 관한 정보를 HANG 테이블에 복사
mysql> insert into hang
> (stu_no, stu_name, hyun_post_no, hyun_add, hyen_tel)
> select stu_no, stu_name, post_no, address, te
> from student
> where substring(post_no, 1, 3) ='550';


규칙
① SELECT 명령문은 새로운 행이 복사될 테이블을 참조하지 않는다.
② 여기서 사용되는 SELECT 명령문은 완전히 동일한 SELECT 명령문이다. 따라서 부속 질의어, JOIN, GROUP BY 등의 기능을 그대로 사용할 수 잇다.
③ INSERT INTO 절에 있는 열의 수는 SELECT 절에 있는 수식의 수와 동일해야한다.
④ INSERT INTO 절에 있는 열의 자료형은 SELECT 절에 있는 수식의 자료형과 일치해야 한다.

예제)
DUMMY 테이블의 구조와 동일한 PROFESSOR 테이블을 생성하라
mysql> create table professor as select * from dummy;

 
행 값의 변경
UPDATE 명령문은 테이블에 있는 값을 변경하기 위해서 사용
WHERE 절에 있는 조건이 참인지 조사한다. 만약 참이면 관련된 행의 복사가 이루어진다. 변경될 각 행에 대하여 수식이 처리된다. 이러한 계산 또는 처리는 복사본의 열에서 수행되며, 수식의 결과는 원래의 행에 기록되어 실제적인 처리가 이루어진다. 그래서 행이 처리된 후에 복사본은 자동적으로 삭제된다.

예제)
자바 프로그래밍의 생성년도를 2006년으로 갱신하라
mysql> update subject
> set create_year ='2006'
> where sub_name =' 자바프로그래밍'; 


예제)
모든 등록금 총액을 5% 증가시켜라
mysql> update fee
> set fee_total = fee_total * 1.05; 



테이블에서의 행의 삭제
DELETE 명령문은 테이블에서 행을 삭제하기 위해서 사용된다. 

예제)
mysql> delete from subject
> where sub_name= '전자상거래 실무;


→ where 절이 생략되면 지정된 테이블에 있는 모든 행이 삭제 될 것이다.
이는 DROP 명령문을 사용하여 테이블을 삭제하는 것과는 다르다. DELETE 명령문은 명령문이 수행한 후에 테이블에 관한 정보 테이블의 정의, 칼럼 내용(칼럼이름, 데이터 형, 크기, NOT NULL 유무, PRIMARY KEY), 뷰, 인덱스 등은 그대로 남아 있고 내용만 삭제하는 것이다.
DROP 명령문은 내용 뿐 아니라 테이블에 있는 모든 요소가 삭제된다.

'DB > MySQL' 카테고리의 다른 글

뷰(View)  (0) 2012.03.20
인덱스의 사용  (0) 2012.03.19
Join 명령문  (0) 2012.03.15
EXISTS 와 IN의 차이  (1) 2012.03.13
서브 쿼리  (0) 2012.03.13

댓글